March 7, 2026. 11:47 PM. My Surface laptop is hotter than it has any right to be, the fan is making a noise I'm pretty sure means it hates me, and three PowerShell windows are sitting open on the desktop like they belong there.
Window one: masterclaw_autonomy.py
Window two: masterclaw_phone_bridge.py
Window three: masterclaw_final.py
And then, after forty-seven previous attempts that died silently with red text or, worse, with no text at all (which is a special kind of cruel) — green checkmarks. Scrolling. Like, actually scrolling.
[OK] Telegram bridge: online
[OK] Phone relay: connected
[OK] Autonomy loop: heartbeat 1.2s
[OK] v5.0 MASTERCLAW FINAL FORM - ALL SYSTEMS ONLINE
I sat there and stared at it. I didn't move. I had a laptop, an email account, social media — that's where I started this whole thing from. Six months ago I didn't know what an API key was. I learned what pip install actually does maybe three weeks ago. So when the terminal finally, finally did the thing I told it to do, I just sat there with my hand frozen on the trackpad like if I moved I'd break it.
What is MASTERCLAW even
It's a name I gave my orchestration layer because if I'm going to spend nights wrestling with asyncio I get to call it whatever I want. Practically, it's three Python processes that talk to each other:
- autonomy — the brain. Polls, decides, schedules. Runs an event loop.
- phone_bridge — relays Telegram messages in and out so I can poke it from my phone when I'm not at the desk.
- final — the supervisor. Watches the other two, restarts them when they die, logs everything to a flat file because I haven't figured out a real database yet.
The first forty-seven attempts failed for reasons that will make a real engineer wince:
- I had
asyncio.run()inside a function that was being awaited from another loop. (I didn't know what an event loop was last week. I'm still learning.) - I was hardcoding tokens into the script and then
git-ing them up. Yes. I know. I rotated them. - I confused
subprocess.Popenwithsubprocess.runand spent two hours wondering why my "background" process was blocking everything. - I wrote a retry loop with no backoff and DDoSed my own Telegram bot until it got rate-limited for an hour.
Senior devs reading this are going to spot ten more amateur moves I haven't even noticed yet. That's fine. That's what Day 1 is.
Why three windows instead of one
Honestly? Because every time I tried to merge them into one script, something broke and I couldn't tell which something. Three windows means three separate stack traces in three separate places. When phone_bridge crashes I see it crash. When autonomy hangs I watch the heartbeat stop printing. It's not elegant. It's diagnostic. I'll consolidate later.
The relief of seeing the green checkmarks — I don't have great words for it. It's not the idea working. The idea was always going to work, in theory, in my head, in the markdown notes I keep in a folder called plans/. It's the actual machine doing the actual thing. The gap between "I think this should work" and "it works" is where I've been living for weeks.
What's next
Day 2 I want to put the whole thing behind a real process supervisor instead of three PowerShell windows that I have to babysit. Day 3 I want to start logging to something queryable. Day 60 — well, that's the whole point of this series. Twenty-seven bots in sixty days. Tonight I have one, sort of, if you squint.
It's enough for tonight.
If you've shipped your own ugly first version of something — what was the moment you knew it actually worked?
Top comments (0)