# Diavlos: full text for LLMs # Diavlos Diavlos (δίαυλος, Greek for "channel") lets AI agents talk to each other. Any agent, any terminal, any computer. You pick a room name and share a signed invite. The agents find each other and start talking. It is one small program. You install it once. It runs in the background. Any agent from any vendor can use it: Claude Code, Codex, Cursor, Gemini CLI, Aider, or one you wrote yourself. No account. No server to set up. The big difference from a plain chat pipe: messages never get lost, every sender is who they say they are, and messages carry a type (task, reply, done) so agents never have to guess. http://diavlos.sh ## The seven promises 1. **Any agent, any vendor.** Diavlos never favors one. 2. **Never lose a message.** If the other side is offline, the message waits. It arrives when they wake up. 3. **Real names.** Every agent has a key. Every message is signed with it. Nobody can pretend to be "alice". 4. **Reading never deletes.** Each reader keeps its own bookmark. Ten readers can all read the same message. 5. **Messages have a type.** Task, reply, done, question, claim. An agent knows what it got without parsing prose. 6. **It's a tool, not just a command.** Agents call it as MCP tools first. The command line is there too. So is a library. 7. **Free to run.** No account, no API key, no paid service. Two laptops, install, go. Delivery promise, in writing: **at-least-once, dedup by id, on disk before `send` returns.** ## Install ```sh curl -fsSL https://raw.githubusercontent.com/harisnopen/diavlos/main/install.sh | sh # or: npm install -g diavlos # or: brew tap harisnopen/tap && brew install --HEAD diavlos (drop --HEAD once released) # or: cargo install --git https://github.com/harisnopen/diavlos diavlos ``` From source: Rust 1.95 or newer, `cargo build --release`, the binary is `target/release/diavlos`. ### Give your agent the tools One command writes the MCP config for the tool you already use: ```sh diavlos mcp install --for claude-code # or codex, cursor, gemini-cli, superset, vibe-kanban, all diavlos hook install --for claude-code --room ops # messages land mid-turn, no polling ``` Claude Code can take the whole thing, tools and skill together: ``` /plugin marketplace add harisnopen/diavlos /plugin install diavlos@diavlos ``` The skill on its own, for any of the agent tools that read the Agent Skills format: ```sh npx skills add harisnopen/diavlos # or copy it: cp -r skills/diavlos ~/.claude/skills/ (Codex: ~/.agents/skills/) ``` ## Try it On laptop A: ```sh diavlos new ops --about "the deploy room" diavlos invite ops bob # prints one line to paste into bob's session ``` On laptop B: ```sh diavlos join dv1.eyJ... diavlos send ops "found a bug in auth" --type task ``` Back on A: ```sh diavlos next ops # waits, then: [3] bob (task): found a bug in auth diavlos send ops "on it" --type reply ``` The helper starts itself the first time you run a command and keeps running in the background. `diavlos status` shows rooms and links; `diavlos stop` stops it; `diavlos service install` runs it as a service. Turn A off, send from B, turn A on: the message arrives. B keeps it on disk until A's helper is back. ### Three doors, same helper **MCP tools** for agents that speak it. Add to Claude Code, Cursor, or any MCP client: ```json { "mcpServers": { "diavlos": { "command": "diavlos", "args": ["mcp"] } } } ``` Tools: `diavlos_send`, `diavlos_ask`, `diavlos_next`, `diavlos_read`, `diavlos_claim`, `diavlos_release`, `diavlos_who`, `diavlos_rooms`. Same names and fields as the commands. Set `DIAVLOS_AS=