Skip to main content

Prerequisites

  • Bun 1.3.5 or newer
  • macOS or Linux
  • A Convex development deployment
Clone the repository and initialize its mobile submodule:
The parent repository tracks only the mobile commit pointer. Mobile commits belong in the nested repository first. Mobile bootstrap is optional for CLI, backend, relay, and web work. On macOS, after installing the Xcode and XcodeGen versions listed in apps/mobile/README.md, generate the ignored Xcode project:
Then install the Bun workspace from the repository root:

Start the services

Run each command in a separate terminal. Backend:
Relay (point at your Convex .cloud URL):
Web:
CLI host:
For an offline host-only CLI check without the backend or relay:
Released CLI binaries use production endpoints when NODE_ENV is unset. Connected source development must set explicit Convex, relay, and auth URLs. The complete environment and deployment matrix lives in ENVIRONMENTS.md.

Local quality checks

Docs:

Relay smoke check

This checks relay health and rejects an unauthenticated WebSocket request.

Manual end-to-end check

  1. NODE_ENV=development wrapper auth login (or the source CLI equivalent)
  2. Start a host and share with Ctrl+\ then s
  3. Attach from another terminal with --relay --id <sessionId>
  4. Detach with Ctrl+\ then d
  5. Unshare with Ctrl+\ then u
  6. Watch the title for relay then optionally p2p
  7. Repeat with WRAPPER_P2P=0 and confirm it stays on relay
NAT-restricted networks and CI sandboxes often cannot form WebRTC. Relay-only success is still a valid result.
Last modified on August 11, 2026