Skip to main content

agentcourier

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.

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

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)

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

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

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