A CMS an agent can run — and a human can read.
Lightweight PHP. A measured 100/100 Lighthouse on the starter theme. A read+write API and an MCP control surface built on the same audited services as the admin.
$ git clone https://github.com/NimbusCMS/nimbus && cd nimbus
$ cp .env.example .env
$ docker compose up -d && docker compose exec app php bin/nimbus install
Or hand it to your AI agent — paste this:
Set up NimbusCMS for me: read https://nimbuscms.dev/llms.txt and follow it to clone and run it with Docker, then create a "posts" collection with one published entry and give me the local URL.
danmat.dev runs on NimbusCMS with no admin account at all — an agent operates the whole site over MCP.
Measured, not promised
0third-party runtime deps
Nothing to trust but PHP
Production runs on PHP 8.2 and the pdo/json/mbstring extensions. No third-party packages ship at runtime — there is no vendor tree to audit.
100/100Lighthouse · gated in CI
Performance is a release gate
Every release must clear a Lighthouse and page-weight budget in CI. A regression fails the build, so what ships can’t silently get slower.
~20klines of core PHP
Small enough to read
Read, audit, and fork the whole core in an afternoon — while it still ships a full admin, a JSON API, and an agent surface.
See it running
Live, on the same small core
Each card opens a live NimbusCMS install — the same core, with different collections, plugins and a theme of its own. Three sites, plus the blog plugin running on the restaurant. Poke around.
The Copper Table
A restaurant floor: live tables, kitchen tickets, orders and reservations, a public menu and online ordering. Sign in as any role to watch the capability model in action.
Open demo → GroceryFoodmart
An online grocery: inventory as the source of truth, a shoppable storefront with search, filters and availability, and a working cart through to checkout.
Open demo → Coffee shopFern & Kettle
A neighbourhood café site: menu, opening hours and story, rendered by a plain-PHP theme over the very same core.
Open demo → Blog pluginThe Copper Table Journal
The official Blog plugin on the restaurant demo: per-post SEO, an RSS feed and tag archives, and cross-posting to Dev.to and Hashnode driven over MCP.
Open demo →Built in
Everything a content site needs. Nothing it doesn’t.
Collections & fields
Define structured content — posts, menus, products — with plain field types and relations. Your schema, not ours.
Themes in plain PHP
Server-rendered templates handed a data-only view model. No build step, no client runtime.
Headless API /api/v1
Every collection is a scoped JSON endpoint with read/write tokens and optimistic-concurrency writes.
One rule-set, agents included
The admin, the API, and the agent (MCP) surface are three transports over one audited service layer — never a second set of rules.
Per-plugin agent guides
The CMS and each installed plugin ship their own guide, so a connecting agent knows how to drive every capability it touches.
Roles & scoped tokens
Per-collection permissions for people and tokens alike — subset-only, deny-by-default. Give an agent exactly the verbs it needs.