{"id":98094,"date":"2026-10-13T07:50:00","date_gmt":"2026-10-13T11:50:00","guid":{"rendered":"https:\/\/overcentral.com\/en\/?p=98094"},"modified":"2026-09-29T08:07:48","modified_gmt":"2026-09-29T12:07:48","slug":"emdash-cms-vs-kirby-static-file-98094","status":"publish","type":"post","link":"https:\/\/overcentral.com\/en\/emdash-cms-vs-kirby-static-file-98094\/","title":{"rendered":"EmDash CMS vs Kirby: Why the &#8220;Modern WordPress Successor&#8221; Advice Falls Short for Static-File Projects"},"content":{"rendered":"<p>Everyone says the same thing: <a href=\"https:\/\/emdash.com\" target=\"_blank\" rel=\"noopener noreferrer\" data-iacss-external=\"1\">EmDash CMS<\/a> is the future. Cloudflare&#8217;s spiritual successor to WordPress fixes plugin security, runs on serverless infrastructure, and comes AI-native out of the box. Move your content there, they tell you. It&#8217;s what WordPress should have been.<\/p>\n\n<p>But that advice misses something fundamental. For a specific class of projects \u2014 small sites, personal blogs, client handoffs where simplicity matters more than features \u2014 EmDash introduces problems it claims to solve. And an older, quieter CMS called Kirby has been doing the right thing all along.<\/p>\n\n<h2>What Makes Each CMS Tick<\/h2><table class=\"mw-table\"><thead><tr><th>Attribute<\/th><th>EmDash CMS<\/th><th><a href=\"https:\/\/getkirby.com\" target=\"_blank\" rel=\"noopener noreferrer\" data-iacss-external=\"1\">Kirby CMS<\/a><\/th><\/tr><\/thead><tbody><tr><td><strong>Architecture<\/strong><\/td><td>Serverless, TypeScript\/Astro, V8 isolates<\/td><td>Static-file based, PHP, flat-file storage<\/td><\/tr><tr><td><strong>Content storage<\/strong><\/td><td>SQLite or D1 database, portable text JSON<\/td><td>Plain text files (Markdown, YAML, JSON)<\/td><\/tr><tr><td><strong>Pricing model<\/strong><\/td><td>Free code, paid Cloudflare infrastructure required for sandbox features<\/td><td>One-time license fee ($59 for personal, $299 for agency)<\/td><\/tr><tr><td><strong>Plugin security<\/strong><\/td><td>Sandboxed via dynamic workers (paid Cloudflare tier only)<\/td><td>No plugins; functionality is built into core or custom-coded<\/td><\/tr><tr><td><strong>Ecosystem<\/strong><\/td><td>Zero third-party plugins at v0.1.0 beta<\/td><td>Small but mature collection of official and community extensions<\/td><\/tr><tr><td><strong>Vendor dependency<\/strong><\/td><td>Runs best on Cloudflare; self-hosted loses sandbox<\/td><td>Runs on any PHP server with no vendor lock-in<\/td><\/tr><tr><td><strong>Learning curve<\/strong><\/td><td>CLI setup, TypeScript knowledge needed<\/td><td>File-based, no database, Git-friendly from day one<\/td><\/tr><\/tbody><\/table>\n\n<p>If you need a multi-author news site with complex content workflows, EmDash makes sense. If you need five pages about a local bakery that won&#8217;t break when the client forgets to update PHP, Kirby wins.<\/p>\n\n<h2>The Plugin Paradox EmDash Didn&#8217;t Solve<\/h2><p>WordPress&#8217;s security model is broken. Everyone knows this. 96% of vulnerabilities come from plugins. EmDash fixes this with dynamic workers \u2014 every plugin runs in its own V8 isolate, declaring exactly what it can access.<\/p>\n\n<p>Sounds perfect. Until you realize the sandbox only works on Cloudflare&#8217;s paid infrastructure. Self-host on Node.js, and plugins run in-process with no isolation. The headline feature evaporates.<\/p>\n\n<p>Kirby takes a different approach entirely. No plugin system. The functionality you need is either in the core or you write it yourself. That sounds limiting until you consider the average small site needs: a contact form, a blog, maybe a gallery. Kirby ships with all of that. No plugin queue, no vulnerability surface, no permission manifest to configure.<\/p>\n\n<h2>Cost: Predictable vs Mystery<\/h2><p>Managed WordPress hosting runs about $20-50 per month. You know the bill. EmDash flips this: serverless billing where every page view, admin click, and API call triggers worker invocations, database reads, and storage operations across multiple meters.<\/p>\n\n<p>One Hacker News commenter calculated a basic DDoS attack scenario: 10,000 IPs at one request <a href=\"https:\/\/overcentral.com\/en\/meta-launches-zgateway-proxy-handles-1-billion-ops-per-second\/\" title=\"Meta Launches ZGateway Proxy, Handles 1 Billion Ops Per Second\" data-iacss-internal=\"1\">per second<\/a> could rack up $13,000 in a month. Cloudflare offers no global spending cap. Your site keeps running, and your credit card keeps charging.<\/p>\n\n<p>Kirby costs $59 once. You host it on any $5 VPS or shared PHP host. Flat rate. No surprises. The cost ceiling is the hosting plan, not the traffic.<\/p>\n\n<h2>AI Readiness: Built-In vs Bolt-On<\/h2><p>EmDash ships with a built-in MCP server and agent skills files. You can point Claude or Cursor at your CMS and say &#8220;create a new custom content type&#8221; \u2014 it works. The AI integration is architectural, not an afterthought.<\/p>\n\n<p>Kirby has no native MCP server. But its file-based architecture is fundamentally machine-readable. Content lives as structured Markdown with YAML front matter. Any script \u2014 AI-powered or not \u2014 can read, write, and transform it. You don&#8217;t need a plugin to give an agent access. You just point it at the content folder.<\/p>\n\n<p>For a developer comfortable with the terminal, both approaches work. For a non-technical client who wants to edit their site through a browser, Kirby&#8217;s panel is simpler and more predictable than EmDash&#8217;s passkey-first, serverless admin.<\/p>\n\n<h2>Where the Common Advice Breaks Down<\/h2><p>The &#8220;EmDash is the WordPress successor&#8221; narrative assumes you need what WordPress offers: a plugin ecosystem, multi-user roles, extensibility at scale. That&#8217;s true for large publishers and agencies.<\/p>\n\n<p>But many projects don&#8217;t need that. A photographer&#8217;s portfolio. A consultant&#8217;s landing page. A local restaurant menu. These sites need to load fast, stay secure, and let someone update text without calling you. Kirby does that with zero ongoing cost and zero infrastructure decisions.<\/p>\n\n<p>EmDash asks you to choose a database provider, configure rate limiting, understand V8 isolate pricing, and monitor Cloudflare dashboards. For a three-page site, that&#8217;s not modernization. That&#8217;s overhead.<\/p>\n\n<h2>Edge Case: The Client Handoff Problem<\/h2><p>You build a site. You hand it to the client. Six months later, they call: the hosting bill was $200 this month, or the import tool broke, or the sandbox plugin stopped working.<\/p>\n\n<p>With Kirby, you hand them a folder. They upload it to any PHP host. Done. No phone call.<\/p>\n\n<p>EmDash is not designed for this scenario. It&#8217;s designed for developers who control the full stack. That&#8217;s fine for in-house projects. It&#8217;s a liability for agencies.<\/p>\n\n<h2>FAQ<\/h2><p><strong>Can I migrate my WordPress site to Kirby?<\/strong><\/p>\n<p>Yes. Kirby includes a migration tool for importing posts, pages, and media from WordPress XML exports. Custom post types require manual mapping, but content structures are straightforward.<\/p>\n\n<p><strong>Does EmDash work without Cloudflare?<\/strong><\/p>\n<p>It runs on any Node.js server, but plugin sandboxing is not available outside Cloudflare&#8217;s runtime. Self-hosting gives you the CMS without the security model that justifies it.<\/p>\n\n<p><strong>Which CMS is better for SEO?<\/strong><\/p>\n<p>Both generate clean HTML and support meta tags, sitemaps, and structured data. EmDash has built-in SEO controls from the start. Kirby relies on a small official plugin, but the output is identical in quality.<\/p>\n\n<p><strong>Can non-developers use Kirby?<\/strong><\/p>\n<p>Yes. The panel is simpler than WordPress. Content editing is Markdown-based with a visual preview. Clients who have used any CMS find it intuitive. EmDash&#8217;s passkey authentication and CLI setup create a higher initial barrier.<\/p>\n\n<h2>What the &#8220;Successor&#8221; Framing Gets Wrong<\/h2><p>Calling EmDash a spiritual successor to WordPress implies a linear upgrade. Better security, better performance, better AI integration. For certain use cases, that&#8217;s true.<\/p>\n\n<p>But the framing ignores that WordPress succeeded partly because it ran anywhere. You could hand a client a WordPress site and walk away. EmDash cannot make that promise. Its best features are tied to Cloudflare&#8217;s runtime, its billing is unpredictable, and its ecosystem is nonexistent.<\/p>\n\n<p>Kirby made different tradeoffs. Less extensibility. Less hype. But a site you build today will work tomorrow on any server, with no surprise bills, and no vendor dependency. That&#8217;s not a spiritual successor to WordPress. It&#8217;s a practical alternative that solves a different problem.<\/p>\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Can I migrate my WordPress site to Kirby?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes. Kirby includes a migration tool for importing posts, pages, and media from WordPress XML exports.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Does EmDash work without Cloudflare?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>It runs on any Node.js server, but plugin sandboxing is not available outside Cloudflare&#8217;s runtime.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-3\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Which CMS is better for SEO?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Both generate clean HTML and support meta tags, sitemaps, and structured data.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-4\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Can non-developers use Kirby?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes. The panel is simpler than WordPress. Content editing is Markdown-based with a visual preview.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Everyone says the same thing: EmDash CMS is the future. Cloudflare&#8217;s spiritual successor to WordPress fixes plugin security, runs on serverless infrastructure, and comes AI-native out of the box. Move your content there, they tell you. It&#8217;s what WordPress should have been. But that advice misses something fundamental. For a specific class of projects \u2014 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":100419,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/cards.overcentral.com\/cards\/en\/98094.png","fifu_image_alt":"EmDash CMS vs Kirby: Why the \"Modern WordPress Successor\" Advice Falls Short","footnotes":""},"categories":[31],"tags":[],"class_list":["post-98094","post","type-post","status-publish","format-standard","has-post-thumbnail","category-technology"],"fifu_image_url":"https:\/\/cards.overcentral.com\/cards\/en\/98094.png","fifu_image_alt":"EmDash CMS vs Kirby: Why the \"Modern WordPress Successor\" Advice Falls Short","_links":{"self":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/98094","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/comments?post=98094"}],"version-history":[{"count":1,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/98094\/revisions"}],"predecessor-version":[{"id":100420,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/98094\/revisions\/100420"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/media\/100419"}],"wp:attachment":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/media?parent=98094"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/categories?post=98094"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/tags?post=98094"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}