Beta . Ortha CMS is in public beta. Every plan is free until it ends.
Get started
Menu

Platform · 23 / 23

Yours to run

Your servers, your Postgres database, your files. Nothing calls home, and there is no hosted edition.

$ npx create-orthacms-app my-cms
Ortha CMS · Creating an app in ~/projects/my-cms
◆ Project
✔ App name my-cms
✔ Database URL postgresql://orthacms:orthacms@localhost:5432/my_cms
✔ Admin email admin@example.com
◆ Features
✔ Storage S3-compatible
✔ Copilot Claude (Anthropic), OpenAI-compatible endpoint
✔ Sign-in OpenID Connect single sign-on
✔ Protocols GraphQL content API, MCP server
✔ Mail SMTP relay
✔Files written
✔Git repository initialised
✔Dependencies installed
› cd my-cms
› docker compose up -d
› npm run migrate
› npm run dev → http://localhost:4200

How it works

  1. 01

    Scaffold an app with npx create-orthacms-app.

  2. 02

    Answer five questions about storage, AI, sign-in, protocols and mail.

  3. 03

    Run it on your own box against your own PostgreSQL.

Database
PostgreSQL
Licence
MIT
Telemetry
None

In depth · For whoever decides where content lives

Your database, your network

Ortha is a Node application and a Postgres database, and you run both — no account, no key, no usage reporting.

What is actually deployed

A Node API server, a static admin build and one Postgres database you back up with your usual tools. Files live on local disk or in an S3, Azure, Google Cloud or Vercel Blob bucket.

Under the hood

Nothing in the running system contacts us: no licence check, no telemetry, no update ping. An air-gapped installation is an ordinary installation with no network.

What owning it changes

A hosted CMS

  • Their outage is your outage
  • Content lives in an export format
  • A pricing change is a migration project
  • Data residency is a plan tier
  • The audit log is whatever they expose

Ortha

  • Your outage, with your logs and your access
  • Content is rows in your database
  • There is nothing to change
  • Data residency is wherever you put the server
  • The audit log is a table you can query

What running it involves

Show the table
You need Detail
Node Version 22.
PostgreSQL 16 One database, stock extensions only.
Somewhere for files A disk, or an S3, Azure, Google Cloud or Vercel bucket.
A reverse proxy Whatever you already run in front of Node.
A model provider Only for the assistant: hosted, or your own hardware.
Your own backups pg_dump and your object storage’s tooling.

Questions

Is there a paid tier?

The core is MIT and no feature is paid-only. After 1.0, a plan lifts four caps — workspaces, segments, API tokens and activity log history — and adds support.

Will you host it for me?

No. There is no cloud edition and none is planned. If you need one, choose a hosted CMS.

What does an upgrade look like?

Pull the new version, run the migrations, restart. Migrations are SQL files in your repository you can read first.

Full reference in the docs