Every flow, mapped end to end
Maestro is a set of explicit, observable flows — not magic. Here is each one, step by step, exactly as the platform executes it.
The shape of the system
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.
Browser
Livewire UI, dashboards, kanban, plan chat
Maestro Studio
Laravel · planning, skill matcher, dispatcher, git providers, reporting · PostgreSQL + Redis
Client Daemon
One Rust process · N project connections · provider adapters · OS keyring
The core flows
Each diagram below corresponds to a real code path. Follow any of them in the documentation.
-
1
Create workspace
Your top-level container; invite members later.
-
2
Create project
/projects/createLink a git repo and provider.
-
3
Create plan
/plans/createAI plan chat drafts phases & tasks.
- Loops back until the verdict is approved
-
1
Studio issues invite
A one-time JWT invite token.
-
2
Redeem on machine
maestro auth <token>Returns identity + access (15 min) + refresh (30 day) tokens + project list.
-
3
Stored securely
Tokens in OS keyring; identity in config.toml; projects in projects.toml.
-
4
Auto-detect & connect
cd into a repo and maestro connect resolves it from the remote.
- Loops back until the verdict is approved
-
1
Operator requests a team
maestro team --dev 2 --review 1 --test 1Roles parsed by the CLI itself.
-
2
Studio allocates a team channel
POST /api/v1/agent-sessions/{lead}/teamServer records the shared channel and worker count.
-
3
Lead spawns detached workers
--role workermaestro connect --no-tui --role worker --with-skill <slugs>, one per role.
-
4
Shared channel orchestration
⚑ N steeringLead and workers subscribe to the team channel; the lead shows steering directives and completion reports.
-
5
Workers reaped
When the agent session ends, all spawned workers are terminated.
- Loops back until the verdict is approved
-
1
Open plan chat
/projects/{p}/plans/createDescribe the goal in Studio.
-
2
Architect run proposes
POST /cli-runs/{uuid}/plan-proposalA planning agent run posts a proposal.
-
3
Proposal parsed
ProposalParser builds Plan → Phases → Tasks.
-
4
Review & edit
/plans/{plan}/editAdjust phases and tasks in the plan editor.
-
5
Activate
bootstrap_epicPlan → active; the epic branch is pinned and bootstrapped, then level-0 tasks dispatch.
- Loops back until the verdict is approved
-
1
Trigger
MAESTRO:SUBTASK{...}A plan edit, a scope change, or an executing agent emitting a subtask directive.
-
2
Re-run / subtask
POST /cli-runs/{uuid}/subtaskArchitect re-run or a routed child task is created.
-
3
Plan updated
New or changed phases and tasks; affected tasks re-dispatched.
- Loops back until the verdict is approved
-
1
Plan active
Dispatchable tasks become available.
-
2
Skill scoring
SkillMatcher scores tasks against member/session skills + proficiency.
-
3
Run created
status=dispatchedDispatcher creates an AgentRun.
-
4
Session picks up
POST /agent-sessions/{uuid}/runA connected machine polls pending runs and starts.
-
5
Execution begins
Task → in_progress, TaskStartedBroadcast emitted.
- Loops back until the verdict is approved
-
1
Assign on the board
A lead/architect assigns a task in kanban/list/timeline.
-
2
Member notified
Server sets `assignee_id` and notifies.
-
3
Developer accepts
maestro task acceptCLI accepts and the run starts.
-
4
Lead delegation (variant)
POST /agent-sessions/{uuid}/delegateA lead sends a subtask packet straight to a worker.
- Loops back until the verdict is approved
-
1
Run analyze
maestro analyzeArchitect permission required.
-
2
Analysis run
POST /projects/{id}/analysisCreates an AgentRun with purpose repo_analysis.
-
3
Context emitted
RepoContext + versioned ProjectContextFiles (prior version snapshotted on change).
-
4
Artifacts indexed
KnowledgeArtifacts written with embeddings; ContextFileUpdatedBroadcast fired.
-
5
Reuse before writing
Future tasks/agents query the catalog before coding.
- Loops back until the verdict is approved
-
1
Work completes
purpose=reviewOn unattended completion the server auto-dispatches a review run (if the plan is active and no review is in flight).
-
2
Reviewer verdict
Reviewer agent returns `VERDICT: APPROVED` or `VERDICT: REJECTED —<reason>` in its output; the server parses it.
-
3
Approved → merge
purpose=mergereview_approved_at set; a deterministic merge run is dispatched (epic ← task branch).
-
4
Rejected → revision
Auto reject comment posted; the developer is re-dispatched on the SAME branch, then auto re-reviewed. Capped at 3 cycles (REVISION_CAP) before operator action.
- Loops back until the verdict is approved