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.