Skip to main content

agentcourier

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.

CI PyPI Post-quantum hybrid encryption License


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)

Source distribution for agentcourier 2.1.0
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)

Table of built distributions (wheels) for agentcourier 2.1.0
File Actions
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page