The Studio
The Studio is where Novaterra builds things. You describe what you want — a brief, or a filled-in
generator form — and a small team of agents plans it, splits it into tasks, executes them with real
tools, reviews the result against what you asked for, and hands you back files you can preview,
download, or list on the Marketplace. Route: /studio.
Being.brief → Planner (strong tier) → Crew, or team assembly → Task runner (bounded → Deliverable contracts → Output assembly concurrency) → QA review → Project doneEvery step of that pipeline publishes real-time events over the WebSocket, so watching a project run is not a spinner — it’s a live task board and a scrolling trace of what each agent is actually doing.
Two things worth knowing before you start one. POST /api/studio/projects always starts a run
and spends money — there is no “create it but don’t run it”. And the project page leads with
the deliverable, above the plan and the trace: you asked for a thing, so the thing is first.
The four things in this section
- Briefs — how a project starts: a free-text brief or a generator’s form, and how the planner turns either one into a task graph.
- Generators — what a Generator is, how its steps and input form work, and how to save your own. (For the eleven seeded ones with their exact inputs and pipelines, see the Generators catalogue.)
- Projects — the task graph, the crew, live traces, cost, editing a plan, gates, due dates, cancelling, and picking a stopped run back up.
- Outputs — how files are assembled, previewed, downloaded, and checked against what each step promised.
Above one project
The Studio describes a single project well and says nothing about several of them, so there is a
second Place for that: /work. It shows every project at once, grouped by what it needs from
you — with waiting ranked above done, because a question still on your desktop is not
“finished” — and every open step across every project in one list. See
Architecture.
A concrete start
curl -s -X POST http://localhost:4000/api/studio/projects \ -H 'content-type: application/json' -b cookies.txt \ -d '{"brief":"Write a 1200-word blog post about why small teams ship faster than big ones"}'{ "id": "prj_8f2a...", "ownerId": "b_owner...", "generatorId": null, "title": "Write a 1200-word blog post about why small teams ship faster than big ones", "brief": "Write a 1200-word blog post about why small teams ship faster than big ones", "inputs": {}, "status": "planning", "outputs": [], "teamId": null, "costUsd": 0, "createdAt": "2026-09-06T10:02:11.000Z", "updatedAt": "2026-09-06T10:02:11.000Z"}The route returns immediately with status: 'planning'; everything after that — the plan, the team,
every task, every file — happens in the background and streams to you as project.updated,
task.updated, and trace WebSocket events. The same thing happens, with a filled-in form instead
of free text, when you run one of the seed generators — see
Briefs for exactly how the two paths differ.
Also reachable from here
You can start a Studio project without ever opening /studio: typing a “make/build/write/draft…”
sentence into the omnibar calls this exact
POST /api/studio/projects route internally.