Astro
What visitors get
Pages arrive as finished HTML. JavaScript loads only for the parts that need it, like a form or a menu, so the rest of the page has nothing to wait for.

A CMS that lives inside your Astro project, so there’s one thing to run. It’s also young, and this page tells you where that matters.
What visitors get
Pages arrive as finished HTML. JavaScript loads only for the parts that need it, like a form or a menu, so the rest of the page has nothing to wait for.
What your team edits
An open-source CMS built for Astro. Posts, pages, media, menus, drafts, revisions and scheduling, in one TypeScript codebase with the site.
Where it runs
Workers serves pages from data centers close to each visitor. Content sits in a D1 database and media in R2 storage, all in your own account.
All three are good choices for the right site. Here’s where each one wins, including where ours doesn’t.
| Traditional CMS | Astro + headless CMS | Astro + EmDash | |
|---|---|---|---|
| What you pay for the CMS | Often free, plus paid add-ons | A monthly subscription per seat or by usage | Free and open source |
| Where content lives | Your database | The vendor’s servers | Your database |
| Editing | A familiar admin, tied to its theme | A separate app, in a separate login | An admin in the site itself |
| Plugin security | Plugins often run with full access | Few plugins, less risk | Plugins run in a sandbox with declared permissions |
| AI agents | Through add-ons | Varies by vendor | MCP server on every site |
| Plugins and ecosystem | Large and mature | Good integrations | Young and growing, the real tradeoff |
| People who know it | Plenty of developers | Plenty of Astro and React developers | Any Astro developer, though few know EmDash yet |
| Best for | Sites that lean on a large plugin library | Teams with a developer and a budget | Business sites and publications |
A traditional CMS builds each page on a server for every visit, then loads scripts for every plugin. An Astro page is finished HTML, and only the parts that need JavaScript load any. In field data, 67% of Astro sites pass Core Web Vitals. Hosted builders like Wix and Shopify score higher still, so speed alone isn’t the reason to choose us. Speed plus ownership is.
Plugins are the usual way into a CMS site, because a plugin can often reach everything. An EmDash registry plugin runs in its own sandbox and gets only the permissions it declared and you approved. Sandboxing needs the Cloudflare Workers Paid plan, or workerd on Node.js. Native plugins run in the main process, so we keep those to code we’ve written or reviewed.
Every EmDash site comes with an MCP server, so Claude, Codex or Cursor can draft, edit and schedule content with the same permissions as a person on your team. We also add AGENTS.md and project skills to your repository. Prefer to keep AI out of it? It’s optional.
For a marketing site, publication or company blog, yes. It’s also young, with a small plugin ecosystem and fewer people who know it than older CMSs. That’s why the audit comes first: if your site depends on something EmDash can’t do yet, we’ll tell you.
No. The admin works like any CMS. The MCP server is there if you want an agent to draft, edit or schedule content, under the same permissions as a person on your team.
No. EmDash also runs on any Node.js server with SQLite, PostgreSQL or libSQL and S3-compatible storage. Cloudflare is our default because it’s fast and cheap to run, and the plugin sandbox enforces tighter limits there.
It’s our default, not a rule. A site that rarely changes may not need a CMS at all, so plain Astro is the better fit. If you’re already on Sanity or another headless CMS, we can build the Astro front end on top of it.

Send us the address. We’ll rebuild your homepage in Astro for free, and tell you what the rest would take.