early access open · MIT licensed · launching soon

The headless CMS
you actually own.

Self-host the MIT-licensed, Go-native engine free forever. One ~45 MB image, real SQL tables on PostgreSQL, MySQL, or MSSQL. Add a license key to switch on any of 49 plugins. No lock-in, no phone-home, and no surprise bill.

Built for indie devs, bootstrapped SaaS, and teams who'd rather own the stack than rent it.

Be the first to know · No spam · Unsubscribe any time

Dockerfile
# One image. Free without a key, paid with one.
FROM ghcr.io/lyeve/cms:latest

# Optional: sets which plugins activate at boot
ENV CMS_LICENSE_KEY=cms_live_xxxxxxxxxxxx

That's the entire upgrade path. Rebuild and restart. Done.

~45 MB
Docker image
~80 MB
idle RAM on $5 VPS
<200 ms
cold start
49
plugins, one image
MIT
open-source engine
Go
runtime
Product preview

A content layer your team will love using

Visual schema builder. Instant REST and GraphQL. A content editor that feels like the admin you'd build yourself, packed into one ~45 MB image.

Schema Builder

Visual schema editor with field types, relations, and indexes.

Content Editor

CRUD records with search, filtering, and status workflows.

Media Library

Upload, browse, and manage files with S3 or local storage.

One ~45 MB image, every plugin compiled in

All 49 plugins ship inside one image. Your license key decides which ones turn on at boot. No sidecar, no CDN download. It idles around 80 MB, cold-starts in under 200 ms, and runs fine on a $5 VPS.

Real SQL tables

Every collection becomes a real table, not a JSONB blob. Query it with plain SQL, index anything, and dump it with your database's own tools. The same schema runs on PostgreSQL, MySQL, or MSSQL.

MIT engine, always free

REST API, schema builder, RBAC, MFA, drafts, revisions, locales. All MIT licensed, all complete, free for as long as you run it.

License-activated by one env var

Add CMS_LICENSE_KEY to your env. The JWT decides which compiled-in plugins activate. No sidecar, no CDN download, no operator.

From zero to CMS

Running in three steps.

No account, no signup, no cloud console. Pull an image, point it at your database, and you have a CMS. Paid plugins are one env var away.

1

Pull the image

docker run ghcr.io/lyeve/cms, point it at PostgreSQL, MySQL, or MSSQL, and you have a running CMS. No account, no signup.

2

Build your content

Design schemas in the visual builder and they turn into real SQL tables, with an auto REST API, RBAC, drafts, and locales. All free, all yours.

3

Activate plugins

Add CMS_LICENSE_KEY and the key unlocks the plugins you bought, like GraphQL, AI, SSO, and S3. No redeploy, no sidecar, no CDN download.

MIT core · always free

The free tier is a real CMS, not a teaser.

No trial period. No feature degradation. The core never expires. You get a production-grade CMS before spending a cent.

REST content API

Full CRUD, cursor pagination, filtering, full-text search. Auto-generated from your schema.

Visual schema builder

Drag-drop canvas with pan/zoom, all field types, belongs_to / has_many / many_to_many relations.

RBAC + ABAC permissions

Role-level and policy-level access control. Field-level masks per role.

Realtime SSE stream

Stream live content events per schema. Backpressure-safe, 1000 concurrent clients per replica.

Drafts + publish workflow

Per-record _status column, revision history, single-tenant or multi-tenant safe.

Localization (i18n)

Per-record _locale column, sys_locales table, content reads scoped by header or query param.

Local media + image proc.

Local filesystem driver out of the box. Stdlib JPEG/PNG resize. Add S3 plugin later if you need it.

OAuth 2.0 / OIDC + MFA

Google and GitHub PKCE, JWKS validation, TOTP with backup codes. All in the free engine.

PostgreSQL / MySQL / MSSQL

Single dialect adapter. One codebase, three databases. Pick the one you already run.

CLI toolchain

cms schema export / apply, migrations, seed, generate. Full schema-as-code workflow.

Audit log + observability

Every mutation in sys_audit_log. OpenTelemetry tracing, Prometheus metrics, JSON logging.

Cron + scheduled jobs

sys_jobs table + cron scheduler. POST any URL on a schedule with a JSON payload.

License-activated · one ENV var

49 plugins. One image. Pay only for what you switch on.

Every plugin is its own monthly subscription, priced by how much it takes to build, from $0.25/mo. Stack them and save: 10% off at two plugins, up to 30% off at six. The whole catalog, all in, is $19.95/mo. One image ships them all, and your license key decides what switches on. You get a 7-day offline grace and a 7-day cancel grace, and your data is never touched.

GraphQL API
$1.50/mo
AI Content
$1.50/mo
Full-text Search
$1.50/mo
SAML SSO
$3.00/mo
Multi-tenant
$3.00/mo
Web App Firewall
$1.50/mo
Browse all 49 plugins →
Dockerfile
FROM ghcr.io/lyeve/cms:latest

# Always required
ENV DATABASE_URL=postgres://...
ENV JWT_SECRET=change-me-32chars

# Add this to activate paid plugins
ENV CMS_LICENSE_KEY=cms_live_...
Security by default

Hardened on day zero

Argon2id, MFA, RBAC, audit log, signed webhooks, JWT rotation. None of these live behind a paid tier. They ship with the free engine.

Argon2id password hashing (OWASP-tuned params)
API keys hashed with SHA-256, never stored in plaintext
JWT HS256 with ParseMulti key rotation support
RBAC + ABAC dual permission layers
TOTP / MFA with encrypted backup codes
Per-IP rate limiting (sliding window)
IP allowlist / blocklist (CIDR ranges)
Audit log that records every mutation
HMAC-SHA256 outbound webhook signatures
Ed25519-signed license JWTs
HTTP-only session cookies
Security headers on every response

Found a vulnerability? Email [email protected] rather than opening a public GitHub issue.

Side by side

Built in Go. Not Node.

Around 80 MB idle, against 400 to 500 MB for Strapi, Directus, and Payload. Here's where we win, where we tie, and where they still beat us.

Feature LyEve ← youStrapiDirectusPayload
RuntimeGoNode.jsNode.jsNode.js
Engine licenseMITMITBSL 1.1 ⚠MIT
REST API✓ free✓ free✓ free✓ free
GraphQL$1.50 /mo✓ plugin✓ free✓ free
gRPC$1.00 /mo
Multi-tenant$3.00 /momanualmanualmanual
Per-plugin pricing
Volume discountup to 30% off
Indie / OSS discount✓ program
MFA / TOTP✓ freecloud only
Audit log✓ freeenterprisepartial
Idle RAM (est.)(Approximate at idle)~80 MB~500 MB~400 MB~400 MB
Container size~45 MB~320 MB~220 MB~180 MB
License activationENV vardashboarddashboardN/A

⚠ BSL 1.1 = Business Source License. Not OSI open source; converts to MIT after 4 years.

Container size and RAM estimates are approximate at idle with a minimal schema. Actual usage varies.

Full plugin-by-plugin feature comparison →
Performance

Built for a $5 VPS.

Side by side with Strapi, Directus, and Payload. Click any bar to read the methodology behind it.

Idle RAM

Empty database, no traffic, default config.

6.3× lighter than the heaviest competitor
  • LyEve
    LyEve
    80MB
  • Strapi
    500MB
  • Directus
    400MB
  • Payload
    400MB

~80 MB

idle RAM

on a $5 VPS

< 50 ms

p99 REST + GraphQL

at 1000 RPS

< 100 ms

plugin activation

in-process, no subprocess

Full methodology + per-endpoint targets →
Payments

Pay securely with PayPal.

Checkout is handled end to end by PayPal. Pay with your PayPal balance or any major credit or debit card. We never see or store your card details. Both subscriptions and one-time purchases work, and you can cancel anytime from the customer portal.

More payment methods are on the roadmap.

Transparent progress

What's done. What's next.

v1.0 is live. Billing, licensing, and the customer portal are in production. Below is the unedited list of what's done and what's next.

Shipped and live

  • Core CMS: REST API, schema builder, RBAC, MFA, drafts, locales
  • OAuth (Google and GitHub) plus TOTP MFA, in the free engine
  • DB-backed plugin catalog: 49 plugins in one image
  • GraphQL, gRPC, AI, full-text search, SAML SSO, multi-tenant, WAF, backup, and more
  • Ed25519 license issuance with JWT-gated plugin activation
  • À-la-carte billing through PayPal: subscriptions and one-time orders
  • Customer portal for billing, license keys, and instances
  • Ops console with a live catalog editor, MRR, and signups
  • One codebase across PostgreSQL, MySQL, and MSSQL
  • 7-day cancel grace and 7-day offline grace

Coming next

  • 26 more plugins already built, hardening toward GA (see /plugins)
  • Managed cloud hosting (today it is self-host only)
  • Extension marketplace for third-party plugins
  • Collaborative editing (CRDT)
  • Edge / Cloudflare Workers runtime
  • goreleaser single-binary distribution

Known limitations, written down before you ask

-No managed cloud hosting, so you self-host it
-Extension marketplace for third-party plugins not live yet
-26 newer plugins are "Soon", built, not yet GA
-No Cloudflare Workers / edge runtime support
-No collaborative editing (CRDT required)
-Admin UI dark mode polish still pending
Pure à la carte · stack to save up to 30%

Three carts to start from. Edit any of them.

Indie maker, multi-tenant SaaS, or all-in. Each preset is just a plugin cart underneath. Change one click and the price changes with it.

Free

$0forever
  • Full REST + admin UI + RBAC
  • All system features (drafts, MFA, locales)
  • PostgreSQL / MySQL / MSSQL
  • Self-host on any VPS, K8s, or laptop
Pull the image

Indie maker

$1.75/mo · 2 plugins · -10%
  • GraphQL + SMTP
  • Cart discount applied
  • Apply for community discount
  • Lightest paid bundle
Join waitlist
Most popular

Multi-tenant SaaS

$4.46/mo · 4 plugins · -20%
  • GraphQL + Multi-tenant + S3 + SMTP
  • Resell CMS-as-a-service
  • Email support (48 h)
  • Most common cart at scale
Join waitlist

All in

$19.95/mo · every paid plugin · -30%
  • Every paid plugin we ship
  • Maximum cart discount
  • Priority support (24 h)
  • Best $/feature ratio
Join waitlist

Open the live cart with volume discount →

Be the first to run it.

Self-hosted. MIT core. Written in Go. Stored in real SQL tables. Your data, your infrastructure, your rules.

Join the waitlist → Star on GitHub

No spam · launch notification only · unsubscribe any time