A visual editor and an agent, editing the same tree.
Sites is an agentic-first web compiler. The visual canvas and the AI agent mutate one normalised flat-map AST through a single shared patch protocol, so neither can produce a state the other cannot read. The output is static React, backed by ordinary Git commits.
Text equivalent for screen readers
Most AI website builders bolt a language model onto an editor and let it generate code beside the canvas. The two then drift, and you end up with a file the editor cannot open and a canvas that has forgotten what the model did.
Sites has one mutation path. Whether a change originates from a drag on the canvas or a sentence typed to the agent, it becomes the same kind of patch against the same normalised tree. There is no import step and no reconciliation step, because there is only one representation.
One way to mutate.
The patch schema is not yet final, but the current shape proves the model. Every action is a discrete patch payload that the AST reducer consumes.
// The shape of a patch action
interface ASTPatch {
type: 'UPDATE_NODE' | 'INSERT_NODE' | 'DELETE_NODE';
nodeId: string;
payload: {
props?: Record<string, any>;
styles?: Record<string, string>;
children?: string[];
};
author: 'canvas' | 'agent';
timestamp: string;
}Static React
Sites outputs static React that scores 100 on Lighthouse performance out of the box. Measured on Vercel edge infrastructure without edge caching as of 4 March 2026.
Git Commits
Every change generates a clean, readable Git commit. Your site lives in your own repository, and you are never locked into an opaque platform database.
Bring your own keys
You supply your own model keys. Sites does not middleman your usage or read your prompts on our servers.
Local storage only
Keys stay strictly in the browser using IndexedDB. Every request goes directly from the client to the provider API.
Zero-setup guest bootstrap
A guest can start designing immediately without entering a key or creating an account, but generation is limited to trial models until an API key is provided.
The bridge to Orbit.
Sites does not just generate code. It emits a structured record into Orbit. The site, its components, the copy, the commit, the person, and the decision all become entities in the knowledge graph.
Sites is a satellite. Orbit is the core. Every satellite exists to feed the core.
{
"entity_type": "site_commit",
"id": "commit/a1b2c3d4",
"actor": "person/j.doe",
"decision": "Added pricing tier",
"components_mutated": ["component/PricingCard"]
}