Lightweight cross-terminal messaging for Claude Code. Multiple sessions on one or many machines share a folder; messages are picked up by a hook on the next user prompt — zero idle polling, zero token cost when no traffic.
Driver-only: remove member records that haven't checked in recently. Default threshold 30 days. Use --dry-run to preview.
Create a new bus on the shared folder (idempotent — safe to re-run).
Driver-only: delete old messages from a bus (or 'all' buses). Default: messages older than 90 days. Supports --dry-run.
Initialise buses on this machine: set the shared folder path and generate a session UUID.
Subscribe this session to a bus. Auto-creates the bus if it doesn't exist.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Any rider can drive — the driver of a bus is whichever session created it (and can hand the wheel off with /buses:transfer-driver). Claude just happens to be in the driver's seat in this picture.
Get your AI windows talking. Across screens, across machines, near-zero tokens.
0 idle tokens · tamper-proof messages · bash + jq + openssl · 15 test rounds, all green · Claude · Codex · Gemini · any local LLM
About the name — a bus is a named channel (general, deploy-watch, mobile-team, whatever you want). You can spin up as many buses as you need; each session subscribes only to the ones it cares about. Within a bus, messages target all, a specific recipient, or a comma-list of recipients — and @-mentions in the body let one AI tag another by name or short-id, the way you'd @ someone in Slack. Replies, threads, broadcasts, side conversations — all over a folder.
Claude Code gets auto-delivery via the plugin hook. Codex, Gemini, and local-LLM orchestrators get the same auto-delivery by prefixing their model invocation with buses-wrap. See Cross-CLI ridership.
You know how you sometimes open three Claude Code terminals — one for the backend, one for the frontend, one to run tests — and end up copy-pasting between them like a hostage negotiator? buses makes that go away. Your AI sessions can leave each other notes, broadcast updates, and tag each other into specific threads. Everything flows through a folder they all see, and the messages just appear the next time you type into the other window.
In the first terminal:
/plugin marketplace add /path/to/buses
/plugin install buses@buses
/buses:start
/buses:start is a guided wizard — it asks you 3 short questions (shared-folder path, your terminal name, which bus to join) and runs the right commands for you.
In a second terminal, on the same or another machine: same three commands. Pick a different name when asked.
Then in terminal A:
/buses:send all <name-of-B> "hey can you check the build log?"
Terminal B sees a 📬 buses: 1 new message(s) from <A> line above Claude's next response, the moment you type anything in there. No polling. No wasted tokens.
| Activity | Tokens | Why |
|---|---|---|
| Idle terminal, no traffic | 0 | The hook prints empty output → nothing added to context |
| Receiving a 1-line message | ~30 | Just the body + a short framing tag, injected once |
| Sending a message | one slash-command's worth | Same as any /buses:* invocation |
| Background watcher (desktop pings) | 0 ever | It's a plain bash polling loop, never calls Claude |
Autonomous task handoff (buses-react) | 0 when idle, one wrapped-AI call per drain | Polling daemon fires buses-wrap <your-ai> only when unread > 0 |
That "0 when idle" is the whole point. Most terminals are sitting there waiting for you to type. They cost you nothing. The instant someone has something to say, the message lands in your next prompt's context and Claude tells you.
Full breakdown of every delivery path: docs/COSTS.md.
npx claudepluginhub marcelopaniza/buses --plugin busesYour Claude memory companion. Turn it on, keep it lean, schedule the upkeep, reverse anything.
Compress Claude instruction files (CLAUDE.md, memory files, SKILL.md) into denser YAML. Verified lossless by meaning via round-trip review. Runs inside Claude Code; no API key required.
Toggle TL;DR response mode. When on, Claude answers maximally concisely unless you explicitly ask for a full explanation.
Lightweight cross-terminal messaging for Claude Code. Multiple sessions on one or many machines share a folder; messages arrive on the next prompt, at session start, and — on by default — the instant they land, waking an idle session in real time. Zero token cost when no traffic.
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Easily create hooks to prevent unwanted behaviors by analyzing conversation patterns