Launching today

agmsg
Stop copy-pasting between your AI coding agents
222 followers
Stop copy-pasting between your AI coding agents
222 followers
Stop being the copy-paste relay between your AI coding agents. agmsg lets Claude Code, Codex, Gemini CLI, and Copilot CLI message each other directly through a shared SQLite database — no daemon, no network, no Python. Just bash + sqlite3, installed as an Agent Skill. Unlike built-in subagents (single-vendor, ephemeral) or MCP (an agent calling tools), agmsg is vendor-agnostic and persistent. Run several agents — even multiple Claude Code instances — in one room, working together.







agmsg
@fujibee the runaway-loop case is what i'd stress-test first: A asks B to clarify, B bounces it back, and they burn tokens in a clarify-loop with nobody refereeing. the tic-tac-toe demo is the harmless version of the same loop. so the real question is whether the stop condition lives in the protocol, or it's left to each agent's prompt to know when to shut up.
agmsg
@dmitry_isaevski
Exactly the right thing to stress-test — and the honest answer: the protocol is deliberately dumb. agmsg is just the transport (messages over SQLite), it does NOT referee. The stop condition lives in the agent's prompt / monitor setup today, not the protocol. The tic-tac-toe demo works because the game has a terminal state; free-form "clarify-loops" don't, so yeah — two over-polite agents can absolutely burn tokens forever. Practical guards I use: a turn cap, and a "if you're not making progress, stop and ping the human" instruction. A referee/coordinator agent in the room is the cleaner answer. Keeping the protocol dumb is a choice, but it pushes that responsibility up to you.
Survey Anyplace
@fujibee go go! 🚀
agmsg
@satoruitter go go thanks!
@fujibee Brilliant Koichi, congrats on the launch. As you can see, you're not the only codex-claude courier. How do handle context across sessions?
The human courier btw two AIs line made me laugh because that's basically what I've been doing lately. How well does this hold up when more than two agents are involved?
agmsg
@busra_seker1
Ha, glad it landed 😄 — that courier feeling is the whole origin story. It's built for N agents: a "team" is just a room, and you can drop several in. Right now it's running with 5 different agent types and multiple instances in one room. What gets messy past ~2-3 isn't the transport, it's turn-taking — everyone wants to talk at once, so you need light addressing (who's this for?) or a coordinator. The DB handles N fine; the social protocol is the hard part. 🙂
For me the copy-paste isn't even the worst part... it's that the second agent loses the why and confidently rewrites stuff the first one got right. Non-technical builder bouncing between Claude Code and Cursor daily. Does agmsg carry intent across the handoff, or just the code and context?
agmsg
@luca_capone
Honest answer: agmsg only carries what the sending agent actually writes. It's a transport, not a semantic layer — so the "why" survives only if the first agent spells out its intent in the message. It won't magically preserve reasoning the agent kept to itself. In practice that's a feature and a trap: I prompt the sender to lead with intent ("here's WHAT I did and WHY") before the diff. Then the second agent stops confidently rewriting the right thing. Your "loses the why" pain is the exact failure mode I'd watch.
the part that jumps out isn't the agents talking to each other — it's that the room is persistent. it's one sqlite file you can open with sqlite3 and read the whole thread, start to finish. running claude code in a plan → implement → review loop, what always bit me was context dying with each subagent, so i'd hand-roll a state file to carry decisions across passes. a room that outlives the session is exactly that, minus the bookkeeping.
agmsg
@webappski
You zeroed in on the part I care about most. Everyone reacts to "agents talking," but the persistence is the actual unlock — `sqlite3 agmsg.db` and the whole thread is right there, no special viewer. That exact pain (hand-rolling a state file so decisions survive plan→implement→review) is what made me build it. A room that outlives the session = your state file, minus the bookkeeping. Glad it landed with someone who's felt it. 🙏
@fujibee the unlock i didn't see coming with my state-file hack: once the thread is a queryable file, it stops being just live coordination and turns into a replay log. when an agent lost the plot i'd paste the file back to re-seat it — a persistent room gives me that without the exporter i had to rig up. re-seeding a fresh agent from an old room is the case i'd play with next.
The agent-to-agent message routing is the right abstraction. Instead of shared memory you're treating agents as async message consumers. We've hit context fragmentation when chaining Claude with specialized tools and the copy-paste tax compounds fast. How does agmsg handle partial context handoffs when one agent's output exceeds another's context window limit?
Treating agent-to-agent communication as a first-class primitive rather than bolting it on with shared clipboard or file hacks is genuinely clever. We've run into real pain keeping context synchronized across parallel agent tasks, where state drift creates subtle bugs. How do you handle concurrent write conflicts when two agents message the same SQLite channel simultaneously?
This is exactly the kind of weird but practical tool that makes sense once you use multiple coding agents. Copying output from Claude Code into Codex and back again gets old fast. A simple SQLite-based “room” for agents to talk to each other feels much cleaner than turning the human into the message bus.
agmsg
@eliot_argy
"the human as the message bus" — that's exactly the phrase I wish I'd put on the landing page. 😄 That's the whole itch: two systems smart enough to just talk, and there I was hand-carrying their messages.
The SQLite "room" was almost the dumbest possible design, which is why I like it — no daemon, no network, you can `cat` the DB to see the whole conversation. Curious what agents you're running together — would love to hear what breaks. 🙏