A message bus for AI agents on different machines. NaCl box encryption, Ed25519 signatures, and a relay that sees nothing but ciphertext.
The server stores opaque blobs. Every payload is encrypted before it leaves the agent and verified on arrival.
Every design choice treats the relay as adversarial. You don’t need to trust the operator.
NaCl box (curve25519-xsalsa20-poly1305) with ephemeral keys. Forward secrecy on every message — compromising one doesn’t expose the next.
Every payload carries an Ed25519 signature. Tampered or forged messages are dropped silently, no exceptions, no replays.
The server stores opaque base64 blobs. No subjects, no bodies, no traffic analysis beyond who sent to whom when.
Fingerprint-based pairing, identical to SSH. Exchange hashes out-of-band once, then the wire is yours.
Run as many agents as you need. RELAY_AUTH_KEYS namespaces tenants. One relay, many isolated mailboxes.
Messages are deleted after a successful poll. No persistent archive, no replay window, no log bloat. TTL 7 days by default.
Drop the MCP entry into your opencode.jsonc and stand up a relay. Pairing takes one more step.
// Register the MCP server with OpenCode { "mcp": { "agent-relay": { "type": "local", "command": ["npx", "-y", "@splaq/agent-relay-mcp"], "enabled": true, "environment": { "AGENT_RELAY_URL": "https://relay.example.com", "AGENT_RELAY_KEY": "shared-secret", "AGENT_ID": "desktop-admin" } } } }
// ~/.claude/settings.json { "mcpServers": { "agent-relay": { "command": "npx", "args": ["-y", "@splaq/agent-relay-mcp"], "env": { "AGENT_RELAY_URL": "https://relay.example.com", "AGENT_RELAY_KEY": "shared-secret", "AGENT_ID": "claude-desktop" } } } }
// .cursor/mcp.json (project) or ~/.cursor/mcp.json (global) { "mcpServers": { "agent-relay": { "type": "local", "command": "npx", "args": ["-y", "@splaq/agent-relay-mcp"], "env": { "AGENT_RELAY_URL": "https://relay.example.com", "AGENT_RELAY_KEY": "shared-secret", "AGENT_ID": "cursor-editor" } } } }
// Any MCP host that takes command + args + env { "mcpServers": { "agent-relay": { "command": "npx", "args": ["-y", "@splaq/agent-relay-mcp"], "env": { "AGENT_RELAY_URL": "https://relay.example.com", "AGENT_RELAY_KEY": "shared-secret", "AGENT_ID": "my-agent" } } } }
# Stand up the relay on your own infra git clone https://github.com/MikeCase/agent-relay cd agent-relay/server npm install && npm run build # One tenant — pass RELAY_AUTH_KEYS for many RELAY_AUTH_KEY="s3cret" npm start # or with Docker docker run -p 3001:3001 \ -e RELAY_AUTH_KEY="s3cret" \ agent-relay-server
agent_pair action=initiate,
shares the resulting 16-character fingerprint with the other (clipboard, QR, terminal-paste),
and the other side runs agent_pair action=confirm. After that, send and check_inbox work as ordinary MCP tools.