Relay is a dual-stack remote terminal management system: a Rust gRPC+REST server (runner/) and a Swift macOS client (MacApp/).
- Development Setup — prerequisites, building, running locally
- Server Deployment — deploying relay-runner with TLS, auth, Docker
- Client Setup — building and running Relay.app
- Server Management — server add/edit/delete, mDNS discovery
- Project Management — git clone, worktrees, SSRF validation, state machine
- Session Management — Docker exec, PTY, state machine, resource limits, reconciliation
- Terminal I/O — gRPC bidi streaming, VT parser, scrollback, reconnect
- REST API — all endpoints with request/response examples, auth, rate limiting
- SSE Events — event types, reconnect, Last-Event-ID, heartbeat
- Cloud Mode — cloud_mode flag, gRPC routing, Docker orchestration
- ADR-001: gRPC for Terminal I/O
- ADR-002: Docker exec, not SSH
- ADR-003: SQLite via sqlx
- ADR-004: tokio::process for git
- ADR-005: SessionBackend trait design
- ADR-006: TCA for Swift client
- ADR-007: axum REST API
- ADR-008: SSE for events
- ADR-009: Reconciliation at startup
- Architecture — full system architecture (23 sections)
- Task Decomposition — 30 tasks across 5 waves
- Test Plan — 114 test cases across 14 files
- Golden Path E2E — 12-step end-to-end scenario