One database, your network, no phone home
Apograph is a Node application and a Postgres database. You run both. There is no account to create, no key to activate, no usage to report, and no version of this that we host for you.
For whoever signs off on where the content lives
What is actually deployed
Two processes and a database. The API is a Node server; the admin is a static React build that talks to it; the data is one Postgres database that you provision, back up and restore with the tools you already use for every other database you run.
Uploaded files do not live in the database. Each asset row holds a storage key and the name of the provider that holds the bytes, and the provider behind it is local disk, an S3-compatible bucket, Azure Blob Storage, Google Cloud Storage or Vercel Blob, chosen by configuration at start-up. Which provider handled an upload is recorded on the row, so downloads route by what actually stored the file rather than by whatever the configuration says today.
Nothing in the running system contacts us. There is no licence check, no telemetry, no update ping and no analytics — which is a property of the code rather than a setting, so an air-gapped installation is an ordinary installation with no network.
The difference this makes on a bad day
Not a philosophical point. These are the specific moments where owning the deployment changes the answer.
A hosted CMS
- Their outage is your outage, and you watch a status page
- Content lives in an export format you hope is complete
- Per-seat pricing decides who gets an account
- A pricing change is a migration project
- Data residency is a plan tier
- The audit log is whatever they expose
Apograph
- Your outage is your outage, with your logs and your access
- Content is rows in your database, readable with psql
- Everyone who needs an account gets one
- There is nothing to change
- Data residency is wherever you put the server
- The audit log is a table you can query
What free means here, precisely
The core is MIT licensed and every capability described anywhere on this site is in it — the content model, translation, version history, the media library, workspaces, the audit log, the dashboard, the API, the MCP endpoint and the AI assistant. Nothing is held back to make a paid version look better, and the licence on a version you already have does not expire.
What a plan buys is room and governance, not a different product. Community stops at three workspaces, three segments, two API tokens and 30 days of readable activity log; a plan lifts all four, adds single sign-on and activity log export, and comes with support that answers. Members, records, API calls, bandwidth and Apograph AI stay unlimited and free.
That is a retraction from what this page said before — those four were unlimited, and single sign-on shipped free in 0.4.0 — and we would rather name it than let you find it. It is being announced before it is built, while almost nobody is running this yet, because the alternative is doing it later to people who already depend on us. There is still no hosted edition and there will not be one.
What running it involves
| You need | Detail |
|---|---|
| Node | The API server and the admin build. Version 22 is what the project builds and tests on. |
| PostgreSQL 16 | One database. No extensions beyond what a stock install provides. |
| Somewhere for files | A disk, or a bucket on S3, Azure, Google Cloud or Vercel. Configured at start-up. |
| A reverse proxy | Whatever you already run. Nginx and Caddy configurations are in the repository. |
| A model provider | Only if you want the assistant. A hosted API, or a model on your own hardware. |
| Your own backups | pg_dump and your object storage’s own tooling. There is nothing proprietary to back up. |
The question that ends procurement early
"Where is the data?" On a hosted platform that is a conversation about regions, sub-processors and a data processing agreement. Here it is the name of a machine, and the person who can answer it is already in the room. The follow-up — "what happens if the vendor goes away" — has the same shape: the code is MIT and already on your disk.
Questions before you commit to running it
Is there a paid tier?
Yes. The core stays MIT and no feature is paid-only, but Community caps four things — workspaces, segments, API tokens and how far back the activity log reads — and single sign-on and activity log export become paid plug-ins. Everything else stays unlimited and free, members, records, API calls and Apograph AI included.
Will you host it for me?
No. There is no cloud edition, it is not on a roadmap, and if that is what you need you should choose a hosted CMS instead. We would rather say so than take you through an evaluation that ends there.
What does an upgrade look like?
Pull the new version, run the migrations, restart. Migrations live in your repository as SQL files you can read before you run them, and each plugin brings its own.
Can I get the content out?
It is already out — it is in your database in ordinary tables, one per content type, with a column per field. You never need an export step to reach it. There is one anyway, in four formats, for moving content between installations rather than for getting it back.
Next
Every feature is included, free
The core is MIT licensed and every feature is in it — none of them is paid-only. Community runs free in production; a plan buys room and governance, not a different product.