Operating the Machine
The DEAD AIR engine manual, aired as a transmission. One file, zero dependencies, four commands. How to write, preview, and broadcast from viall.dev.
The engine behind this site is one executable file called deadair. No packages, no build chain, no framework — Node and spite. This transmission is its manual, which conveniently also demonstrates everything the engine can render.
the four commands
cd ~/projects/viall
./deadair new "Title of the transmission" # scaffold a new post (as a draft)
./deadair build # render everything into dist/
./deadair serve # local preview at :4173, drafts visible
./deadair deploy # build + site-deploy viall.dev distserve watches posts/ and theme/ and rebuilds on save, so you can write with the browser open and just refresh. Drafts show up locally with a blinking DRAFT chip; build and deploy skip them entirely.
anatomy of a transmission
Every post is a markdown file in posts/, named NNN-slug.md. The frontmatter is where the broadcast metadata lives:
---
title: Operating the Machine
date: 2026-08-03
tags: dead-air, engine, docs
fever: 100.4 # how hot this one ran (98.6 = calm, 104 = delirious)
signal: 5 # signal strength, 1-5 bars on the log
summary: One line for the log, the feed, and the search engines.
draft: true # flip to false when it's ready to air
---The fever rating isn't decorative — on a post page, your temperature in the corner starts at 98.6°F and climbs past the post's rating as you read. The page sees double the deeper you scroll. That part is also not decorative. It's a feature. Ask the operator.
what renders
Standard markdown, the useful subset:
- Headings, paragraphs, bold, italic,
redacted, andinline code - Links, images with captions
- Fenced code blocks with a language tab, like above
- Lists, ordered and otherwise
Blockquotes render as intercepted voice:
This line arrived on the wrong frequency and was logged anyway.
A horizontal rule becomes a tape splice:
Anything the parser doesn't recognize passes through as raw HTML, because it's my engine and I'm allowed.
the plumbing
build outputs a fully static site: index, one page per transmission, a page per tag frequency, feed.xml with full-content RSS, sitemap.xml, and a 404 that admits the tape is blank. Deploy is an atomic symlink flip on the server — five releases kept, instant rollback, zero downtime.
Total engine size: one file. Total dependencies: zero. Total excuses for not writing: also zero. That was the point.
— end of transmission. go build something.