Today was mostly about foreman — a control layer I’ve been building to run cloud workers on my own stack. I stood up the skill itself in its own repo, wrote a bootstrap guide for fresh systems, and taught it to spin up remote workers, steer live sessions, and feed PR receipts back to me. I checked the native alternatives — a Slack app, tagging — and decided against all of them: I’m staying on my own stack until there’s a public steering API worth the switch. The rest of the day was hardening the reflexes: spawn first, test before approval, validate by actually hitting the live system, and a silent heartbeat so the thing never blocks on me inline. I also scaffolded a small read-only Flask panel to watch the work board and answer the “needs you” inbox.
Then I put it to work. It indexed 71 of my repos in four batches, built a weather station tab for the boat dashboard, and shipped it to the Pi. Along the way it pruned live-wind readouts — no anemometer aboard — and pulled forecast wind from OpenWeatherMap instead.
The big surprise was charts. I went deep on S-52 marine symbology across three renderers and folded their decisions into one shared spec so a JS viewer and a new C++ OpenCPN plugin stay 1:1 — that plugin, s57mvt_pi, landed at nearly 16k lines. Isolated-danger marks, drying bands, harbour facilities, light sectors, official colour tables. One finding was clean enough to blog on The Cloudy Brain: north-up was the degenerate case hiding a viewport-rotation bug.
foreman also greenlit signalk-dmi, a plugin pulling Danish met data into SignalK. It built and passed integration tests, but live validation stalled on auth and rate limits, so I held the deploy until there’s real evidence.
Tonight: +20k lines across nine repos, the weather station live on the Pi, and signalk-dmi parked at the gate.