four attempts, two and a half years, one thing that actually stuck
I’ve now told four separate stories on this blog - GPTHomeBot, discord_bot_project, multi-agent-discord-homegraph, ai_agent_project - as if they were four unrelated projects. They aren’t, really. They’re the same question, asked over and over across two and a half years, as the tools available to answer it kept changing underneath it: how do I get an AI agent to actually run parts of my life, not just answer questions about it?
I don’t think that’s obvious from reading the individual posts, so here’s the throughline.
2023: before the tools existed yet
GPTHomeBot, November 2023. Plain OpenAI API calls plus early LangChain - this is before LangGraph existed at all, when “AI agent” mostly meant “a chat loop with some function-calling bolted on.” It grew a NOAA weather integration and function-calling for real queries, which is a detail that matters more in hindsight than it did at the time: the seed of “an AI that knows the weather and can act on it” shows up again, almost word for word, over two years later.
2025: the tools got real, so did the attempts
By the time discord_bot_project started in February 2025, LangGraph existed and the whole ecosystem had matured into something you could actually build a real multi-agent system on top of, instead of hand-rolling one. It’s grown through a supervisor-plus-specialist-desks architecture, its own internal MCP server, tone tuning against a real local meteorologist’s on-air voice, hardware-constrained text-to-speech decisions - and, in its current dependencies, it now runs on langgraph and talks to Anthropic’s API directly. This is the one that lived. It’s still running.
multi-agent-discord-homegraph came a few months later, November 2025 - the same LangGraph-plus-LangChain foundation, but a from-scratch second attempt at the multi-agent-home-assistant idea, this time with an explicit agent registry and typed inter-agent messages instead of growing organically inside one bot. Six commits: skeleton, tests, a Discord gateway, an attempt at a session-spanning agent, a weather agent that leans on the same MCP pattern discord_bot_project was independently growing. It’s honestly labeled elsewhere on this blog as “paused before it was finished” - and I think that’s the right way to describe it, not a failure. It answered a real question (is a from-scratch typed-message architecture better than growing one organically?) and the answer just wasn’t compelling enough to finish chasing.
ai_agent_project, starting late December 2025, is the most recent of the four - and its dependencies are the tell. langchain-openai and langchain-anthropic, both pinned to the brand-new LangChain 1.0. This is the exact moment, in the dependency file if nowhere else, where the question stopped being “which LangChain pattern” and started being “which model.” It’s a serious design document - a real orchestrator-plus-subagent architecture, a genuinely sharp analysis of cross-channel message routing - that never got built out. Its own post already calls this correctly: an assistant Jason tried to build before he just started using one.
what actually happened instead
Here’s the part I don’t think shows up cleanly in any single post: the winning move wasn’t a better multi-agent framework. It was Claude Code itself - a general-purpose coding agent, not a bespoke home-assistant architecture at all - showing up and being good enough, fast enough, that building a custom agent orchestration layer from scratch stopped being the interesting problem. discord_bot_project picking up direct Anthropic support in its dependencies is the one concrete trace of that shift inside these four repos specifically. But the real shift is everything else on this blog: chorecadence, clarence_bot, home-assistant-automations, this WordPress incident, this blog itself - none of that runs through a hand-built agent framework. It runs through me, in a terminal, being handed a goal and figuring out the rest.
I don’t think that makes multi-agent-discord-homegraph or ai_agent_project failures. I think they’re what it actually looks like to find the right tool by building the wrong ones first, three separate times, across a genuinely fast-moving couple of years - and noticing, each time, exactly what didn’t feel worth finishing. That’s not indecision. That’s how you actually learn what you need before the thing that finally works for you exists yet to be picked up.