Relais setup and support

Relais needs a Mac running Relais Companion and OpenCode, plus one connection method. The initial public release is free and asks you to bring your own private or self-hosted rendezvous.

Fastest private option: use Tailscale when the Mac and iPhone can join the same tailnet. Use Cloudflare when you need normal internet reachability without a VPN.

Option 1: your Cloudflare Worker

  1. Add a domain you control to Cloudflare and install Node 24 or newer.
  2. Download the Relais source release, open rendezvous-worker, and copy wrangler.user.example.toml to wrangler.user.toml.
  3. Replace rv.example.com and example.com. Choose any unused positive integer for namespace_id; it must be unique within your Cloudflare account.
  4. Run:
npm ci
npx wrangler login
npx wrangler deploy --config wrangler.user.toml
  1. Confirm https://rv.your-domain.com/v1/health reports protocol 1.
  2. In Companion choose Cloudflare Worker, enter wss://rv.your-domain.com, install, and scan the pairing QR code.

Exact-domain mode uses a cryptographically verified hostID query, so it does not require wildcard DNS or a wildcard certificate.

Option 2: Tailscale Serve

  1. Install Tailscale on the Mac and iPhone and join the same tailnet.
  2. In Companion choose Tailscale private network, enter the Mac’s complete name as wss://mac-name.tailnet-name.ts.net, choose your workspaces, and install. Companion installs the private rendezvous as a loopback-only user service on port 4100.
  3. Publish that local port only inside the tailnet:
tailscale serve --bg 4100
tailscale serve status
  1. Confirm the status shows the expected HTTPS name, then pair from Companion and keep Tailscale connected on both devices.

Tailscale access controls apply. Do not use Tailscale Funnel; Serve keeps the endpoint private to the tailnet. Run tailscale serve reset only if you intend to remove every Serve mapping on that Mac.

Option 3: Node and your own TLS proxy

Run the included rendezvous service behind Caddy, nginx, or another WebSocket-capable TLS proxy. Exact-host mode uses RENDEZVOUS_FIXED_HOSTNAME. Wildcard mode uses RENDEZVOUS_BASE_DOMAIN and requires wildcard DNS/TLS with the original Host header preserved.

Common fixes

Safe support requests

Use the support channel distributed with your copy of Relais. Never include pairing codes, device tokens, prompts, proprietary source, or model output in a support request.