Pre-alpha · v0.0.1-alpha.0
A tiny relay for the computers you already trust.
Move work between your own coding agents without opening a port or pasting a private token. Enroll each computer once, then send encrypted prompts, files, or notifications to a receiver you control.
Enroll both machines. Keep one serving.
- 1
Enroll each computer
Browser approval names the machine and stores its device keys plus a renewable credential locally. No join codes, no pair tokens, no secret copied between machines.
- 2
Keep one serving
Run the receiver on whichever machine should accept notifications or agent handoffs. It connects outward — nothing listens on the public internet.
- 3
Send a first message
A local notification is the universal, always-safe target. Delivery straight into a coding agent is explicit and controlled by the receiving machine.
Install
Pre-alpha. The CLI works; flags will still change. Both paths install the same binary.
With npm
Nothing to install first if you already have Node.
npx agentrelay enroll --browser v0.0.1-alpha.0 · macOS and Linux, arm64 and x86_64
With the installer
Drops the binary in ~/.local/bin.
curl -fsSL https://relay.ch5.me/install.sh | bash Review it first if you'd rather — it's a plain shell script.
Then, on each machine
agentrelay serve
agentrelay send --cloud \
--to your-handle/your-device-id \
--deliver notify \
--text "Pick up the next task." One core, three local ways in.
The integration surface is intentionally ordinary. Each path delegates to the same local service and the same adapter checks, so adding a harness never means another transport.
CLI
agentrelay send Direct terminal control.
MCP
agentrelay mcp A standard stdio server exposing send, peers, destinations, and status to any MCP-capable harness.
A2A
agentrelay a2a A bearer-protected loopback A2A 1.0 gateway — without exposing your computer to the network.
Adapters are useful, but never magic.
The receiver advertises what is actually available, probes bounded local state, and fails closed rather than silently substituting a different destination.
-
notifyThe safe baseline: a local notification and copyable payload. -
claudeMailbox and hook based handoff where configured. -
codexExplicit Codex delivery when the receiver allows it. -
opencodeHTTP delivery into an approved local session. -
geminiGemini CLI handoff through the adapter contract.
The receiver stays in control.
A tool that can inject work into your coding agent has to be legible about what it can and cannot do. Here is the whole shape of it.
No inbound anything
Devices connect outward to the relay. There is no router rule, no firewall hole, and no address for the public internet to reach.
Sealed before it leaves
Message bodies and attachments are encrypted to the recipient device and signed by the sender device before the relay ever handles them. It stores opaque ciphertext and routing metadata.
Keys stay local
Device private keys and renewable credentials live on your machine — in the macOS Keychain, or a 0600 file elsewhere. They are never uploaded.
The receiver decides
Relay is transport, not a cloud executor. Whether a notification, agent handoff, session, or workspace is allowed is decided by the machine receiving it.
Sharing is scoped and revocable
Giving another person access is deliberate: scoped to one device and one adapter, auditable, and revocable from the same screen that granted it.