CaretCMS
A specification for an inline-editing CMS that asks you to model nothing first.
The mechanic
Section titled “The mechanic”Add data-caret to any element in your template. Log in. Click. Type. Saved on next render.
<h1 data-caret="pages::home::headline">Welcome to my site</h1>That’s the whole authoring API. The hardcoded text is the default until someone overrides it. Collections auto-create on first save — no schema files, no getEntry() boilerplate.
Read in this order
Section titled “Read in this order”These pages are written as a path. If you’re new, read them top to bottom — each builds on the previous.
Quickstart Install, tag an element, ship the first edit.
Inline editing Every option for the data-caret attribute.
Schemas Three sources — registered, dynamic, inferred.
Content Studio Structured editing at /admin/cms with history.
Dynamic collections New collections from the UI without redeploying.
Live collections Query CMS data through astro:content.
Storage adapters Filesystem, in-memory, Cloudflare KV, custom.
Authentication Sessions, CSRF, production hardening.
Configuration Every caret() option in one place.
Theming Studio chrome tokens and theme packages.
Deployment Node, Vercel, Fly, Cloudflare Workers.
API reference HTTP routes, mutation commands, responses.
Two-minute path
Section titled “Two-minute path”If you only have a few minutes, read the Quickstart and the Inline editing page. That covers 80% of what most projects need.