Stars
Forks
Watchers
Developer links
EmDash
EmDash rebuilds the WordPress publishing experience as an open-source CMS, with drafts, revisions, scheduled posts, a media library, menus, widgets, and plugins that run in sandboxes and can only do what they declare. Writers get a rich-text editor with featured images, slugs, bylines, categories, and tags, plus signed preview links for unpublished work and a calendar of everything published or scheduled. Site builders define their own content types in a visual schema builder, choosing required and searchable fields, URL patterns, comments, SEO metadata, and edit locking so two people never overwrite each other. Uploads are drag and drop, with folders and filename search in the media library. Menus, sidebar widgets, reusable sections, and redirects with a 404 log shape the public site. Access is passkey-first, with OAuth and magic-link fallbacks, four roles from Contributor to Administrator, comment moderation, and personal API tokens. Coming from WordPress? Point the importer at a migration key, a site URL, or an exported XML file and it carries over posts, pages, media, and taxonomies. Plugins add hooks, settings, admin pages, dashboard widgets, custom blocks, and API routes after declaring capabilities such as content:read or email:send, while a built-in MCP server and CLI let AI assistants manage content directly. Blog, marketing, and portfolio templates give new sites a head start. Running on a dedicated VPS on RepoCloud with guaranteed CPU, RAM, and SSD, full root SSH access, and a browser serial console. MIT licensed.
Benefits
- Design content types without code
- A visual schema builder creates collections with typed fields, required and searchable flags, URL patterns, comments, SEO metadata, and edit locking, and each collection gets its own SQL table.
- Plugins that cannot overreach
- Sandboxed plugins declare capabilities such as content:read and email:send in a manifest and can do exactly that and nothing else, unlike WordPress plugins with full database and filesystem access.
- Fits comfortably on one VPS
- Node.js 22 or newer with SQLite and local media storage runs on one server, while PostgreSQL or libSQL serve several instances and S3-compatible storage such as MinIO keeps media off the server disk.
- Bring your WordPress content along
- An import wizard accepts a migration key from the EmDash Exporter plugin, a WordPress site URL, or an exported XML file, bringing over posts, pages, media, and taxonomies.
Features
- Rich Text Editing
- A TipTap editor stores content as Portable Text JSON, with featured images, slugs, bylines, categories, tags, revisions, drafts, signed previews, and scheduled publishing handled by a built-in scheduler.
- Media Library
- Drag-and-drop uploads with folders, filename search, and type filters; signed S3 uploads go straight to storage, and local disk, R2, or any S3-compatible bucket can hold the files.
- Passkey-First Authentication
- WebAuthn passkeys lead sign-in, with OAuth and magic-link fallbacks, four roles (Administrator, Editor, Author, Contributor), self-signup limited to approved domains, and personal API tokens for programmatic access.
- Sandboxed Plugin System
- definePlugin() adds lifecycle hooks, KV storage, settings, admin pages, dashboard widgets, custom blocks, and API routes; plugins run in Worker isolates or a workerd process on Node.js.
- MCP Server and CLI
- A built-in MCP server and the emdash CLI let tools such as Claude and ChatGPT manage content and schema, and published agent skills teach coding assistants the APIs.
- Starter Templates
- The Blog template adds sidebar widgets, search, RSS, and tags, Marketing builds landing pages from modular blocks, and Portfolio offers a project grid with tag filtering.