Magic vs Directus: An Honest Feature Matrix

Magic vs Directus: An Honest Feature Matrix

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

FeatureDirectusMagic Cloud
LicenceMonospace Sustainable Core License — source-available, non-compete, with licence-key enforcement you may not circumvent; converts to GPL-3.0 four years after each releaseMIT, all of it, no thresholds and no conversion date
Free tierCore: 3 user seats, 25 collections, 5 flows, no SSOSelf-host everything, uncapped, forever
Small-company escape hatchOpen Innovation Grant — fully permissive and free under $5M revenue and under 50 employeesNot needed; MIT has no revenue test
Paid tierTeam 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 monthNone — unlimited users, never counted
Table capA collection maps to a database table: 25 on Core, 50 on Team, $100 per extra 25None
Managed hosting$99/mo add-on, on top of the planIncluded in the cloudlet price
SSOTeam plan and up; unavailable on Core at any priceEight OIDC providers built in — Google, Microsoft, GitHub, LinkedIn, Slack, Okta, Auth0, Keycloak
The APIComputed at runtime from schema and configGenerated Hyperlambda files — real, readable, versionable
Schema changesReflected instantly, nothing to regenerateRe-run the generator
Database enginesPostgreSQL, MySQL, MariaDB, SQLite, SQL Server, OracleDB, CockroachDBSQLite built in, plus MySQL, PostgreSQL and SQL Server
Access controlGranular: field-level and item-level rules as filter expressionsEndpoint-level role gating, plus runtime slot whitelisting
Custom logicExtensions in TypeScript, with a build step; Flows with sandboxed JS operationsHyperlambda files, hot — no compile, no restart, generated from a prompt if you like
Content featuresRevisions, drafts, translations, activity log — a decade of CMS heritageNone of it; not a CMS
AssetsFile library with on-the-fly image transformationFile system, upload tickets, image resize and convert
RealtimeWebSockets and GraphQL subscriptionsSignalR — programmable events
Frontend hostingNot the storyFirst-class static and SPA hosting per cloudlet
AI and RAGAI Assistant, AI Translations on higher tiersML types, crawling, vectorisation, deployable chatbots
Agent storyMCP server over the APINative MCP with OAuth; agents generate new tools for themselves at runtime inside RBAC
Non-developersGenuinely usable by editors and ops peopleA developer tool, and honest about it
CommunityLarge, funded, SOC 2, partner programmeSmall

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.