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 && docker compose up

This page ships zero JavaScript. Turn it off — nothing changes.

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.

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.