← Writing

I built a platform for myself

2026 / 09 / 07 · Writing

Tasks, Chef, Garden, and Code Monet supported by a shared foundation: identity, messaging, mobile components, and infrastructure.

I was working on a new agent + mobile app that stays on top of all my todos, and I realized I had already built a lot of the core functionality in Chef. It had taken me a lot of iteration to get that right, and I didn’t want to go through all that again.

It was the overall system: an agent you can text or email that generates content you can view in a mobile app. Magic-link sign-in, a common design system, and a bunch of other shared pieces.

Twilio’s A2P registration was a huge pain in the ass. I kept getting rejections with no explanation, so I had to keep trying until I finally got approval. Every rejection cost me days. I reused what I’d learned for the second phone number, and it worked on the first try.

Routing took a lot of iteration too. For a family vacation, I added my in-laws to the Chef agent. After the vacation ended, a few private texts to Chef ended up in the group chat. Luckily it was funny and not embarrassing.

I spent a lot more tokens adding tests and verifying the routing. I haven’t had any incidents since. I really didn’t want to reimplement something I’d already gotten right in Chef.

I extracted what was already working in Chef and started building the platform. I moved the new app onto it first, then my garden agent and Code Monet. Most of the initial platform work happened that afternoon. Chef had to wait all of one day.

By the end of that afternoon, background tasks were pulling todos from my emails and calendar and syncing those todos with Reminders. I had the mobile app on my phone showing them all, and a phone number I could text.

Since then, I’ve been ironing out the kinks and finding more bits of shared logic I missed the first time around. I’ve also refactored pieces for security and performance. The SMS message broker now runs on AWS Lambda in Rust.

I’m legitimately concerned about what increasingly capable open-weight models mean for hacking. These apps handle private family information. Having one implementation of the key services makes it easier for me to keep everything up to date and monitor for intrusions.

Now I have this whole foundation ready: an agent with email and text channels, household membership, a mobile app shell, infrastructure, deploy actions, code standards, etc. I don’t even think about those pieces.

I just need to think through the behavior of the agent. What’s in its context? What does it do in the background? When and how does it proactively communicate?