The core architectural difference
EmDash's bet is that the future of publishing is stateless and edge-native. Content lives as JSON at the edge (Cloudflare D1 or KV), plugins run in isolated Workers, and you deploy everything through Cloudflare's global network. There's genuinely good thinking here — plugin sandboxing in particular is a smart answer to the plugin CVE problem that killed WordPress's security story.
VeloCMS's bet is the opposite: that the average creator running a newsletter, paywall, and AI-assisted blog doesn't want to manage Cloudflare Workers configuration. We run on Railway — traditional containers, a stateful PocketBase process per tenant, and all the platform infrastructure handled. You get a subdomain, a login, and a working blog in under a minute. Cloudflare for SaaS provisions the cert when you bring a custom domain. You never touch a wrangler.toml.
The multi-tenancy gap
This is the starkest difference on the feature list. VeloCMS was designed for multi-tenancy from day one — agencies running client blogs, SaaS founders managing reader communities for multiple products, teams that need isolated content databases under one billing roof. You get one PocketBase instance per tenant, wildcard subdomain routing, and tenant-scoped API rules that make cross-tenant data leakage impossible by construction. EmDash is single-tenant per install. Running ten separate blogs means ten separate EmDash deployments, ten separate Cloudflare Workers setups, ten separate billing relationships. That's fine for a solo developer who wants full control over each site. It's not ideal for an agency billing 40 clients.
Bundled vs. pluggable commerce and newsletter
VeloCMS ships native member paywalls (Stripe BYOK, magic-link auth, HMAC-signed unsubscribe), newsletter blast, and a Resend email layer out of the box. If you want to charge readers for a premium post, that's a toggle in the post editor — no plugin install, no Stripe account wiring, no third-party email service to connect. EmDash routes all of that through its plugin ecosystem. The sandboxed model is secure, but it adds friction: find the right plugin, audit it, configure it, pay for it separately. For writers and creators who just want it to work, that's overhead they didn't sign up for.
Where EmDash genuinely wins
Edge-native latency is real — Cloudflare Workers at the edge is faster than a Railway container in a fixed region for globally distributed readers. If your audience spans five continents and milliseconds matter, EmDash's architecture has a structural advantage. Plugin sandboxing is also a legitimately better security model than VeloCMS's approach (we just don't have plugins at all, which sidesteps the problem rather than solving it). And for developers who want to extend a CMS with custom JavaScript running in isolation — EmDash is the better playground.