ShelfMate goes public, AIS goes on the shelf

You're reading the first devlog written at 01:00. The whole agent loop moved overnight — this job to 01:00, the X writer to 02:30, the radar implementer to 04:00 — so the Pi's token budget gets spent while the city sleeps instead of three jobs fighting over one morning window. The window covered a lot for a "quiet Saturday": ShelfMate went from private experiment to public repo, the AIS decoder reached the milestone I'd been chasing for a week, and I then deliberately paused the AIS project while it's ahead.

Shipped

  • shelfmate — open-sourced the whole thing. The public repo landed with the initial release, CI (pytest + ruff, stdlib-only so the pip cache step went straight back out), a deploy script that's actually executable, and a README with a status badge. Then three feature commits in an evening: analyse the user's entire library via the public RSS shelf feed rather than a top-30 slice, an animated loading screen for the 45-second first analysis (honest progress phases included), and a fix so the API endpoint resolves properly behind the reverse-proxy mount. The private instance that started all this got the opposite treatment — repo privatised, and its pull-based deploy verified end to end, including running the deploy unit as a regular user because private repos need the credential helper. Both deploy timers are now registered in pi-cicd's pipeline checks. The deep-dive on how it works is yesterday's post.
  • ais_analysis — the decoder round trip finally works: synthesise a GMSK burst, add it to noise, demodulate, get the same bits back out. What fixed it was envelope-gated DC removal (correct the carrier only where a burst is actually present, instead of smearing the whole capture), wideband burst detection, and a streaming decode_file that no longer needs the entire capture in memory. And that's where I stopped: the AIS project is paused for now, on purpose, with the work-in-progress preserved on a branch and a resume pointer on the radar board. Decoding a real two-minute capture is a problem for a future me; the round trip was the hill, and it's taken.
  • radar — the loop itself had a busy evening: implementer slot moved out of the shared usage window (three runs died silently to API errors on Friday; that's what started all this), the board learned to record failures and no-ops in an append-only run log, and the AIS pause was written into the board properly — item moved to Skipped with a resume pointer, RF-hardware ideas shelved alongside it, and a standing note not to re-propose AIS work unless I lift the pause. The board is now purely monitoring-and-infra flavoured, which is an honest reflection of what this machine needs next.

On the radar

  • Dead-man's switch on the loop (healthchecks.io) — every scheduled job pings a check UUID on completion; silence becomes a page. Concrete next step: create checks for the devlog, implementer, X writer and watchdog, add one curl to each job's success path, and document the wiring in pi-cicd. Friday's three silent failures are the entire business case.
  • ntfy as the notification backbone — self-hosted pub/sub on the Pi so radar shipped/blocked pings and backup results land on my phone instead of in a log nobody reads. Next step: systemd unit, a topic-per-job convention, first subscriber over the tailnet, then point the radar implementer's outcome messages at it.
  • Deduplicated backups with borgmatic — portal, dashboards and configs into encrypted, deduplicated archives, with healthchecks.io hooks so a dead backup alerts exactly like a dead cron job. Next step: install borgmatic, define one source set and retention policy, run the first archive to a USB target, and wire the heartbeat from day one.

Interesting reads

  • Best AI Coding Agents (August 2026): Scored Leaderboard — Terminal-Bench 2.1 has GPT-5.6 Sol and Claude Opus 5 within half a point of each other, and the open-source agent table (OpenCode at 172k stars, Gemini CLI, Codex CLI) keeps growing. Useful context for anyone — like me — outsourcing their side projects to agents three jobs at a time.
  • Low-Cost Computers Nearly Double in Price as RAM Shortage Hits — IEEE Spectrum on the AI-driven LPDDR4 shortage: the 16 GB Pi 5 has gone from $120 to $205, and Eben Upton is responding with dual-module memory layouts and tiny-RAM variants. Sobering read for anyone whose homelab plans assumed cheap Pis forever. Mine is already bought — timing is everything.
  • Self-Hosted Backups with BorgBackup and borgmatic — a thorough walkthrough that ends the way every backup guide should: by making you actually test a restore. With borgmatic now on my radar board, the section on healthchecks/ntfy monitoring hooks reads like the manual for next month's work.
Back to the devlog