What is EmDash? Everything You Need to Know in 2026
EmDash is a new open-source CMS built on Astro and deployed entirely to Cloudflare's edge network. I built dashtro.com on it — no origin server, no PHP, no MySQL. Content lives in D1 (Cloudflare's serverless SQLite), media in R2 (object storage), and pages render at the edge through Cloudflare Workers. It launched in April 2026 and I've been building on it since day one.
This isn't a rehash of the launch announcement. I'll walk you through what EmDash actually does, how the architecture works, who should consider it, and where the honest limitations are at v0.1.
EmDash launched in April 2026 and I've been building on it since day one. This isn't a rehash of the launch announcement.
How EmDash works
EmDash is a full-stack TypeScript CMS. The frontend is Astro — server-rendered pages, component islands where you need interactivity, and zero JavaScript shipped by default. The backend is Cloudflare Workers, which means your API endpoints run at the edge in 300+ data centers worldwide.
Content is stored as structured JSON (Portable Text) in D1, Cloudflare's serverless SQLite database. This is fundamentally different from WordPress storing HTML blobs in MySQL, or static site generators storing markdown files on disk. Portable Text means your content is machine-readable, platform-independent, and can be rendered in any format without parsing.
Media files — images, documents, uploads — go into R2, Cloudflare's S3-compatible object storage. The admin panel handles uploads, resizing, and optimization automatically.
The admin panel
EmDash ships with a full admin UI at /_emdash/admin. You get a content editor, media library, taxonomy management, menu builder, plugin manager, and user management out of the box. Authentication is passkey-based — no passwords to leak, no session cookies to manage, no CSRF tokens.
The content editor uses Portable Text, which gives you structured blocks for paragraphs, headings, lists, images, embeds, and custom block types. It's not a visual page builder — it's closer to Notion's editor. You write structured content and your Astro templates control how it renders.
What EmDash includes out of the box
Here's what you get with EmDash that you'd normally have to bolt on separately:
| Feature | What it does |
| Admin panel | Full content editor with passkey authentication — no passwords |
| REST API | Exposes all content for external consumers and headless setups |
| MCP server | 33 tools for AI-native content management via Claude and other agents |
| Plugin system | Sandboxed Workers with explicit capability manifests — no ambient access |
| Full-text search | Built-in across all searchable fields, no third-party service needed |
| SEO tools | Meta tags, sitemaps, structured data, and Open Graph — all automatic |
| i18n | Internationalization built in — content translations without plugins |
| Media library | Uploads, resizing, and optimization backed by R2 object storage |
| Taxonomies and menus | Categories, tags, navigation menus, and widget areas out of the box |
| x402 payments | Native pay-per-page and subscription support via x402 protocol |
EmDash vs traditional CMS
The biggest difference is architecture. WordPress, Ghost, and most CMS platforms run on an origin server. You rent a VPS, install the software, manage updates, handle backups, configure caching layers, and fight with server-side performance. EmDash eliminates all of that.
There's no server to crash, no PHP to update, no MySQL to optimize. Deployment is git push — Cloudflare Pages builds and deploys automatically. Caching is handled at the edge by default because Cloudflare IS the host, not a CDN sitting in front of your server.
The security model is fundamentally different too. WordPress plugins have full access to your database and filesystem — 96% of WordPress security issues originate from plugins. EmDash plugins run in sandboxed Worker isolates with explicit capability manifests. A plugin declares what it can do (read content, send email) and can't do anything else. No ambient access.
Performance
This is where the edge architecture pays off. Cached pages load in 10-30ms from anywhere in the world. Uncached pages with D1 database queries come in at 50-150ms. For comparison, a well-optimized WordPress site on a good host typically delivers 200-500ms time-to-first-byte.
EmDash also scales to zero. When nobody visits your site, you pay nothing. Cloudflare Workers only charge for requests processed. A small site on the free tier costs literally $0/month for hosting. Try that with a VPS.
Who should use EmDash
EmDash is a strong fit if you're a developer comfortable with TypeScript and Astro. It's also a good fit if you're building for a client who needs a clean admin panel but you want modern infrastructure underneath. The admin panel is genuinely non-technical-friendly — the complexity stays in the code, not the content editing experience.
WordPress refugees who are tired of plugin vulnerabilities, performance hacks, and hosting complexity will find EmDash refreshing. But you need to be honest with yourself: EmDash is v0.1. The ecosystem is brand new. There aren't thousands of themes and plugins. If you need a specific WordPress plugin that does something specialized, you'll need to build that functionality yourself or wait for the ecosystem to grow.
What EmDash costs
EmDash itself is free and open source (MIT license). The hosting costs come from Cloudflare’s services — and for most sites, the total cost is $0/month :
| Service | Free tier | Paid |
| Workers | 100,000 requests/day | $5/month for 10 million requests |
| D1 | 5M rows read/day, 100K writes/day | $0.001 per 1M reads beyond free tier |
| R2 | 10 GB storage, 10M reads/month | $0.015/GB/month storage |
For a small to medium site — a blog, portfolio, business site, or content hub — you'll likely stay within the free tiers entirely. That's $0/month for hosting a CMS-powered website. The first time you exceed free limits, you're looking at $5/month total. Compare that to managed WordPress hosting at $25-50/month.
Current limitations
I’m building on EmDash because I believe in the architecture, but I’m not going to pretend v0.1 is perfect. Here’s what you should know (or read my full production-readiness assessment ):
- The ecosystem is brand new. Expect to build custom solutions where WordPress would have a plugin.
- Third-party themes are scarce. The official starter templates work, but you'll want to customize or build your own.
- Documentation is still growing. The source code is clean, but some features aren't fully documented yet.
- Community patterns and best practices are still emerging. You're an early adopter, not a late majority user.
The core is solid. The admin panel works well, the content API is clean, deployment is painless, and the performance is genuinely impressive.
That said, the core is solid. The admin panel works well, the content API is clean, deployment is painless, and the performance is genuinely impressive. This isn't vaporware — it's a working CMS with rough edges you can build production sites on today.
Getting started
Getting EmDash running locally takes about five minutes. You need Node.js 20+ and a Cloudflare account (free tier is fine).
Run npm create emdash@latest, pick a starter template, and you'll have a working site with an admin panel, content types, and sample content. The dev server uses Miniflare to simulate D1 and R2 locally, so you don't need any Cloudflare resources until you deploy.
When you're ready to go live, create a D1 database and R2 bucket in your Cloudflare dashboard, update your wrangler config with the bindings, and push to a repo connected to Cloudflare Pages. That's the entire deployment process.
What's next for EmDash
EmDash is actively developed by the Cloudflare team. The roadmap includes more starter templates, an official plugin and theme marketplace, improved documentation, and deeper integrations with Cloudflare services like Workers AI and Vectorize.
I'm building Dashstro specifically to fill the gap that exists right now — tutorials, templates, plugins, and services for the people who want to build on EmDash today, not wait until the ecosystem matures on its own. If you have questions about EmDash or want to see specific tutorials, I'm all ears.
EmDash vs WordPress →Build your first site →