Total CMS vs EmDash
EmDash is Cloudflare's open-source CMS — MIT licensed, built for Astro, and very well engineered. If you build in Astro it belongs on your shortlist. The real question is not features; it is where your content lives and what has to be running to serve it.
- Choose EmDash if you build in Astro and want the CMS inside the same deployment.
- Choose Total CMS if your site needs to run on ordinary PHP hosting, with any front end.
The short answer: these are different architectures for different builders. EmDash is a CMS built for Astro — the admin panel, the content runtime and the website ship as one application, and content lives in a database. Total CMS stores content as plain JSON files on whatever PHP server the site already uses, and works with any front end.
What EmDash has that we do not is a price of zero, an MIT license, and Cloudflare's engineering behind it. On extensions and agents, the two are closer than the headlines suggest. Both permission extensions by capability; EmDash goes further and runs sandboxed plugins in an isolated runtime. Both ship an MCP server in every install and cap an agent's token by what the approving user is allowed to do. They protect editors differently: EmDash uses revision checks and edit locks so an agent will not silently overwrite an editor, while Total CMS keeps a snapshot of every object before each save, so anything an agent changes can be traced and rolled back.
What actually separates them is the operating model. EmDash runs on Cloudflare Workers or a Node.js 22.16+ server, with a database and media storage you operate; its own documentation lists the database, backups, upgrades and the admin application as the team's responsibility. Total CMS needs PHP 8.2 and a folder: no database to back up, no process to keep alive, and content you can copy.
If you build in Astro and are comfortable operating a database, EmDash is the natural choice — it was designed for exactly that. Choose Total CMS when the site has to run on ordinary PHP hosting, when the front end is not Astro, or when you are handing a site to a client and want nothing running underneath it but PHP.
Which to choose
Where each one wins.
When to choose EmDash instead
EmDash is excellent software, and for many projects it is the right answer. Choose EmDash if:
- You build in Astro. EmDash is designed for exactly this: its docs describe the fit as an Astro site whose editors need an admin panel, with the CMS and the site in one deployment.
- Budget is the binding constraint. EmDash is free and MIT licensed, MCP server and all.
- You want everything on Cloudflare. Workers, D1 and R2 make the CMS and the site a single deploy on Cloudflare's network.
- Plugin isolation matters to you. Sandboxed plugins that declare the capabilities they need are a genuinely new answer to the CMS plugin problem.
- You are rebuilding a WordPress site in Astro. EmDash imports WordPress content and documents how WordPress concepts map across.
When Total CMS fits better
Total CMS is the better fit when:
- The site runs on ordinary PHP hosting. Including the shared hosting your client already pays for — no Node.js process to keep alive and no database to back up.
- You already have a front end. Hand-coded, from a web builder like Stacks, Pinegrow or Bootstrap Studio, or a framework reading the REST API. Total CMS works inside the pages you already have; it does not need to own the site.
- You want content you can copy. Plain JSON files on your server, in git if you like. Moving hosts means copying a folder.
- You are handing the site to a client. Access groups and a white-labeled admin are settings, and there is no infrastructure for anyone to maintain afterwards.
- You want support from the people who build it. Directly from the developer, through the forum and tickets.
Feature by feature
Total CMS vs EmDash, row by row.
| Feature | Total CMS | EmDash |
|---|---|---|
| More | ||
| License | Commercial, one-time, per domain | MIT open source |
| EmDash's MIT license permits commercial use, modification and redistribution with no fee. Total CMS is proprietary, source-available software requiring a paid license for production. | ||
| Price | $195 Standard / $395 Pro (one-time) | Free |
| The running cost of EmDash is your Cloudflare usage, or the Node.js server and database you run it on. | ||
| Updates included | 2 years | Free, always |
| EmDash is MIT licensed and its updates are free. A Total CMS license includes two years of updates, then converts to a perpetual license for the version you have; renewing is optional. | ||
| Hosting | Any PHP 8.2+ host | Cloudflare Workers, or a Node.js 22.16+ server |
| EmDash runs on Cloudflare Workers with D1 and R2, or as a long-running Node.js process with SQLite, libSQL or PostgreSQL. Its deployment guide asks for a Node.js hosting provider or a VPS. Total CMS runs on any host with PHP 8.2 or later. | ||
| Database | None, ever | Required — D1, SQLite, libSQL or PostgreSQL |
| The database holds the content model as well as the entries. EmDash's own docs list the database, media storage, backups, upgrades and the admin application as work the team takes on. | ||
| Content storage | JSON or Markdown files on disk | Database rows; media in R2, S3-compatible storage or on disk |
| Content in version control | Yes — content is files | No — content is in the database |
| EmDash's docs are direct about this: if all content must stay in the source repository, they point you to file-based Astro collections instead. | ||
| Backing up | Copy the folder | Database and media, plus a separately kept encryption key |
| EmDash's docs ask you to back up the SQLite file and the upload directory, and to keep EMDASH_ENCRYPTION_KEY in a separate recovery backup — restoring the database without it leaves encrypted plugin settings unreadable. | ||
| Templating | Twig 3, with 130+ custom filters and functions | Astro components (TypeScript) |
| Astro components control the HTML and design, and EmDash generates TypeScript declarations for your collections. A strong fit for teams already working in Astro. | ||
| Front-end integration | Any front end: Twig inside existing PHP pages, any web builder, or headless via REST API | Astro only, in the same application as the CMS |
| Total CMS can live inside a site you have already built — hand-coded or exported from a web builder: initialize it at the top of any PHP page and Twig tags render inside your own HTML, without it taking over routing or templates. Stacks users also get dedicated stacks for every content type. EmDash is built for Astro: the admin, the content runtime and the site ship as one application, and its docs say it is unlikely to fit a project not built with Astro. | ||
| Content modeling | JSON schemas | Collections and fields, edited in the admin |
| Administrators can add collections and fields while the site is running, and developers can export the model as a seed file and generate TypeScript types — a genuinely friendly workflow. | ||
| Admin interface | Included, server-rendered (HTMX) | Included, served by the Astro application |
| Users and permissions | Access groups out of the box | Five roles, Subscriber to Admin |
| EmDash uses fixed, hierarchical roles: Subscriber, Contributor, Author, Editor and Admin. Total CMS access groups are defined in the admin, per collection and per method. | ||
| REST API | Same-origin, every edition; external API keys (Pro) | Included |
| MCP server for AI agents | Built in — public read (Standard), full access (Pro) | Built in, free |
| EmDash genuinely competes here. Both servers ship with every install, and both cap a token by what the approving user's role or access groups allow. EmDash adds personal access tokens, a device flow, and revision tokens with edit locks so an agent will not silently overwrite an editor's work. Total CMS keeps a snapshot of every object before each save, so any agent edit can be traced and rolled back. | ||
| Scheduled tasks and webhooks | Built in (Automations, Pro) | Scheduled publishing and plugin tasks |
| On Node.js, EmDash's scheduler runs only while a server process is running, so at least one process must stay up in production. | ||
| Extension ecosystem | Growing, with a simple extension API | Sandboxed and native plugins, with a plugin registry |
| Both permission extensions by capability. EmDash goes a step further: sandboxed plugins run in an isolated runtime, a genuinely new model for CMS plugins. Total CMS's extension API is small enough that an AI coding agent can scaffold one from the starter repo, and each extension's capabilities are individually permissioned. A marketplace is planned. | ||
| Support | Direct from the developer (forum and tickets) | Open-source community |
| EmDash is developed in the open on GitHub. | ||
Questions
Common questions.
Is EmDash tied to Cloudflare?
No. EmDash is MIT licensed and documents a Node.js deployment with SQLite, libSQL or PostgreSQL and S3-compatible or local storage. Cloudflare is one of two supported deployment shapes, not a requirement.
Can EmDash run on shared hosting?
Generally no. EmDash needs Node.js 22.16 or later running as a long-lived process, or Cloudflare Workers, plus a database. Its own deployment guide asks for a Node.js hosting provider or a VPS. Total CMS needs PHP 8.2 and a folder.
EmDash is free. Why would I pay for Total CMS?
You are paying for a different operating model, not more features. If you build in Astro and are comfortable running a database, EmDash is free and very good — use it. If the site has to live on ordinary PHP hosting, or the front end is not Astro, Total CMS is the one built for that. And building costs nothing either way: Total CMS is free, with every Pro feature, on local development domains such as .test and .localhost, so you pay only when a site goes live.
Which is better for AI agents?
They are closer than you might expect. Both ship an MCP server in every install, and both cap an agent's token by what the approving user is allowed to do. They protect editors differently: EmDash uses revision checks and edit locks so an agent will not silently overwrite an editor, while Total CMS keeps a snapshot of every object before each save, so anything an agent changes can be traced and rolled back. In Total CMS, OAuth and agent writes are Pro. If agent tooling is your deciding factor, try both against a real project rather than taking either vendor's word for it.
Can I use Total CMS with Astro?
Yes, through the REST API — same-origin on every edition, and from another origin with API keys on Pro. The difference is that Total CMS deploys separately from the site rather than inside it.
Sources
Where these facts come from.
EmDash facts checked . Software changes, so check EmDash’s own site for their current details.
EmDash details verified from primary sources on 3 October 2026, against EmDash 1.0:
- docs.emdashcms.com — Why EmDash — who it fits, hosting and data, plugins, and reasons to choose another approach
- docs.emdashcms.com — Deploy to Node.js — Node.js 22.16, scheduler, sandbox runner, backups and the encryption key
- docs.emdashcms.com — MCP Server Reference — authentication, scopes, roles and revision checks
- docs.emdashcms.com — Migrate from WordPress
- docs.emdashcms.com — Plugin Sandbox
- github.com/emdash-cms/emdash — MIT license and source
EmDash is a trademark of its respective owner. We have no affiliation with EmDash or Cloudflare, and we have tried hard to represent it accurately — including where it is the better choice. If anything here is wrong or out of date, tell us and we will correct it.
Keep comparing
Weighing something else?
- Hosted vs self-hosted Before you choose between Squarespace and Webflow, or between Kirby and Craft, there is a bigger question underneath: do you want to rent a website platform or own the software that runs it? Here is how to decide, from someone with an obvious stake in the answer.
- The best flat-file CMS in 2026 Five flat-file content management systems worth your time, what each is genuinely good at, and where each one will frustrate you.
- A PHP CMS without a database Running a CMS with no MySQL sounds like a corner-cutting exercise.
- WordPress alternatives for freelancers If you build client sites for a living, the CMS decision is really a decision about the next three years of your evenings.
- Making a PHP app legible to AI agents Coding agents invent functions that don't exist because the app can't describe itself.
Try it against EmDash on a site of your own.
45 days, every Pro feature, no credit card.