Auto Install
Installs into your existing codebase
One command detects your framework and store, writes the registry and fallback, and leaves the first key rendering.
✓Two questions asked; the store is detected, never asked.
The launch set, grouped by what it does for you — every entry ships free, and works across every site you run.
Installs into your existing codebase
One command detects your framework and store, writes the registry and fallback, and leaves the first key rendering.
✓Two questions asked; the store is detected, never asked.
Finds the copy your site already has
Finds the copy already in your components and adopts it — the rewrite touches only the leaf, printed as a diff first.
✓--write is opt-in; callers never change.
Start without a database, add one later
Snapshot-only with no database, or plain Postgres in your own instance.
✓Four adapters pass one conformance suite.
Works with Next.js, React, Astro and more
First-class Next.js, React and Astro; every other host reads the same committed bundle; a Python reader ships.
✓The read bundle is a plain key→value map.
Bring your content over from another CMS
One mapping file over your JSON or CSV export.
✓Per-CMS recipes, no connectors to break.
Your editor autocompletes every copy key
Every string is a typed key — a wrong key is a compile error, not a blank space in production.
✓Keys generate into your types.
Fix a typo in seconds, no build needed
Publishing is a database transaction, not a build — the next request serves the new words.
✓One transaction; values immutable.
Every string has a backup committed in your repo
Every key has a committed fallback, so a missing value or unreachable database never breaks a page.
✓A read failure is an absence, never a page failure.
Undo any change in one click
Every publish is kept; revert restores any prior wording without losing anything.
✓Revert mints a new row; drafts untouched.
Guardrails on every field, checked at save
Character limits, a variable whitelist, advisory fit budgets — checked before anything is stored.
✓Offline checks; hard limits reject, advisory warn.
Test copy in staging before it hits production
Each environment is a named store connection — never a copy of your data.
✓--env on every store command.
Preview exactly what will change before promoting
Staging to production with a dry run and conflict detection.
✓Writes drafts by default.
Set a date and time for any publish
Set the moment; the copy goes live without anyone awake.
✓publish_at on the row; your cron or Cloud's clock.
Changes wait for approval before going live
Every draft waits with its author recorded; approval is the publish.
✓Cloud adds roles and who-approves-what.
Send clients a preview link, no account needed
A signed, expiring link renders the draft in place — reviewers never need a seat.
✓24h expiry, server-verified, noindex.
Run all your sites and apps from one place
Every site and app you run, listed and edited in one workspace.
✓Each product is a project; the workspace file lists them and the dashboard and Cloud are its consoles.
Editing without touching code or layout
A plain-labels editing UI that mounts as components into your own app's chrome — your auth, your theme tokens, no separate admin site.
✓Editors touch words, never structure.
Editors change email text without breaking the design
Email copy as named slots on your own template.
✓Extraction gated by rendered-output equality.
Apply marketing rules so that your mail is always sent correctly
Marketing mail is blocked until the unsubscribe is in scope; a missing postal line warns.
✓Checked against the render path actually used.
Keep track of the contacts who are interested
Join and unsubscribe routes, consent provenance, a suppression list — in your own Postgres.
✓The list never enters git.
Send group emails to your customer list
Linted before it goes, with per-recipient send records.
✓A re-run tops up; it never double-sends.
Edit titles and descriptions like any other copy
The fields that decide how you appear are ordinary keys — versioned, publishable. Catches SEO mistakes before they go live: eight offline rules — missing descriptions, duplicate titles, over-length, canonical→noindex, markup-vs-content, alt text.
✓Reads two files, no network — runs on a fork PR.
Structured data that stays in sync with your pages
Markup bound to the keys that render on the page.
✓A binding to an unrendered key is an error.
Connect Claude or any agent over MCP
An MCP server with stet_* tools — assistants read and propose copy without screen-scraping your admin.
✓Same operations as the CLI; scoped tokens.
Scope your agent behind an approval wall, or allow it to yolo
Everything an agent writes is a draft with its author recorded; brand keys are locked entirely.
✓Draft-only default; agentPublish: false per key.
A full copy of your content lives in your repo
A complete, buildable copy of every string, at every moment.
✓Checked complete against the registry as a set.
One command removes stet and keeps your content
Writes everything back, exports history, removes the mount.
✓Part of the pitch, not a support article.
Free to self-host, with everything included
Self-hosted is the whole mechanism, not a trial — Cloud sells hosting, identity and review.
✓The site renders with stet off.