Skip to content
Alpha The designer is real and runs today. Persistence and publishing are not built yet — read exactly what is missing
Agents

Built so a program edits the same way you do.

The architecture is finished and the surface is not. This page separates the two: what is true today is a property of shipped code, and everything marked planned has no implementation behind it.

Actions in the set today
6
Senders wired
2 of 3
Undo histories
1
Endpoints an agent can call today
0
Shipping today

The reducer is already the API.

There is one dispatcher and every edit goes through it. Dragging a box, typing a number in the inspector, applying markup in the code pane and placing a preset are four gestures that produce the same small set of actions — because the alternative, a canvas that mutates the tree directly, is what makes a code pane impossible to write in.

That decision was made for the two-mode editor, and it happens to be the entire precondition for a programmatic surface. An agent does not need a parallel write path; it needs the one that already exists.

  • One action set for people and for programs.
  • One undo history, so a machine edit reverts like a human one.
  • One serialiser, so what an agent writes is what the code pane shows.
The action set shipping today
Action Payload What it does
move { id, x, y } Place a node at a coordinate
resize { id, box } Set width and height, per breakpoint layer
setText { id, text } Replace a text node
addClass { id, name } Append to an element class list
insert { parent, node, at } Add a node at an index
setCss { css } Replace the project stylesheet
canvas → dispatch() and code → dispatch() both run today. agent → dispatch() is the one line of this page that does not exist.
Bolting an API on afterwards

A second write path into the document

  • A second vocabulary, kept in step with the editor's by hand.
  • A second history, or machine edits that land outside undo.
  • A second serialiser, so the code pane and the API can disagree.
  • Every new editor feature has to be implemented twice.
Dispatching into the one that exists

The path the canvas already uses

  • One action set, for people and for programs.
  • One undo history, so a machine edit reverts like a human one.
  • One serialiser, so what an agent writes is what the pane shows.
  • A new editor feature is an action, and the agent has it too.
01Not built

What is planned, stated as planned.

Three pieces. None of them exists yet; each is described so the shape can be argued with before it is written.

01 Agent access Planned

A scoped, workspace-keyed way to dispatch into a project's document from outside the browser. The intended shape is the action set above, unchanged — not a convenience layer on top of it, because a second vocabulary is a second thing to keep in step with the editor.

Tenancy is the part that is already settled: every durable object hangs off workspace_id, and row-level security is enabled on every table, so an access token is scoped by the same rules a browser session is.

02 An MCP server Planned

The workspace exposed as tools to an external client: list projects, read a page, place a section, assign a class, apply a stylesheet, open a preview. The tool list is deliberately close to the panel list — an agent that can do more than the UI is an agent whose output nobody can inspect.

This depends on document persistence, which is itself unbuilt. An MCP server against an in-memory document that dies with a browser tab would be a demo, not a feature.

03 Review and undo Planned

An agent edit should arrive as an ordinary history entry — visible on the canvas, revertible with ⌘Z, attributable in the revision table that migration 0005 already defines. The failure mode to avoid is a machine edit that lands outside the undo stack, where the only way back is a backup.

Publishing stays a separate, explicit act for the same reason blocks are copied rather than live-bound: nothing automated should be able to change what a client's visitors see without somebody saying so.

The proposed tool list planned · none of this exists
Tool The panel it corresponds to Access
list_projects The projects screen Read
read_page Opening a page in the designer Read
place_section The Add panel Write
set_classes The inspector class field Write
apply_stylesheet The Theme panel Write
open_preview The Preview button Read
Deliberately close to the panel list. An agent that can do more than the UI is an agent whose output nobody can inspect — and the middle column is how that constraint is enforced rather than merely stated.

Argue with the shape before it is built.

The architecture is finished and the surface is not. If the tool list above is wrong, now is the cheap time to say so.

Deployed with Astro and Comlumen