> product // flare-cms // the making of
Flare CMS
how it was made.
Flare CMS was built to answer questions we couldn't answer any other way: what should an AI-native CMS actually be, and what does a design system need to guarantee before an agent can drive it? It worked well enough that we stripped it back to a publishing skeleton, called it done, and put the real answers into AgentPress.
The short version
It started on a Sunday afternoon in March 2026 as a spec file: a `<!--flare: name -->` marker syntax and a full architecture diagram. Nine days later it had auth, multi-tenancy, an inline editor, a media library, AI-generated pages via Google Stitch, a Cloudflare Workflow pipeline, a colour wheel, a research dossier step, an MCP server, subdomain routing, and three demo sites. Then, on day ten, we stripped most of it back out.
The point was never to sell it. It was to find out where AI page composition breaks, what a shared design system has to guarantee, and when a human approval step is load-bearing. Every answer went straight into AgentPress. Flare CMS was the homework. The homework is done.
// the build log · mined from the commit history, nothing dramatised
A marker syntax and an architecture
Day one was two commits: a `<!--flare: name -->` marker spec and a concept architecture, with a demo site wired in to prove the idea was real. No running code yet, just a clear shape to build toward.
Worker scaffold, auth, editor v4
Eleven commits landed: Worker scaffold, R2 seed data, serve pipeline, better-auth with D1, a multi-tenant architecture, and an inline contenteditable editor using the native Popover API. Phase 1 through Phase 3 shipped before the day ended, with the SESSION.md updated to say 'ready for dogfood.'
From 'it works' to 'it's actually usable'
Twenty-one commits in one day. Auto-save, drag-and-drop images, a media library, rich CSS style controls, section templates, a context-aware right-click menu, and a redesigned editor from sidebar to thin top bar. Five bugs fixed from dogfood, including one that was destroying page styles on save.
Stitch, workflows, and the full wizard
Google Stitch came in for AI page generation. A Cloudflare Workflow replaced `waitUntil` for the long-running pipeline. A wizard was built, then rebuilt, with persistent state that survived tab close and device switch. The research dossier step, search grounding, AU business writing guidelines, and a colour wheel with palette harmony all landed in two days. The MCP server got a proper SDK rewrite with OAuthProvider and Streamable HTTP transport.
Single-call generation and Container experiments
Auto-linked navigation between pages after generation, subdomain resolution for site serving, and a Cloudflare Container for long-running Stitch API calls. The goal was matching Stitch's own UI behaviour, homepage-first generation with shared header and footer injection. Stitch timeout stretched to five minutes for multi-page single-call runs.
Direct CLI preferred, key rotation disabled
Three commits that tell the real story: a `/build-website` skill brief, build-website learnings (direct Stitch CLI, exact brand colours), and key rotation disabled because direct CLI calls were simply better. The platform was teaching us what mattered.
Back to basics
One commit: 'Strip Flare CMS to publishing + editing only, add CLI.' The AI generation pipeline, wizard, research dossier, colour wheel, all removed. What remained was a clean publish-and-edit platform. The experiment was over; the learnings were captured.
git log: “Strip Flare CMS to publishing + editing only, add CLI”
Day ten. Everything the lab was built to test had been tested. This commit is the whole story in one line.
// the roads not taken
Tried, measured, set aside: the judgement lives here as much as in what shipped.
The full AI generation wizard
Stitch integration, wizard v2, research dossier step, colour wheel, and the Cloudflare Container for long-running generation were all removed in one commit on Mar 25. The questions they answered were answered: there was no reason to maintain the scaffolding.
Editor sidebar → thin top bar
Editor v4 shipped with a full sidebar. Editor v5, the next day, replaced it with a thin top bar. The sidebar pattern was wrong for inline editing and the commit record shows the decision was made and executed same session.
Stitch key rotation
'Disable Stitch key rotation (direct CLI calls preferred)': sometimes the right answer is the simpler one, and the commit log records the moment we admitted it.
Want something built like this?
This is how we work: in the open, measured, honest about the dead ends.