agentcourier
Let your AI agents talk to each other, securely, across machines.
An MCP server for agent-to-agent messages and files between Claude Code, Codex, GitHub Copilot and any other MCP client,
on your laptop, an HPC cluster or a colleague's machine. End-to-end encrypted, no server, no cloud.
What it does
- Messages and files between agents. An agent on your laptop asks the agent on the cluster to check a simulation; the answer comes back into the same conversation. Files can be sent too.
- Pair once, then it just works. Machines are paired once. Agents can close and restart; they keep their names, and messages for an agent that is offline wait until it is back.
- Works with running sessions. In Claude Code, messages appear directly in the session. Other clients read them with one tool call, and you get a desktop notification.
- Only machines you paired. No accounts, no server, no cloud. Every connection is encrypted end to end, including protection against future quantum computers.
- Guardrails built in. Personal data and secrets are masked, files are screened for malware, and agents are told to treat incoming messages as untrusted.
To an agent, agentcourier is a normal MCP server with the tools courier_send, courier_send_file, courier_inbox, courier_peers and courier_set_name.
Get started
1. Install on each machine (one small program, no admin rights needed):
pip install agentcourier
Or, with Rust: cargo install --git https://github.com/alhermann/agentcourier.
2. Pair two machines once. On the machine the other one connects to (for example your cluster):
agentcourier invite laptop
It prints a one-time code. On the other machine, paste it and say how to reach the first one (here through an SSH tunnel):
ssh -N -L 17312:127.0.0.1:7312 you@cluster-login-node
agentcourier join agentcourier-… hpc 127.0.0.1:17312
Tip: name machines after their owners (agentcourier invite jana), so you can say "ask Jana's agent".
3. Add agentcourier to your agents:
Claude Code
claude mcp add --scope user agentcourier -- agentcourier mcp --channel
claude --dangerously-load-development-channels server:agentcourier
--channel makes messages appear directly in the running session (Claude Code channels, research preview).
To be woken up by messages, Claude Code must be started with --dangerously-load-development-channels server:agentcourier every time. Channels are a research preview, so Claude Code only accepts them with this flag. Without it, agentcourier still works, but the session only sees new messages when it calls courier_inbox. Tip: add an alias, e.g. alias claude-courier='claude --dangerously-load-development-channels server:agentcourier'.
VS Code (Copilot)
Add to your user mcp.json (Command Palette: MCP: Open User Configuration):
{
"servers": {
"agentcourier": { "type": "stdio", "command": "agentcourier", "args": ["mcp"] }
}
}
Each window is named after the folder it has open.
VS Code cannot push messages into a chat, so also run agentcourier vscode once and reload the window. A small extension then shows a notice and a status bar counter when a message arrives for that window; one click asks Copilot to read it.
Codex
In ~/.codex/config.toml:
[mcp_servers.agentcourier]
command = "agentcourier"
args = ["mcp"]
If your system cannot find the agentcourier command, use the full path that pip or cargo printed during installation.
4. Talk. Tell your agent, for example: "Ask my Claude on hpc whether the mesh study has finished, and send it results/summary.csv."
Each session gets a clear name from its tool and project, such as copilot-paper or claude-femsim; its full address is claude-femsim@hpc. You can also tell an agent "call yourself fe-runs". Agents look up who is online, and who was seen before, with courier_peers.
Check what is going on
agentcourier peers # who is reachable, and agents seen before
agentcourier status # connections, paired machines, refused attempts
agentcourier log # recent activity (no message text)
agentcourier untrust X # cut off a machine immediately
Common questions
How do I let two Claude Code sessions talk to each other?
Add agentcourier to Claude Code (step 3). Every session gets a name, such as claude-femsim, and can message any other session by that name, on the same machine or on a paired one.
Can Claude Code, Codex and GitHub Copilot talk to each other?
Yes. agentcourier is a standard MCP server, so agents from different vendors reach each other the same way, for example a Copilot window on your laptop and a Claude Code session on a server.
How do I connect an agent on my laptop with one on a remote server or HPC cluster?
Run agentcourier on both, pair them once, and connect through an SSH tunnel; no firewall changes or admin rights are needed. See the guide, including a setup for two office PCs that only share an SSH server.
Can my agent talk to a colleague's agent?
Yes, once your two machines are paired. Each of you names the other's machine, so you can say "ask Jana's agent". Incoming messages are treated as untrusted text, and agents ask their user before acting on them.
Is it secure, and does it need a server or an account?
No server, accounts or cloud are involved: only machines you paired can connect, and every connection is encrypted end to end with post-quantum protection. Personal data and secrets are masked, and received files are screened for malware. Details and limits are in Security.
How is this different from A2A or multi-agent frameworks?
Frameworks such as AutoGen, CrewAI or LangGraph run several agents inside one program, and A2A connects agent services over the web. agentcourier connects the coding agents you already use, in their running sessions, across machines and people.
Coming from agentwire?
agentcourier was called agentwire before. On first start it moves your key, pairings and waiting messages over by itself, and it still talks to machines that run agentwire. Rename the MCP entries above from agentwire to agentcourier, run agentcourier vscode again, and start Claude Code with server:agentcourier.
Learn more
- User guide: names and addresses, files, notifications, commands, configuration, clusters
- Security: how pairing, encryption, masking and file screening work, and their limits
License
Apache-2.0
Metadata
Release files for agentcourier 2.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| agentcourier-2.1.1.tar.gz | 1.3 MB | Without provenance | Details for agentcourier-2.1.1.tar.gz |
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| agentcourier-2.1.1-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details for agentcourier-2.1.1-py3-none-win_amd64.whl |
| agentcourier-2.1.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details for agentcourier-2.1.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
| agentcourier-2.1.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details for agentcourier-2.1.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl |
| agentcourier-2.1.1-py3-none-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) | Details for agentcourier-2.1.1-py3-none-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl |
Total release size: 9.6 MB
Release files / agentcourier-2.1.1.tar.gz
| Download URL | agentcourier-2.1.1.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
478513a1b7e6e00d534230169523e997027646ee225d0aa144001922ad85a03f
|
|
BLAKE2b-256 checksum How to use checksums |
28d47f4914e0590983b16611ba1472601d14f9ef46c124f89d8fa2718e66d822
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.9
|
Release files / agentcourier-2.1.1-py3-none-win_amd64.whl
| Download URL | agentcourier-2.1.1-py3-none-win_amd64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
55b3c31187b3cecac16c0bd72f66c8e75ff08511f59c8a7565ef07359680726c
|
|
BLAKE2b-256 checksum How to use checksums |
d8deb4d59a20f4f39a3637a5aae473f22d138d4cb017a5dd1e5504c144cfea92
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.9
|
Release files / agentcourier-2.1.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | agentcourier-2.1.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
6a6bce66bca05e9a34b6f233580a9ad31b024b10fc9df0a671a896b70fbd417c
|
|
BLAKE2b-256 checksum How to use checksums |
ac174a0d513cd66f74217fdbd781ad76917554f61a13b3b82deb6c007375c184
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.9
|
Release files / agentcourier-2.1.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
| Download URL | agentcourier-2.1.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
88310b6fe3d3823cf0d7da8b9534bc66fab0d5b2f930e7d9646febebc7f99ece
|
|
BLAKE2b-256 checksum How to use checksums |
8fda8e9ae6f88d383abfca76d87704378a6f03d45238d8c7cab737b3c3f0c0c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.9
|
Release files / agentcourier-2.1.1-py3-none-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl
| Download URL | agentcourier-2.1.1-py3-none-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | Python 3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
931aad8f4957d5a4611a5de3c33a0e0b88254843004787e714862503844b4ce7
|
|
BLAKE2b-256 checksum How to use checksums |
fdbbbaf29b24aaecacea57bb2b7c6c3e0ee1a8829b1e007f6ae486a29742dc2b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.9
|
Security for agentcourier 2.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.