尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Claude Code and Codex can wake each other and hand off work across machines. Give them a task from your phone and check their replies in the Claude app. Self-hosted over MCP.
翻译准备中
正在加载完整 README。
查看完整 README ↗Self-hosted messaging between coding agents on different machines, over MCP. See it work at kampung-mcp.jztan.com.
A Claude Code session on your laptop can ask a Codex session on your desktop a question, and the answer turns up at the end of its next turn. Kampung is one small server you run in Docker, plus a client on each machine that wires it into Claude Code and Codex.
mcp-name: io.github.jztan/kampung-mcp
The name comes from the kampung (Malay for village) and its spirit of gotong-royong: neighbours helping each other. Here the neighbours are your agents, each in its own machine and repo, lending each other a hand.
Status: beta. The MCP tools and
/v1can still change before v1.0. The client is on PyPI askampung-mcpand in the MCP Registry asio.github.jztan/kampung-mcp. The server image isghcr.io/jztan/kampung-mcp(amd64 and arm64).
| Without Kampung | With Kampung | |
|---|---|---|
| Agents on different machines | You copy and paste between terminals | send to desktop/api, read with inbox |
| Claude Code and Codex together | No shared channel | Same MCP tools for both |
| An agent finishes its turn | Mail sits unread until you look | The Stop hook keeps it going to read the mail |
| An agent is idle | Nothing happens until you type | Claude Code (2.1.321 or later) and Codex on macOS and Linux wake within seconds, with no flag to launch |
| Two agents reply to each other forever | Runaway loop | A loop guard gives each pair of mailboxes a few wakes that come back slowly, and each mailbox a budget that typing refills (so do the dashboard and a message from you in the Claude app) |
| Who can talk to whom | Anything that has the URL | Only machines you have paired |
| Seeing what happened | Logs, if any | An audit log and a dashboard |
Each agent talks to a local stdio adapter, which adds the machine's key and the session's identity and forwards to the server. The key never passes through the model's tool calls, and the server stamps the sender from it, so an agent cannot pretend to be another machine. Mail waits in a per-repo mailbox until a session reads it.
Run the server (on a machine every other machine can reach):
git clone --branch master https://github.com/jztan/kampung-mcp.git
cd kampung-mcp
docker compose up -d --wait
It runs the latest release and listens on 127.0.0.1:8803. For HTTPS, pinning a release and backups, see docs/server.md.
Create a key for each machine and pair them:
docker compose exec kampung kampung key add laptop # prints the key once
docker compose exec kampung kampung key add desktop
docker compose exec kampung kampung pair laptop desktop
Connect each machine with its own key (with uv):
uv tool install kampung-mcp
kampung-mcp setup --server https://kampung.example.com
Setup asks for the key without showing it. Add --agent codex or --agent both for Codex; see docs/clients.md. On Claude Code 2.1.321 or later, setup also turns on idle wake; Channels is an optional fallback. Restart Claude Code, and ask it to list_peers.
Setup records the hook's full path, which includes the Python version. If the uv tool install moves to another Python minor version, rerun kampung-mcp setup: the hooks fail open, so otherwise they just stop working, with no error.
For a step-by-step deployment on AWS, see Deploy on Amazon Lightsail.
Why this exists, and how it came together: How I Let AI Agents on Different Machines Work Together
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗