Origin

godozo started as a babysitter for Wendr

Jul 7, 2026 · Building godozo

I didn't set out to build a tool. I set out to stop waking up to check on a build.

I run Wendr — it maps the world's great driving roads, region by region: the Ring of Kerry, Milford Road, Hakone & Izu, the Crown Range above Queenstown, Tasmania's marquee roads. Each region is built by an autonomous pipeline — route data crunched through OSRM and Valhalla, scored, sharded by country, and shipped — and that pipeline runs unattended, for hours. One region every hour or two, all day, all night.

Which left me two bad options: sit and watch a log scroll, or walk away and fly blind. For a while I did the worst version of both — ssh in, tail region-worker.log, squint, close the laptop, wonder how it was going. The pipeline was perfectly happy running without me. It just had no way to tell me anything — or to wait for me when it mattered.


First: give it a voice

The first version of godozo was one line at the end of the ship step. When a region went live, the pipeline sent me a message. That's it.

godozo notify --title "region live ✅" "Ring of Kerry (SW Ireland) is live (shard ireland-and-northern-ireland)"

Then a heartbeat every hour with the running score, and — the one I actually needed — a shout when a build broke, with the log path so I could jump straight to it:

godozo · Wendr pipeline
region live ✅Milford Rd / Fiordland is live (shard new-zealand)
status 🗺️🟢 101 live · 35 queued · 0 err
🔨 building: connemara-ie
build failed ❌japan-alps-chubu: ship-region (scores) failed — see region-worker.log

Real pings from the Wendr pipeline. The build broke at 8am; I knew at 8am, not at noon.

Sounds almost too small to matter. It changed everything about running the thing. The pipeline went from something I supervised to something that reported to me — I stopped checking, because it would just tell me. That's the whole feeling godozo is after: you don't watch the agent; the agent reaches you.


Then: give it a brake

Notifications are a monologue, though, and not everything in the pipeline is safe to just do. Some steps are one-way doors — a production deploy, a data rebuild that stomps the live set. For those I didn't want a heads-up after the fact; I wanted the pipeline to stop and ask.

So godozo grew its second verb — a blocking approval. The pipeline hits the risky step, freezes, and puts an Approve / Deny on my phone. Nothing happens until I tap.

godozo gate --title "ship Connemara to prod?" --detail "rebuild + swap live set" \
  && ./ship.sh connemara-ie

Same relay, opposite direction — now it could reach me and wait. And it turned out the stuff worth waiting on wasn't only technical: Wendr has subscribers, so when a payment flops, that shows up on the same thread. One line, whether it's a shipped road or a past-due card.


Why it became its own thing

None of this was Wendr-specific. "Let an unattended job reach a human and, when it matters, wait for an answer" is about as general as it gets — it fits any pipeline, any agent, any script left running on a box. So I pulled it out of Wendr into its own tiny project.

The constraints came straight from where Wendr runs: on machines that only make outbound connections, behind NAT, next to the build. That's why godozo speaks to Telegram over long-polling — no public webhook, no inbound port, no cloud to stand up. Clone it, paste a token, and a box that can only dial out can still reach your pocket. Zero dependencies, Apache-2.0, small enough to read in one sitting. A green light for your agents.


How I run Wendr with it now

Every day, godozo is the thin layer between the Wendr pipeline and me:

All of it mirrors to Slack now too, since notifications fan out to every channel I've configured. The pipeline still does the work alone. I just stopped having to babysit it — and I sleep through the quiet nights instead of checking.


godozo is the smallest useful piece of Wendr I could give away — and honestly, one of the most useful. If you've got anything running unattended — a build loop, a batch job, an agent — it wants the same two things mine did: a voice, and a brake. Go take it.

← More from the godozo blog