Bring your site
Menu

Why we build on Astro and EmDash

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.

Three parts, one codebase

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.

EmDash

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.

Cloudflare

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.

How it compares

All three are good choices for the right site. Here’s where each one wins, including where ours doesn’t.

Traditional CMSAstro + headless CMSAstro + EmDash
What you pay for the CMSOften free, plus paid add-onsA monthly subscription per seat or by usageFree and open source
Where content livesYour databaseThe vendor’s serversYour database
EditingA familiar admin, tied to its themeA separate app, in a separate loginAn admin in the site itself
Plugin securityPlugins often run with full accessFew plugins, less riskPlugins run in a sandbox with declared permissions
AI agentsThrough add-onsVaries by vendorMCP server on every site
Plugins and ecosystemLarge and matureGood integrationsYoung and growing, the real tradeoff
People who know itPlenty of developersPlenty of Astro and React developersAny Astro developer, though few know EmDash yet
Best forSites that lean on a large plugin libraryTeams with a developer and a budgetBusiness sites and publications

Why it’s fast

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.

Why it’s safer

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.

Ready for agents, if you want them

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.

Reasonable doubts

Is EmDash mature enough for a business site?

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.

Do I need to use AI?

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.

Am I locked in to Cloudflare?

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.

Do you only build with EmDash?

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.

Bring your site.

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

Prefer to talk? Book a call