Cloudflare 发布 EmDash 1.0,Agent 友好的开源 CMS
EmDash 是免费开源的 WordPress 替代品:Agent 能直接改内容,插件默认关进沙箱,插件目录也不归任何公司,1.0 起可用于正式网站。
如果你做过网站,多半用过 WordPress 这类内容管理系统(CMS,编辑用来写文章、传图片、管理网页内容的后台)。Cloudflare 做了一个新的开源 CMS,叫 EmDash,官方叫它 WordPress 的“精神继任者”。它当初是在愚人节推出的,不少人因此怀疑只是个玩笑;现在,1.0 稳定版发布了:免费、MIT 协议开源,可以直接拿来跑正式网站。
下面按一个普通读者最想问的顺序讲:它是什么,解决了传统 CMS 的什么麻烦,有哪些亮点,适合谁、什么场景,怎么用,以及哪些地方还要留意。
EmDash 是什么?
一句话:一个免费开源、对 Agent 友好的网站后台系统。它把三类人的活分开:
- 开发者用 Astro(一个做网站的前端框架)写网站;
- 编辑在 EmDash 的后台写文章、管媒体,和用 WordPress 的感觉类似;
- Agent(能自己动手干活的 AI)可以通过 API、命令行,或者内置的 MCP 服务直接读写内容。
1.0 带来的不只是“稳定”,还有一个同时上线的插件注册中心(插件目录),以及一个开源的 AI 建站器 EmDash Build(alpha 版)。
它想解决传统 CMS 的什么麻烦?
从官方的讲法里,可以梳理出四个痛点。
一,维护负担重。 Avulux 的例子最直接:他们受够了 WordPress 的维护负担,把一个自建的小站迁到了 EmDash。负责创新与系统的总监说,网站要好用、团队好更新,而 WordPress 恰恰成了反面;现在有了一个开发者能扩展、市场人员能直接改内容的共用平台。
二,插件权限没有边界。 WordPress 的插件和整个应用跑在同一个 PHP 进程里,能直接访问数据库、文件系统和网络。一个联系表单插件,从技术上就能读没发布的文章、改别的插件、把数据发到任何地方。站长只能相信它不会这么做,也相信以后的更新不会改变它的行为。
三,插件商店由一家公司说了算。 传统插件商店通常把三个角色捏在一起:发布者的账号、插件包的权威记录、以及用户找插件的目录。账号被封、上架被撤、规则改了、服务关了,发布者都没法把同一个身份和发布历史带去别处。
四,AI 建站后的小改动成本高。 现在建站多半从对话框开始,向 Agent 描述想要什么。但做出来之后,想改点小东西,就得回到提示框里碰运气,或者为改一行字消耗额度。
EmDash 对这四点的回答,分别是后面几节的内容。
亮点一:Agent 友好,不只是能调接口
传统 CMS 是给人点鼠标用的。EmDash 同时给 Agent 开了三扇门:API、命令行,以及内置的 MCP 服务,另外提供了 EmDash Agent Skills(给 Agent 用的技能包),让 Agent 更容易上手。官方的说法是,EmDash 是“Agent 最好的朋友”。前面 Avulux 借助 Agent Skills,迁站不到一天就做完了。
对建站和托管公司,这条路还能往前走一步。这类公司可以用 Workers for Platforms(Cloudflare 让平台把每个客户的网站当作一个 Worker 来跑的服务),不用给每个网站单独配服务器,把精力放在客户建站和管理的体验上。EmDash 提供内容层:平台可以直接用后台界面,也可以基于 API 和命令行做自己的界面,或者在内置 MCP 服务前放一个 Agent。官方举的例子是,面包店老板用一句大白话让平台的 Agent 改营业时间,Agent 负责读取、更新和保存内容。官方还在找更多愿意一起做面向 Agent 的 CMS 体验的托管合作伙伴。
亮点二:插件关进沙箱,装之前先看权限
插件是 CMS 生态的核心:站点开发者不必重复造集成和流程,专家也能分享经验,甚至做成软件生意。官方认为 Agent 让这种复用更有价值:Agent 自己也能为你做一次性的集成,但它得弄懂问题、写代码、测试、再维护;插件把这些工作固化下来,另一个 Agent 可以直接安装配置一个成熟的方案,不必从头再来。
EmDash 的沙箱插件换了一种模型:每个插件在隔离的运行环境里,能访问自己的私有存储,但访问不到网站的内容、媒体、用户、密钥、环境变量、文件系统和网络。额外的能力必须由插件声明,再由站点管理员批准,才会给。
看图里右边的例子:一个只被批准读取媒体(media:read)的插件,如果去请求写文章(posts:write),守门人会发现它没有这个能力,什么都不返回;另一个被批准读取文章(posts:read)的插件,请求读文章才会被放行。资源之间是隔离的,一处漏洞的影响,只限于这个 Worker 能访问的范围。
所以,装一个沙箱插件更像装手机 App,而不是装传统的 CMS 插件:运行之前,EmDash 会先告诉你它想做什么,运行时再限制它只能做被批准的事。下图是注册中心里 Cloudflare Email Sending 插件的页面,“安装前”一栏列出了它申请的三项权限:可以向声明过的外部地址(api.cloudflare.com)发网络请求、观察并可修改发出的邮件、以及提供邮件发送通道,替换当前的发送方式。
这样,插件能干有用的活,又拿不到无关的权限:
| 插件可以是… | 它可能需要… | 它依然不能… |
|---|---|---|
| 给已发布文章建索引做搜索 | 读取内容、联系搜索服务 | 编辑文章、联系其他主机 |
| 优化上传的图片 | 读取和管理媒体 | 读取用户内容 |
| 发送发布通知 | 观察发布动作、发送邮件 | 修改正在发布的内容 |
| 提供可配置的 webhook | 读取选定的事件、联系公网目标 | 访问内网,或其他插件的存储 |
关键在于这些能力彼此独立:给了媒体权限,不等于同时暴露用户和未发布内容;允许联系一个服务,也不等于放开整个网络。这些边界由运行环境来执行,不靠插件作者的自觉。
隔离也不限于 Cloudflare。在 Cloudflare 上,EmDash 通过 Worker Loader 把每个插件当作一个 Dynamic Worker 运行;在 Node.js 上,EmDash 会把 workerd(Cloudflare 开源的 Workers 运行时)作为单独的进程启动,每个插件在里面作为一个隔离的服务运行。两边使用同样的清单和受能力限制的 API。
亮点三:插件目录不归任何公司
权限管住了插件运行时能做什么,还剩一个问题:插件从哪来、可信吗。插件目录网站 plugins.emdashcms.com 随 1.0 一起上线:开发者可以发布沙箱插件,站长可以搜索、查看、安装。
EmDash 把插件和目录拆开。发布者自己保管插件包和发布历史,EmDash 只是提供一个方便找和装的地方。别的服务可以索引同一批发布内容,建自己的目录,套自己的规则,开发者不用重新来过。EmDash 的目录会对显示出来的名称、描述、链接和图片做默认审核,审核只能在这个目录里把有害内容隐藏起来,不会改写发布的版本,不会接管插件,也不会抹掉底层的发布记录。
这套东西建在 AT Protocol(简称 atproto)上,它是驱动 Bluesky 的去中心化网络协议。插件作者用 Atmosphere 账号发布,这是这个生态里通用的、可携带的身份。插件包和每个版本的记录由发布者签名,存放在发布者自己的账号里。
“去中心化”不等于放任不验证的代码。atproto 的仓库使用带签名的 Merkle 搜索树,一份包含证明能把某个具体的发布记录,连到发布者账号的一次签名提交上。所以 EmDash 可以独立验证,不必相信目录里的那份拷贝。之后它还会检查插件的校验和、包名、版本、申请的权限,以及需要时的构建来源证明,并确认下载下来的插件包和签名记录一致。
EmDash 自己托管默认的注册服务,让发布者和站长不用自己搭设施。官方还把这些服务全部开源,包括驱动注册中心的聚合器、用 Workers AI 审核包描述的标注服务,以及方便在任意 Astro 网站里嵌入插件列表的加载器。目前只支持免费插件;官方希望以后在同样的去中心化模式下支持付费插件,也在关注 atproto 的 Spaces 内测,目标是让任何人都能运营安全的付费插件市场,让发布者靠软件赚钱。官方的说法是:没有一个中央控制者能一句话就拿走或撤下插件,插件和注册中心的安全,应该写进代码,而不是靠信任某个权威或行为准则。
亮点四:EmDash Build,让 Agent 从一句话搭出整站
同时发布并开源的 EmDash Build(alpha 版)是一个托管商、建站工具和平台可以自己运行,并接进自家系统的 AI 建站器。可以先在 build.emdashcms.com 试 Demo,代码开源在 github.com/emdash-cms/emdash-build。
它回应的是前面第四个痛点:EmDash Build 做出来的是一个完整的 EmDash 网站,带着整套东西:服务器渲染的 Astro 页面、数据库、媒体存储和后台。Agent 根据需求设计内容模型,通过 EmDash 的 MCP 服务把内容填进去,再写显示内容的页面。之后你或你的客户可以直接在页面上改字、定时发文,也可以让 Agent 来改,不必每次回到提示框。
每个项目在 EmDash Build 里都有自己的 Cloudflare Sandbox 容器,基于 Agents SDK 的 Agent 在里面自己验证自己的工作;Artifacts 把每一次改动记成一次 git 提交。网站发布时,内容会转移到正式的 EmDash 站点,并部署到托管商的 Workers for Platforms 命名空间里。
1.0 靠什么让人放心?
EmDash 的第一个测试版出来后,已经有开发者用它上线了真实的网站。但官方一直听到同一种回应:“看起来有意思,等 1.0 了告诉我。”大家想先确认它足够稳定、安全,升级不会伤到内容,Cloudflare 也真的会长期维护。
过去五个月,Cloudflare 和贡献者、正式使用者一起打磨每个网站都绕不开的部分:数据安全、数据库迁移、编辑流程、多语言、插件安全、性能,以及后台、API、MCP 和媒体库的可靠性。其中最有代表性的是 Cloudflare 自己:今年夏天,它把自家的 Cloudflare 博客迁到了 EmDash,官方称这是“Customer Zero”做法,也就是先让自己当第一个用户。博客要扛住每周数百万次页面访问、正常流量最高每秒 5000 个请求,以及偶尔的 DDoS 攻击。迁移过程中催生了三个可选功能,现在对所有用户开放:KV 对象缓存、Hyperdrive 数据库适配器(Hyperdrive 是 Cloudflare 加速数据库连接的服务),以及与 Workers Cache 的兼容。
CMS 存着一个组织最重要的内容,常常有几十位编辑天天在用,所以官方特别强调不能被厂商锁死:EmDash 完全免费,采用宽松的 MIT 协议开源。截至发稿,已有超过 175 人给项目贡献过代码,累计超过 1800 次提交,界面被翻译成 25 种语言。官方还提到,他们刻意把项目做成“Agent 帮人类开发者,而不是把人淹没”的样子。Noah Pham 以实习生身份加入 Cloudflare,后来成了 EmDash 的第二位维护者,贡献了 80 多项改动,负责媒体库、内容编辑器和后台界面的多个重要部分。
生态也在长起来:Lexington Themes 提供 44 个带 EmDash 版本的 Astro 主题;Urumi 正在用做 WooCommerce 的经验发布 EmDash 的第一个电商插件;Empress 在做面向多品牌主体的平台,可以用自然语言或传统后台管理一批网站。
适合谁、什么场景用?
按官方的讲法,可以对号入座:
- 要搭正式网站的团队:公司的营销站、内容站。官方建议现在是迁移公司营销站的好时机,Cloudflare 自己的博客就是先例。前提是有人会用 Astro 开发,编辑日常则在后台操作。
- 做网站的代理公司:官方点名的用途之一是“你的代理公司的 vibe-coding 平台”(用对话让 AI 搭站的服务),可以基于 EmDash 提供服务。
- 托管商和建站平台:用 Workers for Platforms 给每个客户一个独立网站,用沙箱插件给大量客户站点提供扩展,也可以自建插件市场,开放整个注册中心,或只挑一批预先批准的插件。
- 一个人的小项目:官方提到可以让 Agent 帮你搭起想做的小站;Avulux 的小站迁移也只用了不到一天。
- 插件开发者:想做扩展并靠它赚钱的人,可以不经 EmDash 许可直接发布;站长在运行前就能看清它被允许做什么。
- 要管一批站点的组织:例如 Empress 这类面向多品牌主体的平台,用自然语言或传统后台管理一批网站。
怎么用?
- 先试玩:打开 try.emdashcms.com 的 playground,或在 build.emdashcms.com 试 EmDash Build 的 Demo。
- 本地新建一个站点:终端里运行下面这行:
npm create emdash@latest
- 部署:也可以在 Cloudflare 控制台一键部署官方博客模板。
- 迁移已有网站:官方提到借助 EmDash Agent Skills,让 Agent 帮忙迁站;后台菜单里也有导入(Import)入口。
- 开发插件:官方文档有一份从零开始的教程,讲怎么创建插件并发布到插件注册中心。
- 看源码、自己搭:EmDash 主项目在 github.com/emdash-cms/emdash;AI 建站器 EmDash Build 的代码在 github.com/emdash-cms/emdash-build,托管商和平台可以自己运行并接进自家系统;注册中心的聚合器、审核标注服务和 Astro 加载器也都开源,代码在主项目里。
- 加入社区:Discord 上已有 800 多人;做贡献不一定要写代码,翻译、文档、测试、设计、整理问题、答疑都算。
该怎么看
EmDash 不只是“又一个 WordPress 替代品”。把前面几节合起来看,它让 CMS 同时回答三个问题——Agent 能不能读写内容(API、命令行、MCP),Agent 或人装的扩展会不会越权(默认没有权限、先声明再批准、运行环境强制执行),扩展的来源能不能独立验证(签名的发布记录,目录只是入口)。如果你在做要让 Agent 装扩展的产品,这三点可以直接对照。
但也要看清现状:注册中心现在只支持免费插件,付费市场还在规划中;EmDash Build 目前是 alpha 版;站点本身要用 Astro 开发,所以自己上手需要有开发能力;不写代码的编辑,更多是在搭好的后台里日常使用。
EmDash 1.0:把 Agent 当一等用户的开源 CMS
Cloudflare 做的免费、MIT 开源的网站后台(CMS),官方称它是 WordPress 的精神继任者。1.0 起,可以直接拿来跑正式网站。
是什么:三类人各干各的
WordPress 一类传统 CMS 的四个麻烦,EmDash 怎么解
一个痛点对应一个做法。
装插件之前能看到什么?以注册中心里的 Cloudflare Email Sending 插件为例,“安装前”一栏列出它申请的三项权限:
适合谁,怎么开始
- 要搭正式网站的团队:营销站、内容站;需要有人会用 Astro 开发,编辑日常在后台操作。
- 代理公司、托管商和建站平台:用 Workers for Platforms 给每个客户独立站点,用沙箱插件提供扩展,可自建插件市场。
- 插件开发者:不经 EmDash 许可就能发布,站长运行前能看清它被允许做什么。
- 个人小项目:可以让 Agent 帮你把想做的小站搭起来。
npm create emdash@latest1.0 靠什么让人放心
Cloudflare 把自家的博客迁到了 EmDash,官方称这是先让自己当第一个用户。
依据 Cloudflare 官方博客《EmDash 1.0: the stable CMS with a secure plugin registry》与本站解读整理。
EmDash 1.0: the stable CMS with a secure plugin registry
EmDash 1.0 is a stable, open source CMS built for Astro, with agent-friendly workflows, secure sandboxed plugins, and a decentralized registry that keeps publishers in control.
When we introduced EmDash on April 1 as the “spiritual successor to WordPress”, the buzz was hard to ignore. Walking around a WordPress conference that month, we couldn’t walk far without hearing murmurs about EmDash from fellow attendees.
But alongside the excitement and curiosity has been a seed of doubt among some in the industry. Was this just an April Fools’ joke?
It was not. Today, we are releasing EmDash 1.0: a stable, free, and open source CMS built on Astro, ready to power a production website, your agency’s vibe-coding platform, or your hosting company’s site-building experience.
Developers build with Astro, editors manage content through the EmDash admin, and agents can work through the API, CLI, or built-in MCP server. EmDash 1.0 brings those pieces together with production-tested editorial, media, localization, migration, and deployment workflows.
We are also launching a decentralized plugin registry that lets developers publish without handing ownership of their identity or releases to a central marketplace, while site owners can discover and install their plugins directly from inside EmDash.

The road to 1.0
Since EmDash's first beta, developers have launched real websites with it. Even so, we kept hearing a reasonable response: “This looks interesting. Let me know when it is 1.0.” Before relying on EmDash for their sites, they wanted confidence that it was stable, secure, that upgrades would protect their content, and that we are fully committed to maintaining it.
EmDash 1.0 is our answer to that. For the past five months, we have worked with contributors and production users on the parts of the CMS that every site depends upon: data safety, database migrations, editorial workflows, localization, plugin security, performance, and the reliability of the admin, API, MCP, and media experiences.
Real deployments shaped much of that work, uncovering edge cases and identifying needs that only show up when a site is serving real traffic and being used by real teams of editors.
As one example of this, Avulux converted a custom microsite to EmDash after dealing with the maintenance burden of WordPress for too long. Since EmDash is an agent’s best friend, using the EmDash Agent Skills helped that transition take less than a day to complete.
“The site had to be fast to use and simple for our team to update,” says Greg Barbosa, Director of Innovation and Systems at Avulux. “WordPress had become the opposite of that. With EmDash, we now have a shared platform that developers can extend and marketers can edit content."
In August, we migrated the Cloudflare Blog to EmDash as part of our “Customer Zero” approach. Working alongside our content engineering team provided actionable insights around localization, media management, the admin editor experience, and scaling. Comfortably handling the traffic load for the Cloudflare Blog meant being ready for millions of pageviews per week, spikes up to 5,000 requests per second (RPS) of legitimate traffic, or sporadic DDoS attacks. The optional KV object caching, Hyperdrive database adapter, and Workers Cache compatibility were all features spawned from our migration project that are widely available to all customers now.
Built in public, open to everyone
A CMS sits at the heart of an organization’s web presence. It is trusted with its most important data, and is often used by dozens of editors every day. They need to be able to know they can rely on it, without fear of vendor lock-in or changing business priorities. For that reason, EmDash is completely free and open source, using the flexible and permissive MIT license.
EmDash 1.0 could not exist without its open-source development community. At the time of writing, more than 175 people have contributed to the project, across more than 1,800 commits. The rise of agentic coding tools has presented both challenges and opportunities to open-source projects, and we have deliberately built a project where the agents can help the human developers, rather than being overwhelmed by them.
We are particularly grateful to the core group of the most dedicated contributors, who between them have shipped hundreds of improvements to all areas of the project. They include @swissky, @danielmlr, @MA2153, @marcusbellamyshaw-cell, and dozens of others. Contributors have translated EmDash into 25 languages, from Arabic to Ukrainian.
Particular recognition is due to Noah Pham, who joined Cloudflare as an intern and became EmDash’s second maintainer alongside Matt. Noah contributed more than 80 changes, taking ownership of major parts of the media library, content editor, and admin interface. We have said that interns ship meaningful work at Cloudflare; Noah’s work is now at the heart of EmDash 1.0.
There is plenty more to build, and contributing does not have to mean writing code. If you want to help with code, translations, documentation, testing, design, issue triage, answering questions, or just welcoming new users, join over 800 others in the EmDash community on Discord.
A growing ecosystem
A content management system thrives when the ecosystem around it is healthy and supported. We’ve been excited by the theme companies, plugin shops, agencies, and platforms who are creating new services and products using EmDash.
- Lexington Themes offers 44 Astro themes with EmDash variants, giving teams a beautiful and functional starting point for their site, complete with reusable components and built-in content collections.
- Urumi is using their WooCommerce expertise to release EmDash’s first eCommerce plugin.
- Empress is launching a platform for multi-brand entities, offering the flexibility of managing a fleet of sites with natural language or a conventional CMS admin panel.
“Empress's delightful multisite experience would not be possible without the foundations EmDash has laid: sites that are fast, safe to extend, and easy for people and agents to read and act on,” says Raj Makker, Empress’s founder. “EmDash unlocks powerful control over a website, and Empress builds on it to give you complete control over as many sites as you want. We're excited to be part of this journey.”
A plugin registry that does not own the ecosystem

With EmDash 1.0, developers can publish sandboxed plugins and site owners can discover, inspect, and install them from the EmDash plugin registry.
Traditional plugin registries usually combine three roles: they provide the publisher’s account, hold the authoritative package record, and operate the catalog where users discover it. That is convenient, but it also makes one company the gatekeeper for both identity and distribution. If an account is suspended, a listing is removed, the rules change, or the service shuts down, publishers cannot take the same identity and release history somewhere else.
EmDash separates the plugin from the catalog. Publishers retain control of their packages and release history, while EmDash provides a convenient place for people to find and install them. Other services can index the same publications, build their own catalogs, and apply their own policies without requiring developers to start again.
The EmDash catalog applies default content moderation to the names, descriptions, links, and images it displays. Moderation can hide harmful or inappropriate material from this catalog, but it does not rewrite a release, take ownership of the plugin, or erase the underlying publication.
The registry is built on AT Protocol (atproto), a decentralized network protocol that powers Bluesky and a growing ecosystem of applications. Plugin authors publish with an Atmosphere account, the portable identity also used across these applications. The package and release records are signed by the publisher and stored in the publisher's own account.
EmDash hosts the default registry services so publishers and site owners can use them without running infrastructure themselves. We hope others will build new catalogs, moderation systems, publishing tools, and other services we have not imagined yet. To help this, we have released all of our services as open-source software, including the aggregator that powers the plugin registry, the labeler service that uses Workers AI to moderate package descriptions, and an Astro live content loader to make it easy to include plugin listings in any Astro site. We are excited to see what the community will build with them!
There’s no centralized controller that can take over plugins or remove them on a whim. We believe the security of plugins and the registry should be baked into code, rather than trusting any central authority or code of conduct.
Decentralized publishing does not mean accepting unverified code. Atproto repositories use signed Merkle Search Trees, so an inclusion proof connects the exact release record to a signed commit from the publisher’s account. EmDash can therefore verify the record independently instead of trusting the catalog’s copy. It then checks the plugin’s checksum, package name, version, requested access, and any required build provenance, and confirms that the downloaded bundle matches the signed record.
The registry supports free plugins today, and we aim to add support for paid plugins in future, with the same decentralized model as now. We are watching the Atproto Spaces Alpha with interest. Anybody should be able to run a secure, paid plugin marketplace. We want publishers to be able to make money from their software.
For now, plugin authors can publish useful software without asking permission from EmDash — and site owners can understand exactly what that software is allowed to do before they run it.
Plugins with clear boundaries
Plugins are the core of a CMS ecosystem. They save site developers from rebuilding the same integrations and workflows, while giving experts a way to share their best practices — and potentially build a software business.
Agents make that reuse even more valuable. An agent can build a one-off integration, but it still has to understand the problem, generate and test the code, and maintain it afterward. A plugin captures that work. Another agent can install and configure a proven solution instead of starting again from scratch.
That convenience creates a serious security concern: plugins are code you did not write, operating alongside valuable content and customer data. With WordPress, plugins run inside the same PHP process as the rest of the application, with direct access to its database, filesystem, and network. A contact-form plugin can technically read unpublished posts, modify another plugin, or send data anywhere. Site owners must trust that it will not — and that a future update will not change its behavior.
Sandboxed EmDash plugins use a different model. Each plugin runs in an isolated runtime with access to its own private storage, but not to the site’s content, media, users, secrets, environment, filesystem, or network. It gains additional abilities only when they are declared by the plugin and approved by the site administrator.

Installing a sandboxed plugin therefore feels more like installing a mobile app than a traditional CMS plugin. EmDash shows what the plugin wants to do before it runs, and the runtime limits it to those approved abilities.
That lets plugins perform useful work without receiving unrelated access:
| A plugin could… | It might need to… | It still cannot… |
|---|---|---|
| Index published articles for search | Read content and contact the search service | Edit articles or contact other hosts |
| Optimize uploaded images | Read and manage media | Read user content |
| Send publishing notifications | Observe publishing and send email | Change the content being published |
| Provide configurable webhooks | Read selected events and contact public destinations | Reach private networks or other plugins’ storage |
The important part is that these abilities are independent. Giving a plugin access to media does not also expose users or unpublished content. Allowing it to contact one service does not open the rest of the network. These boundaries are enforced by the runtime, not left to the plugin author’s good intentions.
This isolation is not limited to Cloudflare deployments. On Cloudflare, EmDash runs each plugin as aDynamic Worker through the Worker Loader. On Node.js, EmDash starts workerd — the open-source Workers runtime — as a separate process and runs each plugin as an isolated service inside it. Plugins use the same manifests and capability-gated APIs on either platform. See the plugin sandbox documentation for setup and runtime differences.

From a single site to a website platform
EmDash can power an individual Astro site, but it is also designed for companies building website creation and hosting products.
Workers for Platforms lets those companies run each customer’s site as a Worker on Cloudflare’s global network. They do not need to provision a server for every site or build the surrounding networking and deployment infrastructure themselves. That leaves them free to focus on the experience their customers use to create and manage a website.
EmDash provides the content layer for that experience. A platform can use the admin interface directly, build its own interface on the API and CLI, or put an agent in front of the built-in MCP server. A bakery owner could update opening hours by asking for the change in plain language; the platform’s agent would handle reading, updating, and saving the content.
The sandboxed plugin model also gives platforms a safer way to offer extensions across many customer sites. Plugins receive only approved access to content, media, users, email, or external services, rather than running with unrestricted access to the whole application. Platforms can run their own plugin marketplaces with access to the full registry — or curate a selection of pre-approved plugins.
We are always looking for additional hosting partners that want to join us in developing new agent-oriented CMS experiences. Reach out to us if you’d like to learn more about reinventing with EmDash.
EmDash Build: an open source AI site builder
We are also releasing and open-sourcing an alpha of EmDash Build, an AI site builder that hosting providers, website builders, and platforms can run themselves and integrate with their own systems. Try the demo today at build.emdashcms.com, or explore the code.
If you’re building a site today, for yourself or for a client, you won’t start in an IDE. You’re more likely going to start with a chat box, and describe to an agent what you want. But once you have something, you could find that changing simple things requires you to go back to that prompt box, and either roll the dice on the result, or burn credits for a one-line change.
EmDash Build creates an EmDash site instead, which brings the full stack: server-rendered Astro pages, a database, media storage, and an admin interface. The agent designs a content model from the brief, fills it in through EmDash's MCP server, and writes the pages that display it. After that, you or your customer can edit text right on the page, schedule posts, or let an agent do it for you.
In EmDash Build, each project gets its own Cloudflare Sandbox container, where the agent, built on the Agents SDK, verifies its own work. Artifacts tracks every change as a git commit. When the site is published, the content moves into a production EmDash site, and deploys to the host's Workers for Platforms namespace.

Get started and get involved
With the release of EmDash 1.0, now is a great time to migrate your company’s marketing site or have an agent spin up that side project you’ve been talking about. Try out the EmDash playground site here.
To create a new EmDash site locally, via the CLI, run:
npm create emdash@latestOr you can do the same via the Cloudflare dashboard below:
If you’re ready to develop an EmDash plugin, our documentation has a step-by-step guide for creating and publishing a plugin to the registry.
We also welcome you to join our growing community of contributors on Discord. You don’t have to be an engineer to get involved — we welcome translators, issue triage managers, user experience designers, marketers, and all others who are excited about the future of content management systems.
