База знаний

EmDash — open-source CMS от Cloudflare на базе Astro

Open-source CMS нового поколения от Cloudflare: TypeScript, Astro, sandbox-плагины, встроенный MCP-сервер и serverless-деплой. Позиционируется как современная замена WordPress.

Опубликовано

Open-source CMS, которую Cloudflare собрала с нуля на TypeScript и Astro. Без PHP, без легаси, с изолированными плагинами и встроенной поддержкой ИИ-агентов через MCP. Позиционируется как «духовный наследник WordPress» — только на современном стеке.

⚠️
Статус: v0.1.0 preview (апрель 2026). Ранний developer beta — не для продакшн-сайтов. Лицензия MIT.

Зачем это нужно

WordPress — это 20 лет PHP-наследия, 60 000 плагинов с полным доступом к базе и файловой системе, и модель безопасности из начала двухтысячных. 96% уязвимостей WordPress связаны именно с плагинами.

EmDash берёт то, что сделало WordPress успешным — простоту, расширяемость, экосистему — и пересобирает без легаси. Каждый плагин работает в изолированном sandbox, контент хранится как структурированный JSON (Portable Text), а деплой — serverless на Cloudflare Workers.


Ключевые возможности

ВозможностьЧто это значит
Темы на AstroТемы — обычные Astro-проекты с компонентами, Tailwind CSS, React/Vue/Svelte через Islands. Никакого проприетарного формата
Sandbox-плагиныКаждый плагин запускается в изолированном Dynamic Worker. Доступ к данным — строго через capabilities в манифесте
Кастомные типы контентаСоздание коллекций и полей прямо в админке. Каждая коллекция — отдельная SQL-таблица
AI-nativeВстроенный MCP-сервер. ИИ-агенты управляют контентом, структурой и настройками как полноценные пользователи
WordPress-импортВстроенная миграция: посты, страницы, кастомные типы, медиа, таксономии
ServerlessДеплой на Cloudflare Workers — масштабируется до нуля и обратно. Или на любой Node.js-сервер
Portable TextКонтент хранится как структурированный JSON, а не сырой HTML. Проще парсить, трансформировать, переиспользовать
Генерация типовКоманда npx emdash types создаёт TypeScript-типы из живой схемы базы данных

Как устроена архитектура

graph TD
    A["Браузер"] --> B["Astro — SSR / SSG"]
    B --> C["EmDash Integration"]
    C --> D["REST API"]
    C --> E["Админ-панель"]
    C --> F["Система плагинов"]
    D --> G["SQLite / Cloudflare D1"]
    E --> G
    F --> H["Dynamic Workers — sandbox"]
    H -.->|"capabilities"| G
    C --> I["R2 / Локальное хранилище"]
    C --> J["MCP Server"]
    J --> K["ИИ-агенты"]

Три принципиальных решения:

  • Astro вместо PHP-шаблонов. Один рантайм в dev и production (Cloudflare workerd). Темы — обычные Astro-проекты
  • Плагины в изоляции. Каждый плагин — отдельный Worker-изолят. Нет прямого доступа к базе или файлам. Доступ — только через объявленные capabilities в манифесте
  • Контент как данные. Portable Text (JSON) вместо HTML. Это упрощает работу ИИ-агентов и мультиканальную публикацию

Быстрый старт

npm create emdash@latest

Подключается как Astro-интеграция:

// astro.config.mjs
import emdash from "emdash/astro";
import { d1 } from "emdash/db";

export default defineConfig({
  integrations: [emdash({ database: d1() })],
});

Запрос контента — через Astro Live Collections, без ребилдов и отдельного API:

---
import { getEmDashCollection } from "emdash";
const { entries: posts } = await getEmDashCollection("posts");
---

{posts.map((post) => <article>{post.data.title}</article>)}

Генерация TypeScript-типов из текущей схемы:

npx emdash types

Безопасность плагинов: EmDash vs WordPress

АспектWordPressEmDash
ИзоляцияОбщий PHP-процесс, полный доступ к базе и файламКаждый плагин — отдельный Worker-изолят
БезопасностьОдин уязвимый плагин компрометирует весь сайтВзломанный плагин не выходит за рамки своих разрешений
РазрешенияПолный доступ по умолчаниюЯвный манифест capabilities
Экосистема60 000+ плагиновМинимальная (v0.1.0)

Пример манифеста — плагин отправки email при сохранении контента:

{
  "name": "email-on-save",
  "capabilities": {
    "content": ["read"],
    "email": ["send"]
  }
}
📌
Dynamic Workers (sandbox-плагины) доступны только на платных аккаунтах Cloudflare (от $5/мес). На бесплатном плане плагины можно отключить.

MCP-сервер и ИИ-агенты

EmDash поставляется со встроенным MCP-сервером (Model Context Protocol). Это значит, что ИИ-агенты могут:

  • Создавать и редактировать контент
  • Управлять коллекциями и схемой
  • Загружать медиафайлы
  • Интроспектировать структуру данных

Агенты работают с Portable Text (структурированный JSON), а не парсят HTML — это принципиально упрощает автоматизацию контента.


Тарифы и инфраструктура

EmDash — бесплатный и open-source. Платите только за инфраструктуру.

КомпонентБесплатный план CloudflareПлатный (от $5/мес)
Workers (рантайм)100 000 запросов/день10 млн запросов/мес
D1 (база данных)5 млн чтений/день, 100K записей/день25 млрд чтений/мес
R2 (медиа)10 ГБ, 10 млн чтений/мес10 ГБ включено, далее $0.015/ГБ
Sandbox-плагины❌ Недоступно✅ Включено

Для небольшого блога или личного сайта бесплатного плана хватит с запасом (без sandbox-плагинов). Для продакшн-проекта — от $5/мес.

EmDash также работает на любом Node.js-сервере с SQLite — стоимость равна стоимости вашего хостинга.


Сравнение с альтернативами

КритерийEmDashWordPressGhostStrapi
ЯзыкTypeScriptPHPJavaScriptTypeScript
ФронтендAstro (SSR/SSG)PHP-шаблоны / HeadlessHandlebars / HeadlessHeadless only
Безопасность плагиновSandbox-изоляцияОбщий процессОграниченные плагиныMiddleware
AI-интеграцияВстроенный MCPЧерез плагиныЧерез APIЧерез API
ServerlessНативно (Workers)НетНетНет
ЭкосистемаМинимальнаяОгромнаяСредняяСредняя
Зрелостьv0.1.0 preview20+ лет10+ лет5+ лет

Ограничения (v0.1.0)

EmDash — ранний preview, и это важно учитывать:

  • Экосистема плагинов практически отсутствует — нет аналога WordPress Plugin Directory
  • Темы — только 2 официальных стартера, маркетплейса нет
  • Документация базовая, в процессе наполнения
  • Нет визуального редактора уровня Gutenberg
  • Комьюнити только формируется (GitHub, Reddit r/emdash_cms)
  • Cloudflare прямо говорит: не для продакшна

Когда стоит присмотреться

  • Вы строите новый проект на Astro и хотите CMS с нативной интеграцией
  • Вам нужна CMS с AI-native архитектурой и MCP-сервером из коробки
  • Вы мигрируете с WordPress и готовы к serverless-стеку
  • Вы хотите sandbox-изоляцию плагинов вместо модели «всё имеет доступ ко всему»

Ссылки


По теме

Если вы собираете контентную систему на современном стеке и думаете, какую CMS взять за основу — это тема, в которой я могу помочь разобраться.