totalcms / cms
A modern flat-file CMS for PHP. Stores content as JSON instead of a database, with Twig templating, a REST API, a Site Builder, and a built-in MCP server for AI agents.
Package info
Type:composer-plugin
pkg:composer/totalcms/cms
Requires
- php: ^8.2
- composer-plugin-api: ^2.4
- algolia/algoliasearch-client-php: ^4.43
- bacon/bacon-qr-code: ^3.0
- cakephp/chronos: ^3.1
- cakephp/i18n: ^5.2
- cakephp/validation: ^5.0
- cocur/slugify: ^4.0
- dragonmantank/cron-expression: ^3.3
- embed/embed: ^4.3
- enshrined/svg-sanitize: ^0.22.0
- erusev/parsedown: ^1.8
- erusev/parsedown-extra: ^0.9
- fakerphp/faker: ^1.23
- fig/http-message-util: ^1.1
- firebase/php-jwt: ^7.0
- glenscott/url-normalizer: ^1.4
- guzzlehttp/guzzle: ^7
- halaxa/json-machine: ^1.1
- illuminate/collections: ^11.45 || ^12.0
- khanzadimahdi/uploadmanager: ^1.0
- laminas/laminas-feed: ^2.26
- league/commonmark: ^2.7
- league/csv: ^9.6
- league/flysystem: ^3.2
- league/fractal: ^0.21
- league/glide: ^3.0
- league/html-to-markdown: ^5.0
- league/oauth2-server: ^9.0
- league/uri: ^7.4
- mcp/sdk: ^0.7.0
- middlewares/trailing-slash: ^2.0
- monolog/monolog: ^3.2
- nyholm/psr7: ^1.8
- nyholm/psr7-server: ^1.0
- odan/session: ^6.1
- opis/json-schema: ^2.3
- php-di/php-di: ^7.0
- phpmailer/phpmailer: ^7.0
- selective/basepath: ^2
- selective/validation: ^2.0
- sentry/sentry: ^4.8
- slim/php-view: ^3.1
- slim/psr7: ^1.5
- slim/slim: ^4
- slim/twig-view: ^3.3
- symfony/console: ^7.4
- symfony/event-dispatcher: ^7.4
- symfony/polyfill-uuid: ^1.23
- symfony/property-access: ^7.1
- symfony/serializer: ^7.1
- symfony/translation: ^7.4
- tecnickcom/tc-lib-barcode: ^2.4
- totalcms/color-thief-php: ^2.5.0
- twig/cssinliner-extra: ^3.21
- twig/html-extra: ^3.21
- twig/inky-extra: ^3.0
- twig/intl-extra: ^3.22
- twig/markdown-extra: ^3.21
- twig/string-extra: ^3.21
- twig/twig: ^3.24.0
- web-auth/webauthn-lib: ^5
- webuni/front-matter: ^2.0
Requires (Dev)
- composer/composer: ^2.4
- friendsofphp/php-cs-fixer: ^3.0
- mikey179/vfsstream: ^1.6
- overtrue/phplint: ^9.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-faker: ^3.0
- pestphp/pest-plugin-type-coverage: ^3.0
- phpmd/phpmd: ^2.12
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^11.0
- rector/rector: ^2.1
- selective/test-traits: ^4.1
- spatie/pest-plugin-snapshots: ^2.0
- squizlabs/php_codesniffer: ^4.0
- symfony/var-dumper: ^7.1
- totalcms/pest-plugin-slim: ^4.0
- totalcms/slim-test: ^4.0
This package is auto-updated.
Last update: 2026-08-01 15:42:24 UTC
README
A modern flat-file CMS for PHP — no database required
Website • Documentation • Pricing • Free trial
About
Total CMS is a content management system built on PHP 8.2+ and Slim 4 that stores content as flat JSON files instead of in a database. There is no MySQL to provision, no migrations to run, and no plugin ecosystem to keep patched — content lives on disk, so it version-controls, backs up, and deploys like the rest of your code.
It is designed for web designers, freelancers, and agencies who want structured content and a polished admin for their clients, on any commodity PHP host.
- No database — content is JSON on disk; deploy by copying files
- 33 built-in collection types — blog, image, gallery, file, and more — plus unlimited custom schemas
- Twig templating — 89 custom filters and 49 functions on top of stock Twig 3
- Site Builder — add a page in the admin and it is live; no build or generate step
- REST API — full CRUD for headless use, with API-key or OAuth 2.1 authentication
- Built-in MCP server — exposes your site's collections and search to AI agents (Pro)
- Automations — schedule, webhook, and event-triggered handlers with a job queue
- Extensions — a register/boot lifecycle with capability-based permissions
- Admin interface — form builder with 20+ field types, media management, passkey login
- CLI (
tcms) — collections, schemas, objects, import/export, sync, and deploys - Image processing — on-the-fly resizing, watermarking, and OKLCH color handling
Requirements
- PHP 8.2+ (8.4 supported)
- Composer 2.0+
- Apache or Nginx with URL rewriting
- PHP extensions: GD or ImageMagick, JSON, Fileinfo, OpenSSL
No database server. No Node.js runtime in production.
Installation
composer create-project totalcms/totalcms mysite
cd mysite
Point your web server's document root at public/, then open the site in a browser — the
setup wizard handles the admin account, data directory, and license from there.
The installer also offers a subpath layout, which serves Total CMS from /tcms/ and leaves
public/ free for your own frontend build. See the
Installation Guide for web server
configuration.
Twig templates
{% for post in cms.collection.objects('blog') %}
<article>
<h2>{{ post.title }}</h2>
{{ post.content|markdown }}
</article>
{% endfor %}
See the Twig documentation for the full filter and function reference.
CLI
vendor/bin/tcms collection:list vendor/bin/tcms jumpstart:export backup.json vendor/bin/tcms cache:clear vendor/bin/tcms deploy
For AI agents
Total CMS is built to be worked on by coding agents:
- llms.txt and llms-full.txt — the complete documentation in one fetch
- Agent skill — installed into
.claude/skills/automatically oncomposer install, covering collections, schemas, the CLI, and the Site Builder workflow - Built-in MCP server — point an agent at a live site to query its collections and schemas directly (Pro edition)
Documentation
Full documentation is at docs.totalcms.co.
Support
License
Total CMS is commercial software. A license is required for production use. See LICENSE.md for terms.
Free 45-day trials are available — no credit card required. Visit totalcms.co for details.