Cloudflare lanceerde EmDash, en de plugin-sandbox is het échte verhaal

Cloudflare kondigde EmDash aan op 1 april 2026. Het is nog geen WordPress-vervanger, maar de capability-based plugin-sandbox is het interessantste antwoord op plugin-security dat ik in jaren heb gezien.

Op 1 april 2026 kondigde Cloudflare EmDash aan, in het bericht omschreven als "the spiritual successor to WordPress that solves plugin security." De lanceerdatum en de naam zorgden voor wat gefronste wenkbrauwen in de WordPress-wereld. Maar Matt Kane, hoofdontwikkelaar van EmDash, bevestigde dezelfde dag op Hacker News: "Name is a joke but the project is real. I've been working full time on this since mid-January. This isn't a vibe-coded weekend project."

Ik heb een paar avonden besteed aan de aankondiging, de docs, de GitHub-repo, de Hacker News-thread en de eerste reacties uit de community. Mijn eerlijke kijk: EmDash is geen WordPress-vervanger. Misschien wordt het dat ook nooit. Maar de architectuurkeuzes rond plugin-security zijn wel echt interessant, en het waard om beter naar te kijken.

TL;DR: EmDash is een TypeScript-CMS bovenop Astro en Cloudflare Workers, zonder PHP en zonder ook maar een regel WordPress-code. De opvallendste eigenschap is een capability-based plugin-sandbox: elke plugin draait in een eigen V8-isolate via Dynamic Workers en krijgt alleen toegang tot APIs die in het manifest expliciet zijn gedeclareerd. De catch: die sandbox werkt alleen op de betaalde Cloudflare-infrastructuur. De plugin-marktplaats is leeg. Bestaande WordPress-plugins en -thema's werken niet. Het is een v0.1.0 developer-beta, zeker nog niet productieklaar.

Inhoudsopgave

Wat EmDash eigenlijk is

Om door de marketing heen te prikken: EmDash is een compleet nieuw CMS, vanaf scratch geschreven in TypeScript, gebouwd op Astro, en draait voornamelijk op Cloudflare Workers. Content gaat in Cloudflare D1 (een gedistribueerde SQLite-database), media in R2 of S3-compatible storage. De Cloudflare blogpost is daar ook heel duidelijk over: "while EmDash aims to be compatible with WordPress functionality, no WordPress code was used to create EmDash."

Dat is belangrijk. Dit is geen php-wasm-WordPress aan de edge. Dit is ook geen managed WordPress-install op Workers. Het is een volledig eigen codebase die toevallig de vocabulaire van WordPress leent (Pages, Posts, Media, Menus, Users) en een importer meelevert voor WordPress WXR-exports. Alles wat verder gaat dan content, dus thema's, plugins, custom post types, functions.php-logica, moet opnieuw worden gebouwd.

De licentie is trouwens MIT, een bewuste breuk met de GPL van WordPress. De GitHub-repo op github.com/emdash-cms/emdash haalde in de eerste week zo'n 8.200 stars, best veel momentum voor een v0.1.0-release.

Het beveiligingsmodel: capability-based plugin-sandboxing

Dit is het deel waar ik het echt over wil hebben. Plugin-security in WordPress is een goed gedocumenteerd structureel probleem: in 2025 werden meer dan 11.000 pluginkwetsbaarheden ontdekt, en bijna de helft van de kritieke issues had op moment van publicatie nog geen patch. Patchstack's State of WordPress Security-rapport schrijft 96% van alle WordPress-beveiligingsproblemen toe aan plugins. EmDash probeert dit op architectuurniveau op te lossen, in plaats van achteraf met scans en patches.

Het kernidee: elke EmDash-plugin komt met een manifest waarin de benodigde capabilities staan. De beschikbare capabilities zijn onder andere content:read, content:write, media:write, email:send, network:fetch (met een expliciete hostname-allowlist), storage:kv, cron:schedule en admin:ui. Voordat EmDash een plugin opstart, leest hij het manifest en levert alleen de APIs die daarin staan.

Een plugin zonder network:fetch in het manifest kan fysiek geen HTTP-requests doen. De binding bestaat gewoon niet in de runtime-scope. Een call naar een niet-gedeclareerde API geeft undefined terug. En zelfs een plugin die network:fetch wél declareert, moet precies opsommen welke hostnames hij mag bereiken:

network: {
  allowedHostnames: ["hooks.slack.com"]
}

Dus een gecompromitteerde analytics-plugin kan niet naar een server van de aanvaller phonen, omdat die hostname nooit is gedeclareerd in het manifest dat de site-eigenaar bij installatie heeft goedgekeurd.

De isolatie zelf komt van Dynamic Workers van Cloudflare, die op 24 maart 2026 in open beta gingen, precies acht dagen voordat EmDash werd gelanceerd. Elke plugin draait in een eigen V8-isolate (dezelfde isolatie die Chrome gebruikt om tabs gescheiden te houden), zonder gedeeld geheugen. Een isolate start binnen 5ms op. Er is geen bestandssysteem-toegang. Geen process spawning. Geen raw SQL. Een plugin praat via een getypeerde Content API met het CMS, en verder met niks.

Vergelijk dat eens met hoe plugins in WordPress werken, waar elke plugin draait binnen hetzelfde PHP-proces als WordPress zelf, met volledige toegang tot de database, het bestandssysteem, het uitgaande netwerk en de mogelijkheid om willekeurige PHP te definiëren in functions.php. Een kwetsbare WordPress-plugin is in de praktijk een kwetsbare WordPress-installatie. Een kwetsbare EmDash-plugin is gewoon een kwetsbare plugin.

Dat is wel degelijk een heel ander uitgangspunt voor beveiliging. De 96% volgt het WordPress-ecosysteem al jaren, en het antwoord is altijd geweest: "schrijf veiligere plugincode" en "scan sneller na publicatie." EmDash is de eerste serieuze poging die ik zie om plugins architectonisch te ontdoen van de mogelijkheid om schade aan te richten, in plaats van te vertrouwen op auteurs die perfect moeten coderen en hosts die kwaadaardige code achteraf moeten afvangen.

De catch: de sandbox werkt alleen op Cloudflare

Dit is het stuk dat de Cloudflare-blogpost wat onderbelicht. EmDash is open source en kun je zelf hosten op elke Node.js-server met SQLite of PostgreSQL. Maar de Dynamic Workers API waar de plugin-sandbox op draait, is een betaald Cloudflare-product, met Workers Paid vanaf $5 per maand. Draai je EmDash zelf op Node.js, dan moet je het worker_loaders-blok in wrangler.jsonc uitcommenten, en is plugin-sandboxing gewoon uitgeschakeld.

In de Hacker News-thread komt de meest opgemerkte kritiek precies hierop neer: de headline-feature op het gebied van beveiliging werkt alleen op Cloudflare's eigen runtime, en op elke andere host is EmDash niet meer dan een TypeScript-CMS zonder het security-model dat zijn bestaansrecht zou moeten rechtvaardigen.

Matt Mullenweg zei hetzelfde in zijn reactie op de lancering. Volgens hem is de geest van WordPress dat het overal kan draaien, "including a Raspberry Pi or a random web host in Indonesia charging 99 cents a month," en stort het security-verhaal van EmDash in zodra je buiten Cloudflare's betaalde tier komt. Wat botter formuleerde hij het ook: hij denkt dat EmDash "created to sell more Cloudflare services" is.

Beide punten zijn fair. Het beveiligingsmodel en de vendor lock-in zijn dezelfde architectuurkeuze. Wil je de sandbox, dan draai je op Cloudflare. Self-host je, dan krijg je de sandbox niet. Een middenweg is er in v0.1.0 niet. Dat is een echte trade-off, en het is goed om die te kennen voordat je enthousiast wordt over de architectuur.

Andere invalshoeken die aandacht verdienen

De plugin-sandbox is voor mij het grote verhaal, maar er zitten nog een paar andere dingen in de lancering die opvallen.

Agent-native vanaf het begin. Elke EmDash-installatie komt met een Model Context Protocol-server en een AGENTS.md-bestand. Joost de Valk, de maker van Yoast SEO, schreef dat EmDash "agent-native, not agent-compatible" is, en beschreef het als het eerste CMS dat AI-agents als volwaardige gebruikers behandelt naast mensen. Of je die framing nu koopt of niet, het technische signaal is duidelijk: Cloudflare gokt erop dat AI-agents CMSen direct gaan bedienen, en het datamodel weerspiegelt die gok.

Content opgeslagen als Portable Text, niet als HTML. Portable Text is een JSON-gebaseerd structureel contentformaat, oorspronkelijk van Sanity. Het betekent dat content door machines te parsen en te transformeren is zonder gedoe met DOM. Voor multichannel publiceren (dezelfde content naar web, mobiel, RSS, voice of een AI-samenvatter) is dat een schonere basis dan de the_content-soep in WordPress.

De context van de Astro-overname. Cloudflare nam Astro over in januari 2026. EmDash draait op Astro. EmDash startte halverwege januari. Dat is geen toeval. EmDash is het eerste grote product dat laat zien wat Cloudflare met Astro gaat doen nu ze het in handen hebben.

Dynamic Workers als showcase. Dynamic Workers ging acht dagen voor EmDash in open beta. De use case van gesandboxte plugins is precies waar Dynamic Workers voor is gebouwd. EmDash is dus net zo goed een demo van Dynamic Workers als een zelfstandig product.

Passkey-first authenticatie. Geen wachtwoorden meer als standaard. Passkey-authenticatie plus OAuth plus magic links, met vier ingebouwde rollen. Daarmee verdwijnt al een van de vaakst misbruikte aanvalsoppervlakken van WordPress: brute-force login op /wp-login.php.

x402-betalingen ingebouwd. EmDash ondersteunt native het x402 payment protocol, een microtransactie-standaard die Cloudflare en Coinbase samen hebben opgezet, en waar ook Stripe, Visa, Mastercard, AWS en Google achter staan. Of x402 doorbreekt is een ander verhaal, maar EmDash is er vanaf dag één klaar voor.

Waarom dit nog geen WordPress-vervanger is

Laat ik nauwkeurig zijn over het gat, want dat is belangrijk.

WordPress draait naar schatting 43% van het web, omdat het toegankelijk is voor niet-ontwikkelaars. Een kapster in Utrecht kan een domein kopen, WordPress installeren via de one-click installer van haar host, een thema uitzoeken en dezelfde middag een site online hebben. Ze weet niet wat TypeScript is. Ze raakt nooit een CLI aan. Wil ze een contactformulier, dan installeert ze Contact Form 7 en klaar.

EmDash kan dat in v0.1.0 gewoon niet. Om een EmDash-site vandaag live te krijgen heb je nodig:

  • Een GitHub-account
  • Node.js en pnpm lokaal geïnstalleerd, of een Cloudflare-account dat de one-click deploy doet
  • Begrip van Astro-projecten, TypeScript en het mentale model achter Cloudflare Workers
  • Een plugin-ecosysteem dat nog niet bestaat (de marktplaats is leeg bij launch)
  • Thema's die nog niet bestaan (er worden drie starter templates meegeleverd)

Bestaande WordPress-thema's werken niet. Bestaande WordPress-plugins werken niet. Bij migratie gaat alleen je content mee, via de WXR-import. De rest is bouwen. De community manager van Kinsta vatte het diplomatiek samen: "This is way too complex of a tool for the majority of WordPress users to switch to."

Er zit trouwens ook een governance-kant aan. Cloudflare is eigenaar van EmDash. De MIT-licentie betekent dat je de code kunt forken, maar de Dynamic Workers-infrastructuur waarop het security-model leunt is proprietary en betaald. Dat is een ander model dan de WordPress Foundation / GPL-constructie, en dat doet ertoe als governance een reden was om voor WordPress te kiezen.

Dus: heb je vandaag een WordPress-site, dan hoef je naar aanleiding van deze lancering niks te doen. Je hoeft niet te migreren. Niet te panikeren. Voor verreweg de meeste WordPress-sites is EmDash in v0.1.0 niet eens een theoretische optie. Dezelfde redenering die ik eerder gebruikte in mijn stuk over wanneer headless WordPress rationeel is en wanneer onnodige complexiteit geldt hier ook. Nieuwe architectuur is interessant, maar je hebt wel een duidelijke reden nodig om de complexiteitsprijs te betalen.

Tot slot

Het plugin-security-probleem is namelijk echt. WordPress leeft met duizenden publiek gemaakte pluginkwetsbaarheden per jaar en een mediaan van 5 uur tussen publicatie en eerste grootschalige exploitatie. Pluginauteurs aansporen om veiligere code te schrijven heeft dat niet opgelost. Virtual patching en WAFs helpen wel, maar zijn per definitie reactief. Een runtime die kwaadaardige plugins architectonisch incapabel maakt om het kwade te doen, is een ander soort antwoord. En ook als de Cloudflare-implementatie gekoppeld is aan een betaalde tier, verdient het idee het om invloed uit te oefenen op hoe het WordPress-ecosysteem de komende jaren over plugin-security nadenkt.

De belangrijkste punten op een rij

  • EmDash is een echt product, op 1 april 2026 aangekondigd door Cloudflare. Het is een v0.1.0 developer-beta, nog niet productieklaar, en Matt Kane heeft persoonlijk bevestigd dat het geen 1-aprilgrap is.
  • Het grote idee is capability-based plugin-sandboxing: elke plugin draait in een eigen V8-isolate via Dynamic Workers en krijgt alleen toegang tot APIs die het manifest expliciet declareert. Dit is de eerste serieuze architecturale poging die ik zie om het plugin-security-probleem van WordPress aan te pakken.
  • De catch: de sandbox werkt alleen op de betaalde infrastructuur van Cloudflare. Self-hosted installaties krijgen geen plugin-isolatie. Dat is terechte kritiek uit de open-sourcecommunity.
  • Andere interessante zaken: agent-native ontwerp met een MCP-server per instance, content opgeslagen als Portable Text, passkey-first authenticatie, ingebouwde x402-betalingen en een MIT-licentie.
  • Het is vandaag nog geen WordPress-vervanger. De plugin-marktplaats is leeg, WordPress-plugins en -thema's draaien niet, en de tooling gaat uit van een developer-publiek.
  • Heb je een WordPress-site, dan vraagt deze lancering geen actie van je. Maar het beveiligingsmodel is het in de gaten houden waard.

WordPress onderhoud zonder omkijken?

Ik regel updates, backups en beveiliging, en houd performance strak—zodat storingen en traagheid niet terugkomen.

Bekijk WordPress onderhoud

Doorzoek deze site

Begin met typen om te zoeken, of blader door de kennisbank en blog.