agentcourier
Let your AI agents talk to each other, securely, across machines.
Claude Code, Codex, VS Code Copilot and any MCP client, on your laptop, your cluster or a colleague's machine.
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
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.0
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.0.tar.gz | 1.3 MB | Without provenance | Details for agentcourier-2.1.0.tar.gz |
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| agentcourier-2.1.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details for agentcourier-2.1.0-py3-none-win_amd64.whl |
| agentcourier-2.1.0-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.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
| agentcourier-2.1.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details for agentcourier-2.1.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl |
| agentcourier-2.1.0-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+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64 | Details for agentcourier-2.1.0-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.0.tar.gz
| Download URL | agentcourier-2.1.0.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6ae69bc31dd01845148665262d73b000e7e047e0c603c8392ce0f8c7596cdb0f
|
|
BLAKE2b-256 checksum How to use checksums |
c0c9eb2d3a8c7d5dfb32590ff9f22868b6605d49c899e04b98aabe565e920d12
|
| 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.0-py3-none-win_amd64.whl
| Download URL | agentcourier-2.1.0-py3-none-win_amd64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
55147361b8773dc7e5dceafacf0fc0e5db64b1262943e63fcd2e5c2abf1bf5bc
|
|
BLAKE2b-256 checksum How to use checksums |
5232779848f55a7178d9d54da78f1579c7f7c9c8be442720e8e5d125d2062633
|
| 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.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | agentcourier-2.1.0-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 |
0371dd2d0df804e02c5774d9f0d9807a5f8727bfe1a49aee7467be6a4739de8f
|
|
BLAKE2b-256 checksum How to use checksums |
fb3260ba65b34ddbd2be3f7ddce2e7134001b8b7030ce6ed541fe4d90aefe1f6
|
| 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.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
| Download URL | agentcourier-2.1.0-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 |
62ec70c2107659885f5b2093098323440da06916d8e76f80427e0a3c94994193
|
|
BLAKE2b-256 checksum How to use checksums |
9e493b336df513069d4cdfc28feec4fa00a3bbb96ec322602fde75522b3e95e2
|
| 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.0-py3-none-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl
| Download URL | agentcourier-2.1.0-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 |
ed001d829e7f93376b002499fe86de4c41c8a1a8adb92ba45caaea519f37460e
|
|
BLAKE2b-256 checksum How to use checksums |
c44316c488f629a7591eaf7e00765c963b687c32aeb2a95032b69131d104b44f
|
| 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.0
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.