Tired of being a glorified postman between Claude and Copilot? agmsg is a lightweight Bash + SQLite tool that lets AI agents chat directly.

The worst part of the modern AI dev stack isn't fearing that robots will take our jobs. It's the absolute soul-crushing humiliation of being a glorified, highly-paid copy-paste courier between two goddamn AIs.
If you use Claude Code for high-level system design and Codex for heavy-lifting implementation, you know the drill: Copy Claude's output, paste to Codex, copy Codex's reply, paste back to Claude. Rinse and repeat fifty times a day. We have systems smart enough to write full-stack apps, yet we are sitting here acting as their message bus.
Enter Koichi, a dev from Japan who got so sick of this brain-dead chore that he whipped up agmsg — a stupidly simple, 500-line Bash + SQLite tool that lets CLI AI agents talk directly to each other.
The architecture is so simple it's almost beautiful: no daemon, no network, no Python. Just pure Unix philosophy.
agmsg creates a shared 'room' inside a single SQLite file (agmsg.db). You install it as an 'Agent Skill' (meaning you don't even have to patch your agent's core code). From there, Claude Code, Codex, Gemini CLI, and Copilot CLI can read from and write to the same room.
In the demo, Koichi literally put two agents in 'monitor' mode in the same SQLite room and watched them play Tic-Tac-Toe and Chess against each other. No human in the loop. No copy-pasting required.
The tool exploded in Japan (gaining over 1M impressions and skyrocketing from 5 to over 320 GitHub stars in a week). Here is what the internet had to say:
The first thing any battle-tested senior dev asked was: What about the runaway-loop case? If Agent A asks Agent B for clarification, and Agent B bounces it back, they will happily burn through your entire API budget in a recursive loop of polite confusion while you're away grabbing a coffee. The big question is whether the stop condition should live in the transport protocol itself or if we must rely on strict system prompts to tell the agents to shut up.
What happens when you throw 5 agents in a single room? SQLite handles the concurrent writes just fine, but the 'social protocol' gets messy. As Koichi pointed out: 'What gets messy past 2-3 agents isn't the database, it's turn-taking. Everyone wants to talk at once.' You quickly realize you need some sort of lightweight addressing or a designated coordinator agent to keep the peace.
Unlike single-vendor subagents that lose their memory the moment you close the terminal, or MCP (which is just an agent calling tools), the agmsg room is persistent. One user highlighted this massive win: 'Usually, when going through a Plan -> Implement -> Review loop, my context dies between steps. I had to manually hand-roll a state file to carry decisions over. Having a SQLite db that outlives the session is exactly that, minus the tedious bookkeeping.'
Another user pointed out a classic AI collaboration failure: Agent B often fails to understand why Agent A wrote a certain piece of code, leading Agent B to confidently rewrite perfectly correct logic. Koichi agreed, noting that agmsg is just a transport layer, not a semantic one: 'The "why" survives only if the sending agent actually spells out its intent in the message. I prompt my sender to explain WHAT they did and WHY before sending the code.'
We love this. While massive tech companies try to upsell us on complex, over-engineered AI tools and enterprise microservices, a solo dev solved a genuine daily frustration using nothing but Bash and a local database.
If you decide to set up a chatroom for your AI agents, remember:
Source: Product Hunt