Skip to content
Cadelic

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.

Hero, selected
VISUAL CANVASAI AGENTPATCH PROTOCOLNORMALISED AST
Figure 1. Symmetry of agency. The canvas and agent both write patches against one tree.
Text equivalent for screen readers
A diagram showing two inputs: Visual Canvas and AI Agent. Both point to a single process: Patch Protocol. The Patch Protocol points to a Normalised AST, which then outputs to Static React.

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.

typescript
// 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.

json
{
  "entity_type": "site_commit",
  "id": "commit/a1b2c3d4",
  "actor": "person/j.doe",
  "decision": "Added pricing tier",
  "components_mutated": ["component/PricingCard"]
}
Email/Slack ingestionWorking
Sites patch protocolWorking
Sites to Orbit bridgeWorking
Managed cloudIn build
SOC 2 Type IPlanned
BYO keys on CloudPlanned