Skip to content
Cardinal
cardinal.wiki
GitLab
Open-source wikiAGPLv3Self-hosted

A wiki your team can trust with what it knows.

A self-hosted fork of Wiki.js 3.0 for teams that need to control who reads what, prove it, and let agents read it too.

0.1.0 · pre-1.0 · our own docs run on Cardinal.js at docs.cardinal.wiki

Cardinal.js page view
Why Cardinal.js

Built for a wiki that holds things that matter.

Full comparison

Access you can prove

A classification level on every page, page rules on groups, sign-in through OIDC, SAML or LDAP, and an audit log kept as long as you set.

How access works

Agents under your rules

A built-in MCP server. Every agent acts as a real user through a personal token that always expires and can be narrowed further, and sees only what that user may.

MCP guide

In and out, on your terms

Move from Wiki.js 2.5 with a dry run and a verifier. Take everything back out through the API, MCP or plain files.

Migration and exit
Coming from Wiki.js 2.5?

The migrate command reads your 2.5 database read-only, dry-runs first, then verifies record counts and content hashes before you flip DNS.

Read the cutover steps
Get started

Running in a few minutes.

One container plus PostgreSQL 16 or later. Set the first admin in the environment and you land straight in a secured instance.

docker-compose.yml
services:
  db:
    image: postgres:18
    environment:
      POSTGRES_DB: cardinal
      POSTGRES_USER: cardinal
      POSTGRES_PASSWORD: change-me
    volumes: [ db-data:/var/lib/postgresql ]
  wiki:
    image: registry.gitlab.com/ingentis/cardinaljs:0.1.0
    depends_on: [ db ]
    environment:
      DATABASE_URL: postgres://cardinal:change-me@db:5432/cardinal
      ADMIN_EMAIL: [email protected]
      ADMIN_PASS: a-long-passphrase
    volumes: [ wiki-data:/wiki/data ]
    ports: [ "3000:3000" ]
volumes:
  db-data:
  wiki-data: