Open-source CMS, которую Cloudflare собрала с нуля на TypeScript и Astro. Без PHP, без легаси, с изолированными плагинами и встроенной поддержкой ИИ-агентов через MCP. Позиционируется как «духовный наследник WordPress» — только на современном стеке.
Зачем это нужно
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
| Аспект | WordPress | EmDash |
| Изоляция | Общий PHP-процесс, полный доступ к базе и файлам | Каждый плагин — отдельный Worker-изолят |
| Безопасность | Один уязвимый плагин компрометирует весь сайт | Взломанный плагин не выходит за рамки своих разрешений |
| Разрешения | Полный доступ по умолчанию | Явный манифест capabilities |
| Экосистема | 60 000+ плагинов | Минимальная (v0.1.0) |
Пример манифеста — плагин отправки email при сохранении контента:
{
"name": "email-on-save",
"capabilities": {
"content": ["read"],
"email": ["send"]
}
}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 — стоимость равна стоимости вашего хостинга.
Сравнение с альтернативами
| Критерий | EmDash | WordPress | Ghost | Strapi |
| Язык | TypeScript | PHP | JavaScript | TypeScript |
| Фронтенд | Astro (SSR/SSG) | PHP-шаблоны / Headless | Handlebars / Headless | Headless only |
| Безопасность плагинов | Sandbox-изоляция | Общий процесс | Ограниченные плагины | Middleware |
| AI-интеграция | Встроенный MCP | Через плагины | Через API | Через API |
| Serverless | Нативно (Workers) | Нет | Нет | Нет |
| Экосистема | Минимальная | Огромная | Средняя | Средняя |
| Зрелость | v0.1.0 preview | 20+ лет | 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-изоляцию плагинов вместо модели «всё имеет доступ ко всему»
Ссылки
По теме
- Статья: Как сайт становится живым контуром: человек, агент, Notion и live-сайт
- Блог: EmDash — Cloudflare собрал «наследника WordPress» за два месяца с помощью ИИ-агентов
- База знаний: DESIGN.md — дизайн-система в одном файле для AI-кодинга
Если вы собираете контентную систему на современном стеке и думаете, какую CMS взять за основу — это тема, в которой я могу помочь разобраться.