Skip to content

Project Timeline & Canvas

A project plan is a list of tasks. Two views turn it into something you can look at:

  • Timeline: the plan on a calendar. When each piece of work starts and ends, which deadlines and milestones it has to meet, and where it is running late.
  • Canvas: a pan-and-zoom board that the project’s agent generates from the plan. It holds the timeline, a map of the app’s screens (or of the system’s components, for a project without a UI) and, for each screen, what it looks like now next to a mockup of what it will look like next.

Both work for Adaptive Swarm projects and for standard (Structured Execution) projects.


  • Swarm projects: on the project’s execution page, the Timeline tab (next to Plan · Team · Findings · Files) switches between Timeline and Canvas. The minimize button at the top right of the Console folds it to a thin rail on the left, so every tab gets the full width; click the rail to bring it back.
  • Before a swarm starts: the kickoff wizard’s Plan step has Document · Flow · Timeline · Canvas, so you can see the plan on a calendar (and generate its canvas) before you sign it off. Deadlines and milestones entered in the Define step are there from the start, and the PM plans against them.
  • Standard projects: the Project Plan card has Plan · Timeline · Canvas tabs. The canvas opens at 70% of the window; Full screen gives it the whole screen (Esc leaves).

The view you pick is in the URL (?view= or ?plan_view=), so a link opens the same view.


Each row is a group of tasks (a milestone or phase, or the canvas’s workstreams once a canvas is generated). Expand a row to see its tasks.

Where the dates come from, in order:

  1. What actually happened. Finished tasks show their real start and end; a running task shows its real start and a forecast end.
  2. Your overrides. Drag a bar to set dates for work that hasn’t finished. Dragged bars keep your dates until you reset them.
  3. A forecast for the rest. Unstarted work is scheduled after the tasks it depends on, one task at a time per agent, on working days. A task takes the canvas’s estimate for its row, or a default: the median of this project’s finished tasks, or half a day with no history. Change the default under Schedule settings.

Forecast bars are hatched, so you can tell a guess from a fact.

Deadlines, milestones and operator steps. Use Add to put dates on the timeline:

  • a deadline (a red line; link tasks to it to see if they make it);
  • a milestone (a diamond, done or missed from its linked tasks);
  • an operator step, something you have to do, like “merge the PR” or “send the photos”.

Slips. When a row’s forecast ends after a confirmed deadline it’s linked to, the bar turns red past the line and the row says how many days late it is.

Dates the canvas generator proposes (for example a contest deadline it found in a spec) arrive unconfirmed, marked “confirm?”. They don’t count toward slips or the agent’s planning until you confirm them.


  1. Open Canvas and choose Generate design canvas (or Regenerate ▾ later).
  2. The dialog shows the estimate in budget tokens, the per-generation cap (400k by default; you can raise it for one generation) and, for a swarm, what the run’s budget has left. It also shows which model runs it and whether the map will be screens (the project has a UI) or an architecture map.
  3. A progress card follows the stages: Timeline → Map → Mockups → Pairs. Mockups are drawn three at a time. Cancel stops new stages and keeps what finished.

Who generates it. For a swarm, the run’s PM does, and the tokens count toward the run’s budget in a design bucket (it has its own segment in the HUD). For a standard project, the project’s agent does; there is no run budget, so the cap is the only limit. Either way the agent gets no tools: everything it needs from the repository (plan, specs, theme, routes, each screen’s source) is put into its prompt, and it can’t run commands or edit files.

What it costs. A real 12-screen app (DecorMuse) took about 478k budget tokens on Opus in under ten minutes, more than the 400k default cap: when the estimate is over the cap, use Raise the cap for this generation… in the dialog. Retries reuse finished stages for free.

When something fails. A failed mockup leaves a “Mockup failed · Retry” tile; Retry failed redraws only those. If the timeline or map stage fails, the previous canvas stays and a red banner offers Retry and Details (including the rejected reply).

Now screenshots. A pair’s Now side is a screenshot of the app as it is today: E2E runs capture them automatically, and you can Upload or pick… an image from your machine or the project’s files.

When the plan changes (tasks added, removed or renamed; a new plan revision), an amber banner says what changed, and Regenerate ▾ gets an amber dot. The banner’s Update (or Regenerate ▾ › Update stale sections, which lists the affected sections) regenerates just those sections. Progress on tasks never makes the canvas stale.


Your edits are kept on top of the generated canvas, and survive a regenerate.

  • Move and resize boards (the timeline board moves by its title). ⌥ + arrows nudge the selection.
  • Edit text… on a selected board: the timeline’s title, lanes and rows, a screen’s pins, a pair’s change list, an architecture node. Renamed rows show in the Timeline too.
  • Sticky notes in four colours, from the ⋯ menu. Double-click one to write.
  • Hide a board (bring it back from ⋯ › Hidden boards), Lock one so a regenerate leaves it alone, or Revert a board’s edits.
  • Reorder pairs from the ⋯ menu.
  • Regenerate with note… on a screen redraws just that mockup with your instructions.
  • Undo / Redo: ⌘Z / ⇧⌘Z, or the buttons at the top right.

After a regenerate, an edit whose text the generator changed gets a Generator changed this badge: Keep mine or Use new, with both texts side by side. An edit whose target disappeared is listed under ⋯ › Orphaned edits, where text can come back as a sticky note.

History. ⋯ › Version history… (or Regenerate ▾ › History…) lists every version with its date, scope, tokens and model. Restore brings one back with your edits on top.


⋯ › Export…:

  • PNG of the current view, the selection or the whole canvas, at 1× or 2×.
  • PDF with the timeline, the map, then one page per screen pair with its changes, on Letter or A4.

Mockups export as their rendered thumbnails. If a thumbnail can’t be rendered (Playwright isn’t installed), that mockup exports as a labelled placeholder and the dialog says so. The Timeline view has its own PNG button.


For swarm projects, the PM sees your confirmed deadlines and milestones (“Qloo due Oct 30, in 24 days”) when it plans the run, when it revises the plan, and in its room summaries, and it is told to finish the nearest deadline’s work first. While the run builds, if the forecast slips past a confirmed deadline, a Schedule notice appears in the Console (and the operator is told). This is advice only: it never pauses or stops a run.


The Canvas view is on by default. To build the UI without it, set VITE_PROJECT_CANVAS_ENABLED=false before pnpm build (or in packages/ui/.env.local for a dev server). The Timeline is always available.

See the Project Canvas API for the endpoints behind these views.