Editing and publishing
The editor your team asked for.
Writers, merchandisers and support teams get forms built from your schema, with drafts, scheduled publishing and version history: the admin panel you'd otherwise build. Your code and your agents work on the same records, under the same rules.

Made for the writers.
No tickets, no deploys.
Every field gets the input it deserves: rich text with the marks you expect and images from your assets, relations that search as you type, and a file picker. When it's ready, they hit Publish.
Fields, not forms
Typed fields, each with its own input: dates get a picker, relations get a search, assets get a file picker. Add one and every editor sees it in the next reload.
Publish when it is ready
Publish now or at a set time. Changes to a live page wait in a draft until you merge them, now or on schedule, and every publish is in history with a name and a time.
Records
Every entry at a glance
Published and unpublished records side by side, with cover thumbnails, revision numbers and when each one was last touched. Search, filter, select and act on many at once.
- Search records, and filter by status or by any field
- Bulk publish, unpublish, delete and restore
- New records start unpublished; publish them now, or schedule it

Search
Anything, one keystroke away
Press ⌘K (Ctrl+K on Windows) anywhere in the editor to find a record by its words, or jump to a collection or a page.
- Records from every collection, ranked as you type
- Collections and settings pages by name
- The same search as your API and your site
History
Every change, on the record
Each save is a revision: who made it, through which client (the editor, the CLI, an SDK, an API key by name) and, when a note was left, why. Nothing about a record is ever a mystery again.
- Diff any two revisions field by field, with word-level highlights for rich text
- Revert to any revision in one click, even across a field migration
- Redact values that should never have been saved; the activity log keeps the who and when

Eleven field types, one editor
Text, long text, rich text, integer, decimal, boolean, date (with or without a time), enum, asset, relation and JSON. Text can be an email, a URL or a slug, and values can be unique. Each field takes the options it needs: required, multiple values, allowed values, ranges, lengths, the files an asset field accepts, the collection a relation points to. Drag to reorder; records are edited in that order.
Stable keys, recorded changes
Slugs and field keys stay put when labels change, and a renamed key keeps answering to its old name for six months, so a rename never breaks a client. Every schema change is written to the collection's own history, and the JSON and TypeScript shape beside the fields is exactly what the API sends.

Migrations
Change a type without a maintenance window
Turning text into integers, single values into lists or an optional field into a required one rewrites records, so it runs as a migration you preview first, in the editor or from the CLI.
- A dry run lists every record: converted (before and after), cleared, or cannot convert, with the reason
- Runs in the background; the collection is read-only until it finishes, everything else keeps flowing
- Old values stay in history, so a migration is never the end of the story
Assets
One library for every file
Drop files on the Assets page, into a field's picker or into rich text, and see where each one is used before anyone deletes it.
- Alt text written once, beside the image
- Video, audio and any other file too
- Deleted files restorable for 30 days

Safe by default. Recoverable by design.
People, scripts and agents work on the same records at the same time. Nobody's work gets lost along the way.
A role for everyone. Owners, admins, developers, editors and viewers: each person sees and changes only what their role allows.
Two people, one record. The later save never replaces the earlier one, whoever made it: the editor, a script or an agent. It is refused and shows what changed.
Deleted isn't gone. Records, fields, collections and assets come back for 30 days, unless a file is purged early to free its storage.
Leaving is one command. Export writes plain files: the schema, your records, your assets and, if you ask, the full history.
If-Match), the CLI (--if-revision) and the MCP tools work the same way.See it with your own data.
Create a collection from a template, add a few records, and open the history panel. It takes less time than reading this page did.