One source of truth — for your agent <em>and</em> your client.
Building with AI and handing the site to a client? You build it with an agent, host it, and your client edits it in the browser — without becoming their tech support.
Primo is the only CMS where the files your agent edits and the page your client edits are the same source of truth. That sounds like a small technical detail. It quietly dismantles a tradeoff every other tool forces on you.
Every tool makes you pick a compromise
Every way of building a website today asks you to give something up.
Build with a framework like Next or Astro and your content lives in code: fast, fully custom, version-controlled, yours. But it's locked to people who own a terminal. The moment a client needs to change a price or fix a typo, it's a dev ticket — or a deploy.
Reach for a headless CMS and you get editable content back, but your schema now lives in someone else's admin, split from the code it describes. Your developers work in one place, your content model in another, and an API sits in the middle translating between them.
Or use WordPress, or a site builder. Now anyone can edit — but your content's tangled in PHP themes, or you're renting the result on a platform you don't control, building on someone else's terms with someone else's lock-in.
Three roads, three compromises: editable but not yours, yours but not editable, easy but rented. For as long as we've built websites this way, that tradeoff has felt like a law of nature. It isn't.
Primo collapses it
Your entire site — components, pages, content, config — lives as plain files and database rows in your own repo. Your agent edits the whole codebase the way it would in any framework. Your client edits the same site visually, in the browser, right on the rendered page. There's no API in the middle and no second copy to keep in sync, because the code your developer writes and the surface your client clicks are the same source of truth.
Structured — page types, typed fields. Fully custom — it's just Svelte. Fast — static by default. Self-hosted and MIT-licensed — actually yours. And editable by your whole team. You stop picking which one you're willing to lose.
Why it exists
I started Primo in 2019 for a selfish reason: every client project ended the same way. I owned the code, the client owned nothing, and every small edit came back to me as a ticket. I wanted a way to hand a site off without handing off the code — and to keep the code without stranding the person who has to live in the site every day.
Agents are just a new editor
Seven years later, that same model turned out to be exactly the shape AI agents want. Point Claude Code, Cursor, or Codex at the repo and they build across the whole site as files — then your client picks up where the agent left off, editing in the browser. We didn't bolt agents on. They're a new kind of editor for a system that already treated files as the truth.
That's why Primo exists. Not to be one more CMS in the list — to end the tradeoff the list is built on.