Getting started
Architecture
How Studio, the client daemon and the protocol fit together.
A browser talks to Studio over HTTP and WebSockets. Studio talks to each developer’s daemon over WSS carrying JSON-RPC 2.0 — one connection per project, N projects per machine.
Maestro Studio (Laravel)
- HTTP routes + Livewire components + Laravel Reverb WebSocket server.
- Service layer: PlanningAgentService, SkillMatcherService, TaskDispatcherService, GitProviderManager, InviteService, ProjectLookupService, ReportingService.
- Horizon queue workers, PostgreSQL 16, Redis 7.
Maestro Client (single Rust process)
- Connection Manager — one WS connection per project, possibly across multiple Studios (ADR-0008: one isolated tokio task per connection).
- Registry — identities in config.toml, paths in projects.toml, a stable machine.id.
- Git Detection — parse and normalize the remote, infer the provider.
- Per-connection state machine + Provider Abstraction (Claude / Codex / Gemini / Aider / Manual).
- Auth — JWT plus OS keyring; ratatui TUI.
Protocol
Transport is Laravel Reverb (Pusher v7 protocol over WSS) carrying a JSON-RPC 2.0 envelope — one private project channel per project. 30s heartbeat, exponential-backoff reconnect capped at 30s. See the Protocol page for channel events and error codes.