Typed JSON, not blob fields
Content lives as typed JSON schemas the LLM can read. No more grepping serialized post-meta tables.
{ "title": string,
"hero": Hero,
"body": Block[] } Done-for-you migrations from WordPress and static sites to Astro + EmDash. Your marketing team edits via Claude, Codex, or any MCP-compatible agent. We handle the move.
An open-source content management system Cloudflare launched on April 1, 2026 — Apache-licensed, written in TypeScript, designed to run on Cloudflare Workers (or Node, or any JavaScript runtime). What sets it apart from headless WordPress alternatives is that EmDash is built for AI agents from the foundation up.
Content lives as typed JSON schemas the LLM can read. No more grepping serialized post-meta tables.
{ "title": string,
"hero": Hero,
"body": Block[] } Claude, Codex, or any MCP-compatible agent edits the site directly. The introspectable CLI returns structure LLMs parse without hand-holding.
$ emdash mcp serve
→ ready · 142 tools
→ claude connected Plugins run in isolated Cloudflare Worker isolates with explicit permissions. The end of 30-plugin runtime breakage.
permissions:
- read:posts
- write:media Workers by default. Node, Bun, Deno also work. Apache-licensed, written in TypeScript, content portable as flat files.
runtime: workers
fallback: node | bun
license: Apache-2.0
Built on the same primitives
we ship to clients:
Marketing teams want to edit. Devs want a fast site. Most stacks force a trade-off — EmDash doesn't.
A typical WordPress migration replaces five things with one folder of typed Markdown. EmDash compresses the plugin stack into one MCP layer your marketing team can actually steer.
EmDash exposes your content as MCP tools. Marketers ask Claude or Codex in plain language; the agent commits a clean git diff your engineers can review. Same governance — without the ticket queue.
content/services/migrate-wordpress.md. Here's the diff:
PR #42 · preview ready in ~12s. Want me to ping
@quang for review?
EmDash itself is new. We're early, and we'd rather say so than line up stock photos pretending otherwise. Two honest things to know before you book the call.
OC WEBFIRM has been shipping marketing sites for SMBs and agencies since 2014. Every migration on this site uses the same playbook we've run on plain Astro for years — only now your marketing team can edit through Claude or Codex.
We won't fake testimonials and we won't ship a generic case study. If you migrate off WordPress with us in the next two months, we'll trade discounted pricing for a published case study with your real numbers and your team named.
Migrating off WordPress, starting from scratch on EmDash, or moving a hand-coded site — there's a fixed-price entry point for each.
Done-for-you migration from WordPress to Astro + EmDash. Marketers edit via Claude or Codex. Devs stop firefighting plugins.
You hand-coded the site. Marketing keeps emailing you copy changes. Migrate to Astro + EmDash and let them ship without you.
Skip the WordPress migration tax. Greenfield project, Astro + EmDash + Cloudflare, MCP-wired from day one.
A migration is a project, not a six-month overhaul. We work in fixed weekly milestones. You see the next one before the current one ends — drag the dot to look ahead.
We crawl the live site, build a row-by-row content map, and flag everything that is broken, duplicated, or quietly costing Core Web Vitals. You get a working preview URL by day seven.
We write what we wish we'd read before the migration. Long-form when it earns it; release notes when it doesn't.

For the agency owner who's read all the EmDash hype and wants the boring version: what we measured across six weeks of building, evaluating, and pitching EmDash work — before any client site went live. The bugs, the gaps, the things we'd wait on, and the things that already work.

For the marketing lead at a small SaaS whose 30-page hand-coded HTML site has become a dev bottleneck: when migrating to a CMS makes sense, when starting fresh on EmDash + Astro is faster, and the surprisingly common third option — leave it alone.

For the agency owner who keeps losing the 'why is your site faster than ours' argument with prospects: the Lighthouse CI budget config, the JS-shipping rules, and the image pipeline that ship Lighthouse 95+ on every page on Cloudflare Pages.
30-minute intro call. We'll walk through your current site, give you a fixed-price estimate, and tell you honestly if you'd be better off staying put.