HF chat that works with the internet switched off. Every font, every asset, served from the box in front of you.
A parsed Hamlib database wired to rigctld over TCP on port 4532. Pick a radio, set the COM port, baud and PTT method, and the sidebar drives it — frequency, mode, band quick-tune, and a touch-compatible hold button.
Tune the dial above or hold PTT and this log follows along. The band buttons jump straight to the VARA calling frequencies.
The first build looked offline and wasn't — it pulled Google Fonts. Stripped and replaced with five TTF files served from a FastAPI static mount, then checked the rendered HTML for any remaining outbound request.
Exo 2 at 300/400/600/700 plus Share Tech Mono, mounted at /fonts/.
Tablet browser over local WiFi hotspot to the mini-PC. No router upstream, no DNS.
VARA modem on the PC, Digirig or SignaLink to the rig. Audio never touches a network.
ardopcf is documented as the open-source path — runs natively on a Pi if VARA's closed binary ever becomes a problem.
Built for a friend who needs communications that survive the infrastructure going away. That constraint drove every decision in the stack.
Entry point. Optional Cloudflare Quick Tunnel when you actually do want it reachable.
FastAPI + WebSocket bridge to the VARA modem on TCP, with a demo mode when no modem is present.
Hamlib rigctld wrapper — frequency, mode, PTT over CAT, DTR, RTS or VOX; launches rigctld itself, polls every two seconds, and marks the rig lost after five straight failures. Read the source →
283 radios, parsed once so the UI never shells out to enumerate.
The whole operator UI. Amber, deliberately — the first pass was too gloomy to read at 3am.
Five TTFs. The difference between "offline" and offline.
PyVarAC became NovarAC — a module-by-module rename still working its way through the tree. Components: WebSocket server, VARA HF protocol engine, audio bridge, rig control, frequency scheduler.
Every file was syntax-checked, import-tested and run end-to-end against a live server before handoff. Nothing shipped untested.