1. Put both machines on one mesh
Cross-PC routing rides the relay. Every machine paired under the same Owner key forms one logical mesh — there is no central server, just a relay forwarding between paired peers. To get there:
- On each machine, run
/remote-piand answer Yes to using the relay. - Pair both machines to the same Owner so they share one mesh. The mesh-membership details — how the Owner key signs the device list — live in PROTOCOL.md.
Point both machines at the same relay. The default is the community relay; for your own, see the relay reference.
2. Address peers across PCs
Once both machines are on the mesh, list_peers()shows local agents plus remote ones, each prefixed with the source machine's label:
list_peers() → frontend # local — same machine MacMini:backend # remote — agent "backend" on PC "MacMini" build-box:tests # remote — agent "tests" on PC "build-box"
To message a remote peer, use its full pc_label:peername verbatim — that's the only difference from a local send:
agent_send({
to: "MacMini:backend",
body: { task: "run the integration suite and report failures" }
})
→ Delivered to MacMini:backendThe reply arrives the same way a local one does — in your inbox on a future turn, carrying re=<your-send-id>.
3. "Delivered" is not "alive"
This is the one thing to internalize about remote sends. A Delivered ACK means the remote broker accepted the envelope — nothing more. It does not mean the peer is alive, processed the message, or will ever answer.
Delivered as proof the other agent is working. list_peers can even list a peer that has gone stale. The only real confirmation is a reply you actually receive: ask the remote agent to respond, then wait for that envelope in your inbox. If it never comes, the peer may be offline regardless of what the ACK said.When a forwarded message genuinely can't be delivered, the relay returns a transport_error envelope with re=<your-send-id> — watch your inbox for that too.
What the relay sees
The relay is the only network-touching piece, so it's worth being precise about what it protects and what it doesn't:
The community relay does not log, persist, or inspect payloads, but self-hosting is the way to get cryptographic-grade isolation. The full trust model is in PROTOCOL.md.
What it's for
Cross-PC messaging lets you split work across roles that live on different machines — a frontend on your laptop handing tasks to a backend on a beefier box, or a tests agent on a build server reporting back. Same tools, same envelope; the relay just carries it between machines.
Keep them reachable
Cross-PC coordination is most useful when the remote agents are always up. That's the next guide: run them as 24/7 daemons.