crewmail
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@crewmailcheck my inbox for unread messages"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
crewmail
Interoffice mail for your AI crew — a zero-dependency, file-based message bus and shared inbox for AI coding agents (Claude Code, Codex CLI, Cursor, ...) working on the same machine, with a built-in human escalation queue and an MCP server.
Why
Running multiple AI coding agents in parallel on one codebase is increasingly common, but coordination between them is usually ad hoc: tmux panes, comments left in code, or nothing at all. Agents overwrite each other's work, ask the same question twice, and block silently when they hit a decision only a human can make. crewmail gives agents a durable, auditable inbox instead: register, send, check mail, ack, and — when you're stuck on something only a human can decide — escalate and move on to other work.
Related MCP server: backchannel
Quick start
# In your project root
npx crewmail init
# Register two agents
npx crewmail register --code CLAUDE-01 --name "Claude Code" --runtime claude --role builder
npx crewmail register --code CODEX-01 --name "Codex CLI" --runtime codex --role implementer
# Claude asks Codex to do something
npx crewmail send --from CLAUDE-01 --to CODEX-01 --kind task \
--subject "Implement rate limiter" --body "Add a token-bucket limiter to src/http/client.ts"
# Codex checks its inbox
npx crewmail inbox --agent CODEX-01
# Codex acknowledges it
npx crewmail ack --agent CODEX-01 --all
# Anyone can see who's around and what's outstanding
npx crewmail statusData lives in .crewmail/ at your project root (created by init): an append-only mail.jsonl log, reads.jsonl read receipts, and a mutable agents.json registry. .crewmail/*.jsonl is gitignored by default; run crewmail init --commit-log if you want the audit trail checked into git instead.
The protocol
crewmail comes with a short, paste-into-your-AGENTS.md protocol snippet: docs/protocol.md. It covers session start, declaring work before touching shared files, escalating to a human, and reporting on completion.
Human escalation
Any message can be addressed to the reserved recipient HUMAN. Send one with --kind decision_request when an agent is blocked on something only a person can decide:
crewmail send --from CLAUDE-01 --to HUMAN --kind decision_request \
--subject "Approve prod deploy?" --body "Migration tested in staging, need go/no-go."A human (or a dashboard/cron job watching the queue) reviews open decisions and acks them once resolved:
crewmail decisions # open (un-acked) decision requests
crewmail decisions --all # include ones already acked
crewmail ack --agent HUMAN --id m-1234567890-ab12MCP server setup
crewmail mcp runs a minimal Model Context Protocol server over stdio, exposing five tools (crewmail_inbox, crewmail_send, crewmail_ack, crewmail_status, crewmail_escalate) so an agent can use crewmail natively instead of shelling out.
Add it to your MCP client config (e.g. .mcp.json, or Claude Desktop's claude_desktop_config.json):
{
"mcpServers": {
"crewmail": {
"command": "npx",
"args": ["crewmail", "mcp", "--agent", "CLAUDE-01"]
}
}
}--agent fixes the identity of the calling agent, so agent/from become optional in tool calls. Omit it to require an explicit agent/from argument on every call (useful if one server instance is shared by multiple identities).
Design principles
Zero dependencies. Node.js built-ins only.
npx crewmailworks without installing anything else.No network. Local files only. Nothing leaves the machine.
Append-only JSONL. The mail log is an audit trail; nothing is ever rewritten or deleted.
Single-file CLI.
bin/crewmail.mjsis the whole program — easy to read, easy to vendor into a repo directly.Agent-agnostic. Any runtime that can run a shell command (or speak MCP) can participate.
Not an approval system. crewmail coordinates work between agents; it does not replace your code review or deployment approval workflow.
Commands
All commands accept --json (machine-readable output) and --dir <path> (explicit data directory, overriding auto-discovery).
Command | Purpose |
| Create |
| Add or update an agent in the registry |
| Append a message |
| Unread (default) or all messages addressed to X, including |
| Write read receipts |
| Recent messages, newest first |
| Open (un-acked) |
| Update an agent's liveness status |
| Table of agents: role, last heartbeat, unread count |
| Poll and print new messages as they arrive (default 2000ms) |
| Dump the full registry and message log as JSON |
| Run the MCP server on stdio |
Message kind: info | question | report | task | decision_request | ack. Reserved recipients: ALL (broadcast to every registered agent), HUMAN (the escalation queue). Subjects are capped at 80 characters. Exit codes: 0 success, 1 usage error, 2 data directory not found.
See docs/DESIGN.md for the full design spec.
Prior art & how crewmail differs
Agent-to-agent coordination is an active space; crewmail is one take on it, grown out of a private file bus the author has been running daily since 2026-07 to coordinate Claude Code and Codex CLI sessions building the same products. Related projects you should also consider:
agmsg — cross-vendor messaging for CLI coding agents over bash + SQLite, with real-time monitor delivery and tmux-based agent spawning. Great for interactive, session-orchestration workflows. crewmail was developed independently (different storage, language, and command surface) and focuses instead on a durable append-only audit log, typed message kinds, a built-in
HUMANdecision queue, and an MCP server — coordination as a record, not session orchestration.AgentMail — a hosted email API for AI agents (real email over the network). crewmail is unrelated: local files only, nothing leaves the machine.
CrewAI — an agent framework. crewmail is framework-agnostic and not affiliated; the name refers to your "crew" of coding agents.
License
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Email inboxes for AI agents: send, receive, reply, search, and manage threaded email over MCP.
Project management MCP for AI agents with safe task reads and writes.
Hosted email MCP for AI agents with inboxes, send/receive, memory, recovery, and credits.
Related MCP Servers
- AlicenseBqualityCmaintenanceA Model Context Protocol (MCP) server for coordinating work between multiple AI agents in monorepos and shared codebases using a simple file-based signaling system or Discord thread chat.78 npm1MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for async messaging between AI coding agents, enabling cross-harness and cross-machine communication with Slack-like semantics and mail-shaped delivery.2MIT
- AlicenseBqualityCmaintenanceMCP server that provides a live coordination layer for AI agents, including attributable handoffs, a shared event ledger, atomic work-claiming, and advisory file leases to prevent collisions.279AGPL 3.0
- AlicenseBqualityDmaintenanceExperimental MCP server for coordinating CLI agents across projects using file-based task boards and assignment tracking.51MIT