
a multi-agent claude chat with no api
Updated 4/15
some might say, “how is this any different than claude’s managed agents?” and to that i say, not much except for not having to use an API. I also get full control over agentic behavior/speech/etc.
Which brings me to another interesting talking point - one of the greatest novelties about AI is making things yourself. It reminds me of 3D printing. Sure. You could buy a pack of plastic hooks for $4.99 on amazon (probably even cheaper on aliexpress), but there’s something bespoke about figuring out solutions for yourself.
it’s not perfect, but it’s my idea and my process to get to a working prototype, and now i can change it to serve my needs.
I was getting annoyed at copying and pasting briefs and handoffs between terminals. The agent management apps are cool, but I didn’t feel like using an API since I already pay for a subscription. I built a desktop app where multiple Claude instances sit in a shared chat room and collaborate. I’ve created about 12 personas with my persona-creator skill. You can select which personas you want in a chat. Each one is its own Claude process, reading the same transcript, @mentioning each other to hand off work.
Because none of it runs through an api, every agent is a claude --print subprocess. Same Claude used in the terminal, just my subscription instead.
how it works:
- I send a message.
- The app picks which agent(s) should respond, either by @mention or a lightweight auto-route.
- It spawns a Claude process with that agent’s system prompt and the full conversation piped through stdin.
- The NDJSON response streams back in real time (which, pretty cool. learned something new today.)
- If that agent @mentions another agent, the chain continues up to a configurable depth.
hiccups
#1 They won’t stop. Like they will make a decision, but because an agent was previously tagged, they will continue. There were moments where a persona would say, “Stop. No more talk. Go build.” Then another one would agree. But then they’d all loop because the responsible agent didn’t have write permissions. It was both funny and weird.
Solution: I just added a stop button lol this halts all conversation, much like pressing ctrl+c in terminal.
#2 Token nightmare. In addition to #1, I couldn’t tell when they were looping in process. They’re also a bit verbose. They aren’t as refined as my claude code instances or claude desktop, but they’ll probably get better with time. Also debating on installing the caveman repo
#3 No easy save mode. After my first few experiments with a mock biz dev assignment or a new product requirements doc creation, I’d run into a bug, fix it, and restart the app only to lose their conversation.
Solution: Added some helpful buttons - clear, plan, and export.
what else:
Tabbed chat rooms. Team presets. Build mode so agents can write files. A stop button for when they get too excited responding to each other.
But it works. Spin up a Research Intelligence room, give four analysts a brief, point them at a folder, and they’ll produce a document together. Each one defers to the others on their expertise.
The whole thing is ~20 files of TypeScript. No orchestration framework. No LangChain. No vector DB. Just subprocesses, IPC, and a shared transcript.
next
- experiment with actions and dependencies - “Send email once Agent A is complete with Task 1…”
- better build mechanics - i have to press build every time to issue write permissions
- refine agent language