EmDash plugin registry: wat een plugin mag

EmDash 1.0 heeft een plugin-registry. We liepen alle 13 plugins na: welke rechten ze vragen, wat nog niet kan en waarom je LOADER-binding telt.

Ontwikkelaar op een zolderkamer bekijkt een rechtenvenster op zijn laptop, met een afvinklijst ernaast

Je klikt in de nieuwe EmDash plugin registry op Freeform, de formulierplugin van Solspace. Nog voor je iets installeert, zie je twee regels in een oranje kader: "Make unrestricted network requests" en "Send email". Een formulier dat naar elke server op internet mag praten. Dat scherm is het hele verhaal van EmDash 1.0, in het klein.

Cloudflare bracht EmDash 1.0 op 28 september uit, samen met een plugin-registry op het AT Protocol, het netwerk onder Bluesky.

Het idee: een plugin draait in een eigen afgeschermde omgeving en krijgt alleen de rechten die jij als beheerder goedkeurt. Voor wie EmDash plugins bouwt of zoekt, is dit de dag dat er eindelijk een plek is om ze te vinden. We hebben de registry dezelfde avond doorgelopen en alles wat erin stond opgeschreven.

De voorpagina van de EmDash plugin-registry, met een zoekbalk voor plugins, auteurs en rechten
De registry op plugins.emdashcms.com. Beeld: Cloudflare-blog, 28 september 2026

Dertien plugins, allemaal gratis

Op maandagavond 28 september rond acht uur stonden er dertien plugins op de voorpagina van plugins.emdashcms.com . Twee daarvan heten marketplace-test en zijn testplugins. Blijven er elf echte over. Een teller met het totaal geeft de site niet, dus dit is wat de voorpagina toonde, niet per se de hele catalogus.

Alle dertien hebben een MIT-licentie. Dat is geen toeval: de registry kan nu alleen gratis plugins aan. Betaalde plugins noemt Cloudflare iets "in future", met hetzelfde gedecentraliseerde model.

Per plugin toont de registry vóór installatie welke rechten hij vraagt. Die lijst hebben we per plugin overgenomen:

Plugin

Versie

Rechten

Netwerk

Freeform (Solspace)

0.1.3

2

onbeperkt

contact-form

1.0.0

0

geen

Cloudflare Email Sending

0.1.2

3

alleen api.cloudflare.com

Forward Email

0.1.1

2

alleen api.forwardemail.net

EmDash to Buffer

1.1.1

2

alleen api.buffer.com en api.bufferapp.com

ai-search

0.5.0

2

alleen api.cloudflare.com

LinguaDash

0.1.0

5

vier hosts: DeepL (2), OpenAI, Cloudflare

Eventual

0.8.0

2

geen

audit-log (EmDash)

0.2.2

3

geen

AT Protocol Syndication (EmDash)

0.2.2

2

onbeperkt

Webhook Notifier (EmDash)

0.2.2

3

onbeperkt

Acht van de elf houden het netjes: geen netwerk, of alleen de API's die ze nodig hebben. Drie vragen onbeperkt netwerk. Bij een webhook-plugin snap je dat, want jij bepaalt waar de melding heen gaat. Bij een formulierplugin is het een keuze van de maker.

Een pluginpagina in de registry met drie gevraagde rechten, waaronder netwerkverkeer naar api.cloudflare.com
Zo ziet de rechtenlijst eruit vóór je installeert. Beeld: Cloudflare-blog

Een rechtenscherm werkt alleen als iemand het leest

Het sandboxmodel is goed. In WordPress draait een plugin in hetzelfde PHP-proces als de rest van je site en kan hij bij je database, je bestanden en het netwerk. Cloudflare zet in de aankondiging een tekening naast elkaar: bij WordPress kan één kwaadaardige plugin alles raken, bij EmDash alleen wat zijn eigen Worker mag.

Schema van een WordPress-installatie naast een EmDash-installatie, waar elke plugin in een eigen Dynamic Worker draait
Links WordPress, rechts EmDash met een poortwachter tussen plugin en database. Beeld: Cloudflare-blog

Maar de beveiliging verschuift van de code naar de beheerder. EmDash laat zien wat een plugin wil, jij klikt op goedkeuren. Zie je "unrestricted network requests" bij een formulier en klik je toch door, dan heb je precies het oude WordPress-risico teruggehaald, alleen nu met een mooier scherm ervoor.

Bij Freeform is het waarschijnlijk onschuldig: formulieren sturen vaak door naar een CRM of webhook. Toch zou een formulierplugin die de doelen per site laat instellen hier sterker staan.

Ons oordeel: dit is een sterke start, juist omdat de registry je deze vraag laat stellen vóór er code draait. Dat maakt de rechtenlijst het belangrijkste wat op een pluginpagina staat. Sterren of downloadaantallen toont de registry nu niet eens.

Stabiel, maar de registry zelf nog niet

De blog noemt EmDash 1.0 "stable". De documentatie over publiceren zegt iets anders over de registry: "Experimental". Het formaat valt onder RFC 0001 en "will change while it's in flight", en makers moeten de plugin-CLI op een exacte versie vastzetten. Het CMS is dus 1.0, de plugin-winkel eromheen is nog in beweging. Wie nu publiceert, publiceert op een formaat dat kan verschuiven.

Onze eigen site kan geen enkele registry-plugin installeren

Hier moeten we eerlijk zijn over onszelf. In ons stuk over EmDash CMS schreven we dat de sandbox het oude pluginprobleem oplost. Klopt nog steeds, maar we vergaten erbij te zetten wat hij kost.

Op Cloudflare draait elke sandbox-plugin als Dynamic Worker. Volgens de sandbox-documentatie heb je daarvoor het Workers Paid-plan nodig, een worker_loaders-binding met de naam LOADER en een export van PluginBridge in je Worker.

De Cloudflare-templates zetten die binding standaard uit, zodat een nieuwe site op het gratis plan draait. Zonder binding zie je de registry wel, maar faalt installeren met SANDBOX_NOT_AVAILABLE.

We hebben het op onze eigen site gecontroleerd. emdashplugins.nl draait op EmDash 0.0.3, uit het voorjaar. De wrangler.jsonc heeft geen LOADER-binding. LinguaDash, een van de elf, vraagt zelfs letterlijk om "EmDash 0.42 or later". Een upgrade naar 1.0.1 staat dus op onze eigen lijst. Let bij die upgrade op het versienummer: op npm staat ook een emdash@1.0.0 uit april. Volgens de release notes is die per ongeluk gepubliceerd vanaf oude code. De echte eerste 1.x is 1.0.1.

Update 28 september, 21.18 uur: die upgrade is gedaan. emdashplugins.nl draait nu op EmDash 1.0.1, na 57 databasemigraties die we eerst op een kopie van onze eigen data hebben getest. De LOADER-binding zetten we er bewust nog niet in, dus registry-plugins installeren kan op deze site nog steeds niet.

Een betaalde plugin kan de registry nog niet in

EmDash kent twee soorten plugins. Een sandboxed plugin gaat de registry in en installeer je met één klik. Een native plugin is een npm-pakket dat je in astro.config.mjs zet, waarna je opnieuw deployt.

Native mag meer: eigen React-schermen in de admin, eigen Portable Text-blokken, scripts in de pagina. De prijs is dat hij in hetzelfde proces draait als je site, zonder afscherming.

Sandboxed

Native

Installeren

één klik vanuit de admin

npm install + astro.config aanpassen

Verspreiding

registry, ondertekend

npm

Afscherming

eigen Worker, alleen goedgekeurde rechten

geen, zelfde proces als je site

Eigen React-admin

nee, alleen Block Kit

ja

Betaald verkopen

nog niet

ja, via eigen licentie

Onze EmDash Forms is native, want hij heeft een eigen admin-scherm en eigen blokken voor in je pagina's. Die blijft dus buiten de registry en loopt via een licentie, zoals op de prijspagina staat. Het rechtenmodel geldt er wel voor.

In de broncode van 1.0.1 hebben we nagekeken wat er met de oude rechtnamen gebeurt: network:fetch heet nu network:request en write:media heet media:write. De oude namen werken nog in een overgangsperiode, met een waarschuwing bij het valideren en een harde fout bij publiceren. Die hernoeming zit in onze upgrade.

Wie heeft de LOADER-binding al?

Bouw je zelf een EmDash-site op Cloudflare? Open wrangler.jsonc en zoek naar worker_loaders. Staat hij er niet, dan kan je site geen enkele plugin uit de registry draaien. Beslis dan eerst of je het Paid-plan wilt, voordat je in de registry gaat winkelen. Staat hij er wel, lees dan bij elke plugin de rechtenlijst voordat je op goedkeuren klikt.

Ben je nog aan het kiezen welke plugins je site echt nodig heeft, dan helpt ons stuk over welke EmDash plugin je als eerste bouwt . Kom je van WordPress, begin dan bij WordPress naar EmDash migreren : daar staat hoe je eerst je pluginlijst in kaart brengt.

Betaald publiceren hangt aan Atproto Spaces

Cloudflare schrijft dat het "with interest" kijkt naar de Atproto Spaces Alpha, als basis voor betaalde plugins zonder centrale winkel. Pas als daar iets werkends uitkomt, kan een maker geld vragen zonder zijn identiteit bij één bedrijf onder te brengen. Tot die tijd blijft de registry een etalage van gratis plugins, en blijft betaald werk op npm. De eerste e-commerceplugin, van Urumi, zegt daarover het meest: blijft die gratis in de registry, of komt hij als native pakket met een prijskaartje?