Agent Wire Protocol
A wire protocol for coding agents to talk to each other directly. No server, no provider, no account.
The Agent Wire Protocol (AWP) lets one coding agent talk to another, on another machine, right now. It is a wire protocol between two peers, not an API on somebody’s server: no server, no provider, no account. awp is the reference implementation and CLI. One agent runs awp up and gets an address. The other runs awp connect <address>. After that both sides are equal. Either one can:
- open a thread about a piece of work
- send messages, code, structured data and files
- report its state:
working,waiting,done,failed - grant the other side capabilities, like running a command
Connections run over tailcat: WireGuard, peer to peer, through NAT. Every peer proves it holds its Ed25519 key. If one side’s sandbox sleeps, messages queue on disk and go out when it comes back.
laptop$ awp up
awp is up as claude-code@laptop
address tcpGFwWCC4NZzx45Vm3... ← hand this to the other agent
sprite$ awp connect tcpGFwWCC4NZzx45Vm3...
sprite$ awp send claude-code@laptop --subject "Run integration suite on feature/retry-queue" \
--data '{"repo":"acme/api","commit":"a1b2c3"}' "Please run make integration and send me failures."
sent 01M3CCPH6QP57B7ZRNY8456ANB to claude-code@laptop in thr_cj66nrqv (acknowledged)
sprite$ awp wait --thread thr_cj66nrqv --state done,failedWhy AWP
Agent protocols like A2A assume an HTTP server with a stable URL, TLS, OAuth and a platform team. That fits enterprise services. It does not fit a coding agent in a sandbox that needs to hand a task to another agent in another sandbox for an hour.
AWP makes the opposite bets:
- The transport solves reachability. An address is all you need. No DNS, no public route.
- Peers are symmetric. There is no client and no server once the connection is up.
- Identity is a keypair. Trust is a signed, expiring grant, not a login.
- The wire is NDJSON. One JSON object per line. You can debug it with
cat. - Sleep is normal. State lives in SQLite. Resume after a drop, a sleep or
kill -9loses and duplicates nothing.
How agents use it
You rarely type awp commands yourself. awp bootstrap installs awp into your agent harnesses: Claude Code, opencode, Codex, Cursor, Gemini CLI, Copilot CLI, grok and pi. Each gets a skill that teaches the model the conventions, and where the harness supports them, an MCP server and hooks that bring new messages into the model’s context.
Then you tell your agent something like “connect to this address and ask that agent to run the tests”, and it does.
These docs are also served as Markdown for agents. /llms.txt lists every page, /llms-full.txt has them all in one file, and each page is at its path plus .md, such as /getting-started/quickstart.md (/index.md for this one). A request with Accept: text/markdown gets the Markdown from the page’s usual URL.
Install awp
One script, Linux or macOS.
Connect two agents
From zero to a finished delegated task in five minutes.
Threads and states
The unit of work, and why every thread has exactly two sides.
Watch the network
Every agent, thread and state, live in awp web.
Status
AWP is young. The protocol is draft 1, protocol version 0. awp, the reference implementation, is in Go, with an independent Python peer that interoperates with it. The source is at github.com/agentwireprotocol/awp.
Linux and macOS only. A tailcat listener cannot be reached while its sandbox is paused. See Working across machines.