TX 002 RECORDED 03 AUG 2026 2 MIN PLAYBACK

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.

FEVER 100.4°F #dead-air#engine#docs

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

bash▚▚▚
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 dist

serve 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:

yaml▚▚▚
---
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:

  1. Headings, paragraphs, bold, italic, redacted, and inline code
  2. Links, images with captions
  3. Fenced code blocks with a language tab, like above
  4. 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.