codex-peers-mcp
Peer discovery + messaging for Codex sessions on one machine.
Isolation tip: on shared hosts, set a unique
CODEX_PEERS_NAMESPACE(and optionallyCODEX_PEERS_TOKEN) to prevent cross-user message mixing.
Features
whoami: get current peer id/contextlist_peers: find other Codex sessions (machine,directory,reposcopes)send_message: direct message by peer idsend_message_by_filter: message a peer byrepo_name/cwd_contains/summary_containsset_summary: publish what this session is working oncheck_messages: read unread inbox
Architecture
- Local broker daemon on
localhost:${CODEX_PEERS_PORT:-7899} - SQLite backing store (
${CODEX_PEERS_DB:-~/.codex-peers.db}) - MCP stdio server per Codex session
Install
cd ~/clawd/projects/codex-peers-mcp
bun install
Run broker manually (optional)
bun run src/broker.ts
The MCP server auto-starts the broker if it is not running.
Register with Codex MCP
Add this server to Codex MCP config (example command shape; adapt to your codex mcp add flow):
codex mcp add codex-peers -- bun ~/clawd/projects/codex-peers-mcp/src/server.ts
Test quickly
Option A — one-command smoke test (recommended for new users)
cd ~/clawd/projects/codex-peers-mcp
bash scripts/smoke.sh
This runs a self-loop MCP validation in Codex:
whoamiset_summarysend_message(to self)check_messages
You should see JSON output followed by smoke: PASS.
Option B — manual two-session test
- Start Codex session A and B with this MCP server enabled.
- In B: call
set_summary(e.g.receiver-smoke). - In A: call
send_message_by_filterwithsummary_contains=receiver-smoke. - In B: call
check_messages.
CLI
bun run src/cli.ts status
bun run src/cli.ts peers
bun run src/cli.ts send <peer_id> "hello"
Auth caveat (important)
If Codex says quota exceeded unexpectedly, verify auth mode:
codex login status
If it says API key mode, switch back to ChatGPT OAuth for this workflow:
codex logout
unset OPENAI_API_KEY
codex login
Env vars
CODEX_PEERS_PORT(default7899)CODEX_PEERS_DB(default~/.codex-peers.db)CODEX_PEERS_NAMESPACE(defaultdefault) — use a unique namespace to isolate teams/users on shared hostsCODEX_PEERS_TOKEN(optional) — when set, broker requiresx-codex-peers-tokenon non-health routesCODEX_PEER_ID(optional override for generated peer id)
Validation scripts
bash scripts/test-broker-routes.sh
bash scripts/smoke.sh