Features
What RustyCMS does, point by point. Everything here is built and in production — no roadmap slides.
Model
-
Schemas without migrations
One JSON5 file in types/ and the collection exists — API, admin form and validation included. Field types, conditions, partials and rules in one file, hot-reloaded without a restart.
-
Type packs and inheritance
Maintain schemas once, use them in several sites. Three layers — repo, packs, site override — merged per field, not replaced per file.
-
Multilingual per field
localized: true on the field instead of one copy per language. One entry, each language as a branch — the API returns the requested language with fallback, writes go per language.
-
Schema migrations
Renamed a field? One migration file carries the change through every entry and every space. Dry run by default, applied migrations are recorded, localized fields stay intact.
Edit
-
A real admin UI
Forms, lists and the media browser are generated from the schema and run inside the same binary on the same port as the API. No second deployment, no Node process on the side.
-
Undo everything
Every write is recorded as a snapshot: field-level diff between two versions, one-click restore, and an audit log across all entries with who, when and what.
-
Scheduled publishing
Draft, published, archived — plus a date on which an entry goes live or disappears again. A background loop performs the transition with the same side effects as a click.
-
Full-text search
A built-in search index per collection, BM25 ranking, one parameter on every list endpoint. Combines with filters, locale-aware, no external search service.
-
Media management
Folders with defaults, editorial metadata on the image, phone uploads via a link, automatic downsizing on ingest. Renaming never breaks a reference.
Deliver
-
Image pipeline
Upload one original, request any size: resize, crop, focal point, AVIF/WebP by browser, blurhash placeholders. Two-tier cache, no image service on the side.
-
Draft preview
Signed short-lived links for drafts, live preview while typing, click the page to open the field. No login for the frontend, no second editor.
-
REST API
Every collection as a JSON endpoint: filter, sort, paginate, resolve references, count facets. ETags, batch lookups and an OpenAPI spec that knows your collections.
-
MCP, webhooks, metrics
AI tools read and write content through the built-in MCP server. Webhooks report every change to your frontend, Prometheus metrics show what the process is doing.
-
Access and keys
API keys with a role, collection and space scope. Users with the same limits, signed session cookies, origin-checked CSRF, login throttle. Anonymous callers only get what's published.
Extend
-
Many sites, one instance
Spaces keep content, assets, history and languages separate per site — on a single process. Create, duplicate, rename at runtime; schemas shared, API keys scoped per space.
-
Pull in external data
Map any HTTP JSON API to a collection through a schema — read-only, cached, in the same REST shape as your own content. Optionally as a time series with retention and backfill.
-
Plugins: comments, forms, redirects, wiki
Four optional building blocks, each compiled in individually with its own admin page: comments with moderation, form submissions, URL redirects, a hierarchical wiki. No marketplace, no runtime loading.
-
Three storage backends
Files, SQLite or Postgres — same API, same schemas, same test suite. You pick by how you operate, not by what you need, and switch later with a verified migration in either direction.
-
Runtime configuration
Frontend URLs, branding, feature flags and plugin settings live in one JSON5 file, editable through the admin UI, the API or the CLI. Hot reload in 300 ms, every change versioned, rollback with one click.
-
Export, backup, Git mirror
Schemas, content and assets out as one ZIP and back in again. Automatic backups per space with retention, a Git mirror of the content even in database mode. Your data stays in a form you can read without RustyCMS.
Want to see this on your own project?
Tell me briefly what you're planning. I'll show the admin UI on a real installation and say honestly whether it fits.
Request early access