The n8n matrix was easy mode. The PocketBase one was hard mode, because PocketBase is Magic's closest architectural sibling.
This one is different again. Directus is not Magic's closest sibling — it is Magic's closest competitor. If you are evaluating a platform that wraps a database you already have, in whatever engine it happens to live in, without migrating anything, then Directus and Magic are pitching you the same sentence. It is a genuinely excellent product with a decade of polish on it, and on several rows below it beats Magic outright.
One sentence of thesis before the table, because every row descends from it:
Directus computes your API at runtime. Magic writes it to disk.
Directus introspects your schema, holds permissions as configuration, and resolves each request against both. Nothing is written down — the effective API exists only as the result of that computation. Magic's generator emits actual endpoint files you can open, read, diff, edit and commit. Watch how far that one difference propagates.
The matrix
| Feature | Directus | Magic Cloud |
|---|---|---|
| Licence | Monospace Sustainable Core License — source-available, non-compete, with licence-key enforcement you may not circumvent; converts to GPL-3.0 four years after each release | MIT, all of it, no thresholds and no conversion date |
| Free tier | Core: 3 user seats, 25 collections, 5 flows, no SSO | Self-host everything, uncapped, forever |
| Small-company escape hatch | Open Innovation Grant — fully permissive and free under $5M revenue and under 50 employees | Not needed; MIT has no revenue test |
| Paid tier | Team at $499/mo annual, $599 monthly — 10 SSO seats, 50 collections, 20 flows | $100/mo per cloudlet, $300 for double the machine |
| Per-user cost | $50 per extra seat per month | None — unlimited users, never counted |
| Table cap | A collection maps to a database table: 25 on Core, 50 on Team, $100 per extra 25 | None |
| Managed hosting | $99/mo add-on, on top of the plan | Included in the cloudlet price |
| SSO | Team plan and up; unavailable on Core at any price | Eight OIDC providers built in — Google, Microsoft, GitHub, LinkedIn, Slack, Okta, Auth0, Keycloak |
| The API | Computed at runtime from schema and config | Generated Hyperlambda files — real, readable, versionable |
| Schema changes | Reflected instantly, nothing to regenerate | Re-run the generator |
| Database engines | PostgreSQL, MySQL, MariaDB, SQLite, SQL Server, OracleDB, CockroachDB | SQLite built in, plus MySQL, PostgreSQL and SQL Server |
| Access control | Granular: field-level and item-level rules as filter expressions | Endpoint-level role gating, plus runtime slot whitelisting |
| Custom logic | Extensions in TypeScript, with a build step; Flows with sandboxed JS operations | Hyperlambda files, hot — no compile, no restart, generated from a prompt if you like |
| Content features | Revisions, drafts, translations, activity log — a decade of CMS heritage | None of it; not a CMS |
| Assets | File library with on-the-fly image transformation | File system, upload tickets, image resize and convert |
| Realtime | WebSockets and GraphQL subscriptions | SignalR — programmable events |
| Frontend hosting | Not the story | First-class static and SPA hosting per cloudlet |
| AI and RAG | AI Assistant, AI Translations on higher tiers | ML types, crawling, vectorisation, deployable chatbots |
| Agent story | MCP server over the API | Native MCP with OAuth; agents generate new tools for themselves at runtime inside RBAC |
| Non-developers | Genuinely usable by editors and ops people | A developer tool, and honest about it |
| Community | Large, funded, SOC 2, partner programme | Small |
Where Directus wins, stated plainly
Per the rules of this series: no rebuttals in this section. They live below.
Permissions granularity. Field-level and item-level rules, expressed as filter conditions, evaluated per request. Magic gates by role at the endpoint. If your requirement is "this role sees every column except salary, and only rows in their own region", Directus expresses that as configuration and Magic expects you to write it. That is the widest genuine capability gap in the table.
Instant schema reflection. Add a column, and Directus's API has it. No regeneration step, no stale endpoints, no forgetting to re-run anything. This is the direct upside of the runtime model, and on a schema that changes daily it is a real ergonomic win.
Content management. Revisions, drafts, translations, an activity log people actually audit. Directus descends from headless CMS and it shows in a hundred small places Magic has never attempted.
Non-developer usability. You can hand Directus Studio to a marketing team. You cannot hand Hyper IDE to a marketing team, and I would not suggest trying.
Database engines. Oracle, MariaDB and CockroachDB are supported there and not here.
Ecosystem and assurance. A funded company, a partner programme, SOC 2 Type II, an extension marketplace, a large forum, and people you can hire who already know it. Every one of those is a cost I carry on my side of this table.
Where the bets diverge
The runtime model versus the generated one. Directus's API is a computation; Magic's is a file. That means Directus wins on schema churn and loses on inspection. There is no artefact to review, diff, or hand to a code reviewer — your effective API and permission surface live as rows in a config database, and the only way to know what they do is to ask the running system. Magic's endpoints are text on disk. You can read them, put them under git, and — the part that matters most here — hand them to an AI agent that can read them too.
Which is why the agent stories are not comparable. Both have MCP. But an agent pointed at Directus can call the API; an agent pointed at Magic can read what the API is, and then write more of it. Magic's generator emits Hyperlambda that executes as an AST where every node must bind to a whitelisted slot, so generated code cannot exceed its permissions no matter what the prompt said. That is the difference between an agent that queries your backend and an agent that builds it. There is a standing $100 bounty on proving that boundary wrong.
The extension model, again. This series keeps landing here because it keeps being the fork in the road. Directus extensions are TypeScript with a build step; Flows give you sandboxed JS for the smaller cases. Magic's custom logic is a Hyperlambda file that is live the moment it is saved — no compiler, no restart, no deploy — and can be written from a sentence.
Pricing shape, which is a licensing argument wearing a costume. Directus meters the two things that grow when your project succeeds: people and tables. Core stops at 3 seats and 25 collections. Team is $499/mo for 10 seats and 50 collections, with extra seats at $50/mo and extra collections at $100 per 25. Managed hosting is another $99. Magic charges per cloudlet — $100 or $300 — and counts neither users nor tables, ever.
Work an example. A team of six developers wrapping a 70-table legacy database, hosted: on Directus that is Team, plus one 25-collection pack, plus cloud — call it $698/mo before anyone else logs in. On Magic it is $100, and the seventh developer changes nothing.
Two honest caveats on that comparison, because it flatters me. If you are under $5M revenue and under 50 employees, the Open Innovation Grant makes Directus free and fully permissive, and this entire paragraph is moot for you — take the grant. And Directus is grandfathering existing customers, so anyone already on an older plan is not living in the table above.
The licence, which is the row I would read twice. Directus is source-available, not open source: the Monospace Sustainable Core License forbids Competing Use, forbids circumventing the licence-key functionality, and grants GPL-3.0 only on the fourth anniversary of each release. That is a defensible way to run a company, and I say that without snark — it is a real answer to a real sustainability problem. But it is not the same deal as MIT, and the difference shows up on the day your revenue crosses a threshold, or your lawyer asks what "Competing Use" means for the product you are building on top of it. Magic is MIT with nothing held back, no key, no threshold, no clock.
The decision rule
Choose Directus if: non-developers will use the admin UI daily; you need field- and row-level permissions as configuration rather than code; your content needs revisions, drafts or translations; your schema changes constantly; you are on Oracle or CockroachDB; or you qualify for the Open Innovation Grant, in which case a mature, funded, SOC 2 platform costs you nothing and that is very hard to argue with.
Choose Magic if: you are above the grant's thresholds and do not want per-seat and per-table metering; you want the API as reviewable source rather than runtime configuration; you need the platform to host the frontend as well as the data; or — the structural one — you expect AI agents to be building the backend rather than querying it.
The test that decides it in one question: does your backend need to be read by anything other than the server that runs it? If yes — by a reviewer, by git, by an agent — you want files. If no, a runtime model is less work.
The fine print
Every number above about Directus was verified on their own pricing and licence pages the day this was published: the MSCL-1.0-GPL terms, the $0 / $499 / custom tiers, the 3-seat and 25-collection Core caps, $50 per extra seat, $100 per 25-collection pack, the $99 cloud add-on, and the under-$5M-and-under-50-employees grant. Pricing pages move. If you are reading this months later, re-verify before quoting me — and I would rather you checked than trusted me.
The database engine list for Directus is from documentation rather than from my own testing, and Magic's own comparison rows are, obviously, written by the person who wrote Magic. Read the table with that in mind.
Magic is MIT-licensed and open source — the repository is at github.com/polterguy/magic. Testing any of this yourself takes one copy-paste on a $6 DigitalOcean droplet, or a managed cloudlet if you would rather not.
FAQ
Is Magic Cloud a Directus alternative?
For the developer case, yes — both wrap an existing database in a secured API without migrating it, both ship an admin UI, both self-host, both offer managed hosting. For the editorial case, no: Directus is a headless CMS with revisions, drafts and translations, and Magic is not trying to be one.
Is Directus open source?
Not in the OSI sense any more. It is source-available under the Monospace Sustainable Core License, which prohibits Competing Use and licence-key circumvention, and converts each release to GPL-3.0 after four years. Magic is MIT.
Is Directus free?
Free at the Core tier within hard caps — 3 seats, 25 collections, 5 flows, no SSO — and genuinely free and fully permissive under the Open Innovation Grant if your organisation is under $5M in revenue and under 50 employees. Above those lines it is $499/mo and up, with per-seat and per-collection metering.
Which handles a large legacy schema better?
Directus reflects the whole schema instantly with nothing to generate, which is the better ergonomic. But collections are capped by plan, and a 200-table system lands you in Enterprise pricing. Magic makes you run the generator and gives you files afterwards, with no table count anywhere in the pricing.
Can AI agents use both?
Both expose MCP. The difference is what the agent can do once connected: with Directus it calls your API; with Magic it can read the generated code and write more of it, inside a runtime that constrains what generated code is even able to express.