A headless CMS with no database
Grav 2.0 serves your content over a first-party REST API to any front end you like. Content stays as Markdown files on disk, so there is no database to run, no schema to migrate, and no export path to plan for later.
What you getEverything you need to go headless
First-Party REST API
Not a plugin someone maintains on the side. The API ships with Grav, and the admin itself is built on it, so it stays honest.
Proper Authentication
Token auth that respects Grav’s existing permission model. The same users, groups, and access rules you already configured.
Headless or Not
Serve rendered pages from Twig, serve JSON to a Next.js front end, or do both from one install. You are not locked into either.
No Database
Content is a folder of Markdown and YAML. No database server, no connection pool, no nightly dump to worry about.
Content in Version Control
Your content lives beside your code. Branch it, review it in a pull request, and deploy it the same way you deploy everything else.
MCP Server Included
The same API is exposed to agents through a built-in MCP server, with the same permissions. Nothing extra to run.
Sub-100ms Responses
Aggressive caching and no database round-trips. Reading a page is reading a file, which is the fastest thing a server can do.
Multi-Language Built In
Internationalization is part of the core, not an add-on. Serve the same content in every language you ship.
Image Pipeline
Resize, crop, and optimize through a fluent API, with responsive images generated for you.
How Grav differs from hosted headless
You own the content
Most headless platforms keep your content in their database or their cloud. In Grav it is a folder of Markdown on your disk. Moving off Grav is a copy, not a migration project.
Nothing to operate
No database server, no managed service, no per-seat billing. A Grav install is PHP and files, so it runs on a $5 VPS or shared hosting just as happily as on a big box.
Rendered pages when you want them
Pure headless means you build the front end for everything, including the marketing pages nobody wanted to rebuild. Grav renders those with Twig and still serves JSON to your app.
Open source, MIT, free
The whole thing is MIT licensed with no paid tier gating the API, no request quotas, and no seat limits. Premium plugins are optional extras, never the price of entry.
Go headless with Grav 2.0
Download it, unzip it, and you have a working CMS with a REST API in front of it. Point your front end at the API, or keep the rendered pages and add the API where you need it.