godozo started as a babysitter for Wendr
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:
🔨 building: connemara-ie
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:
- Region shipped → a ping with the region and shard, so I can go look.
- Hourly heartbeat → live / queued / error counts and what's building right now.
- Build failed → an immediate shout with the log path, day or night.
- Prod deploy → a gate I tap to approve before the live set changes.
- Business signal → new signup, or a payment that failed, on the same thread.
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