Skip to main content

agent-peer is a local IPC mesh connecting Claude Code, Antigravity, pi, opencode, and other agent harnesses over Unix Domain Sockets, with a reactive wait-to-wakeup loop.

Install · Usage · Skills · Docs · Status · License

MIT license Python 3.10+ Zero dependencies

agent-peer

A local IPC mesh so any agent harness on your machine — Claude Code, Antigravity, pi, opencode, or your own script — can find, message, and reactively wake up any other. No polling, no per-harness glue code.

Claude Code already ships a cross-session messaging protocol (/peer) over Unix Domain Sockets. agent-peer opens that protocol up: any process that can run a CLI command becomes a full peer on the mesh, able to send, listen, and block-until-woken exactly like a native Claude Code session.

Highlights

  • Sub-200ms delivery, no polling anywhere in the loop.
  • Reactive wakeup: wait blocks and returns the instant a message arrives — the tool call returning is what wakes the agent's own loop back up.
  • Never misses a backlog: messages that pile up while an agent is busy get merged and returned in one shot, in order, the next time it calls wait.
  • Zero-config identity: auto-detects a stable session name and engine from whichever harness is actually running it — no --name required.
  • Zero heavy dependencies — pure Python 3.10+, standard library only.

Install

uv tool install agent-peer

No uv? pipx install agent-peer or python3 -m pip install --user agent-peer work the same way. All three put a global agent-peer command on your PATH.

Contributing or tracking main instead of a release?

git clone https://github.com/mkhuda/agent-peer.git
cd agent-peer
uv tool install --editable . --force

An editable install means source changes take effect immediately, no reinstall.

Usage

Discover who's reachable:

agent-peer list
PID      SESSION NAME    ENGINE   STATUS   ALIVE  SOCKET        CWD
------------------------------------------------------------------------
41213    my-app-fe       Claude   idle     yes    41213.sock    ~/projects/my-app
52901    agy-33402       AGY      idle     yes    52901.sock    ~/projects/my-app

Send a message, by name or PID:

agent-peer send my-app-fe "review the auth middleware diff when you're free"
agent-peer send agy-33402 "[stop] hold off on that migration, see docs/" --priority now

Become reachable, from any harness:

agent-peer listen

--name is optional everywhere (listen, send --sender, and the session filter on wait). Leave it out and agent-peer walks up the parent-process chain to find the first non-generic-shell ancestor and uses it as a stable identity (e.g. pi-<pid>, opencode-<pid>) — explicit --name / $AGENT_PEER_NAME always wins when given.

React without polling:

agent-peer wait --timeout 30

The call blocks and returns the moment there's something to read. If messages already queued up while the harness was busy, it returns all of them at once, instantly — no separate "mark as read" step, and nothing gets replayed twice. Only one wait may run per session at a time; a second one fails fast (exit 1) instead of silently racing.

Inspect the inbox:

agent-peer inbox            # recent messages
agent-peer inbox --clear    # wipe it (also resets the read cursor)

Watch the mesh live:

agent-peer watch             # tail everything, formatted
agent-peer watch -s my-app-fe   # just one session

Teaching a harness about agent-peer

skills/ ships a ready SKILL.md per harness (agy, pi, opencode) plus a README explaining exactly where and how to install it — each harness turned out to have a genuinely different convention for skill location, frontmatter, and trigger mechanism, verified against its own source/docs rather than assumed.

Architecture

Claude Code enforces process ownership before accepting an IPC connection:

  1. PID validation — the target process must actually be running.
  2. Start-time verification — matches ps -o lstart= against the registered process, so a reused PID can't impersonate an old session.
  3. Auth handshake — first frame must be {"type":"auth","token":"<peerToken>"}.
  4. Message frame — {"type":"user","priority":"now","from":"...","message":{"content":"..."}}.

agent-peer handles this handshake, socket binding, token generation, and session cleanup automatically — see the diagram at the top for how a message actually travels from one harness to another.

Docs

  • docs/status.md — how agent-peer status sources agy and Claude Code quota/context numbers.
  • docs/ — design notes, known limitations, and past investigation reports written while building this.
  • skills/ — per-harness SKILL.md templates and install guides.

License

MIT.

Release files for agent-peer 0.2.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 agent-peer 0.2.1
File Size Uploaded
agent_peer-0.2.1.tar.gz 80.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for agent-peer 0.2.1
File Interpreter ABI Platform
agent_peer-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 110.5 kB

Release files / agent_peer-0.2.1.tar.gz

Download URL agent_peer-0.2.1.tar.gz
Size 80.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e3516f96daa91a657ac2c1d2396ec9efdf4198665fde9c0a82fead3a2b7d6952
BLAKE2b-256 checksum
How to use checksums
740c5ba27935a730fb2a203e0a7828013a2c61a8ffd83db93490533fae07e9e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / agent_peer-0.2.1-py3-none-any.whl

Download URL agent_peer-0.2.1-py3-none-any.whl
Size 30.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e173179510e94cb2684745486550bcd8a88623c74f33480c463406522b644811
BLAKE2b-256 checksum
How to use checksums
ab86988a3520626945a86b82b91e0feaa8238b056108a739084824446315a0ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release history Release notifications | RSS feed

0.8.9

2 release files

0.8.8

2 release files

0.8.7

2 release files

0.8.6

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

This release

0.2.1 This release

2 release files

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