terminusdb is a free, open source content management systems (cms) project written in Prolog and released under Apache-2.0. It has 3,417 GitHub stars, 153 forks and 18 open issues, and was last pushed 5 days ago. On this registry it ranks #24 of 47 tracked projects in Content Management Systems (CMS), with 5 head-to-head comparisons available. It gained 1 stars over the last 3 tracked days.

What is terminusdb?

What it is

TerminusDB is a distributed, collaborative database designed for building, sharing, versioning, and reasoning on structured data. It lives in the open-source database and headless content-management ecosystem as a system of record for JSON and JSON-LD documents. The project connects documents into a semantic knowledge graph while keeping an immutable history.

The concrete problem it solves is managing structured data as a shared, queryable, and versioned resource. Instead of treating JSON documents as isolated records, it gives them commit history, diff operations, push and pull workflows, and time-travel queries. It provides graph reasoning through the REST API, GraphQL, WOQL, Closed World RDF, schema constraints, and the datalog logic engine.

Key capabilities

  • It provides git-like revision control with commits, diffs, push, pull, and clone operations for data states.
  • It supports time-travel queries that retrieve any state of the database at any commit.
  • It links JSON and JSON-LD documents in a semantic knowledge graph through a document API.
  • It offers the REST API, GraphQL, and WOQL interfaces, including path queries, unification, and Closed World RDF.
  • It includes arbitrary precision xsd:decimal mathematics and Allen interval algebra for temporal reasoning over ISO8601 dates, times, and durations.
  • It supports JSON Git-for-Data for JSON, JSON-LD, XML, and Turtle documents with schema control.
  • It provides range queries over succinct ordered data for timestamp, numeric, and interval ranges.

Who uses it and how

  • Teams building a system of record for JSON or JSON-LD documents use it to store, share, and query structured data while keeping commit history for every update.
  • Knowledge-graph projects use it to link documents across records and query relationships through the REST API, GraphQL, or WOQL.
  • Industrial and financial workflows use version 12 for high precision decimal math and temporal reasoning over ISO8601 dates, times, and durations.
  • Data teams use git-like push, pull, and clone operations to move diffs between nodes and compare changes between commits.
  • Headless content and publishing systems use it as a database layer for schema-controlled documents, including JSON, JSON-LD, XML, and Turtle.

Getting started

The README excerpt references native build and Docker build workflows, and points to terminusdb.org documentation for the REST API, GraphQL, and WOQL. It does not list a package manager, Docker image name, or hosted option.

When to use it — and when not to

Use it when JSON, JSON-LD, XML, and Turtle documents need immutable history, graph reasoning, and collaborative versioning. Avoid it when a project needs a hosted content-management service, because the facts do not list a hosted option, package manager, or required external services. The unknown contributor count, 18 open issues, and missing installation details make the maintenance signal less clear.

project readme (upstream, from github) — read inline

<img src="https://github.com/terminusdb/terminusdb-web-assets/blob/master/readmes/terminusdb/TerminusDB-Logo-Colour_3.png" alt="TerminusDB Logo"

/>


Native Build Docker Build

Issues License

Project Overview (Updated May 2026)

TerminusDB is a distributed database with a collaboration model — git for data.

If you find this project useful, please consider starring the repo

TerminusDB allows you to link JSON and JSON-LD documents in a semantic knowledge graph through a powerful document API. It's designed as a system of record, making data management collaborative, versioned, and queryable.

Now with new maintainers and an enterprise version.

Key Features

  • Revision Control: Commits for every update — track changes over time
  • Diff: Differences between commits can be interpreted as patches between states
  • Push/Pull/Clone: Communicate diffs between nodes using familiar git-like operations
  • Time-Travel Queries: Query any state of the database at any commit
  • Document + Knowledge Graph: Link JSON documents in a knowledge graph
  • Multimodal: Support for REST API, GraphQL, WOQL and with Closed World RDF
  • Goal seeking: Built in unification, path queries, and a datalog logic engine

What's New in Version 12

TerminusDB 12 features performance, stability and precision provided by the new DFRNT maintainers. Now engineered for industrial and financial use cases with high precision math, temporal reasoning, and stability under load. Version 12 includes:

  • Arbitrary Precision xsd:decimal: Arbitrary rational precision xsd:decimal mathematics, including high precision JSON decimals over the wire for JSON, GraphQL and WOQL, see ISO/IEC 21778:2017
  • Allen Integer Algebra and Temporal Reasoning: Reason about ISO8601 date, time and durations with high precision rational math
  • Range Queries over Succinct Data: Extremely fast range queries with constant time retrieval over arbitrary size ordered data, which is great for knowledge graph processing over timestamp, numeric, and interval ranges; with strong temporal reasoning and classification
  • ISO8601 Allen Interval Algebra: Support for temporal reasoning and storage of XSD time datatypes including temporal interval classification, storage and life cycle management with datalog reasoning
  • JSON Git-for-Data (Linked Data): Git for data for JSON, JSON-LD, XML and Turtle documents with schema control (and also for deduplicated schemaless JSON documents)
  • REST API: Use REST API as a proper graph query language with deep link discovery, path queries and linked data
  • GraphQL Support: Use GraphQL as a proper graph query language with deep link discovery and path queries
  • WOQL Datalog: Use WOQL as a goal-seeking problem-solving toolbox, complete with triples across and within documents, path queries and variables unification
  • Schema Constraints: Use schema constraints to enforce data quality and consistency, including for advanced typing
  • @unfoldable Documents: Unfold subdocuments within a frame to add all relevant data in one place
  • @metadata Support: Include additional metadata in document frames, including Markdown-formatted data

Getting Started

The easiest way to install TerminusDB as a developer is by following the 10-minutes docker getting started manual with the latest Docker TerminusDB Image. It can be installed locally using Snap as both git-for-data client and server to perform push and pull. Docker brings the server component, and snap the ability to try TerminusDB on the command line, for example for ML/Ops and AI use cases requiring deterministic symbolic AI processing.

For deployments, copy the docker-compose.yml file from the repository. For a complete modeller user interface, create an account for the DFRNT Studio which can also be used to model TerminusDB on localhost! There is still the possibility to run the now deprecated (buggy) dashboard, by following a the instructions for the TerminusDB dashboard.

  1. Add the following to a .env file in the source directory:
# Database administrator's password (required)
TERMINUSDB_ADMIN_PASS=

Notes:

  • TERMINUSDB_ADMIN_PASS is mandatory and must be set.
  1. docker compose up

You should be able to view TerminusDB running by default at localhost:6363

If you're installing TerminusDB on Windows with Docker, follow the comprehensive guide for TerminusDB on Windows with Docker.

You can also install TerminusDB from Source Code.

Usage

Quick Start with CLI

Once installed, you can start using TerminusDB immediately. Here's a simple example creating a person with friends (or use the Manual and more in-depth 15-minutes Getting Started Guide):

terminusdb db create admin/example1
terminusdb doc insert --graph_type=schema admin/example1 <<EOF
{ "@id" : "Person",
  "@type" : "Class",
  "name" : "xsd:string",
  "occupation" : "xsd:string",
  "friends" : { "@type" : "Set",
                "@class" : "Person" }}
EOF
terminusdb doc insert admin/example1 --message='adding Gavin' <<EOF
{ "@type" : "Person","name" : "Gavin", "occupation" : "Coder"}
EOF

Client Libraries

TerminusDB provides official client libraries for multiple languages:

Documentation

Full documentation is available at https://terminusdb.org/docs.

Key Resources

  • What is TerminusDB: Why TerminusDB is a unique Graph Database
  • Getting Started Guide: Complete onboarding tutorial
  • Document API: Working with JSON documents
  • GraphQL Guide: Query your knowledge graph with GraphQL
  • WOQL: Web Object Query Language fundamentals
  • Release Notes: Latest changes and version history
  • TerminusDB Enterprise: Full JSON-LD, Turtle, and RDF/XML documents, enterprise features, very fast commit history queries, higher write performance, clustering, API for data product backup and restore (beyond command line tools)

Found an issue in the docs? Please open an issue or pull request in our documentation repo or here.

Community

Come visit us on Discord to:

  • Ask questions and get help
  • Share your projects and use cases
  • Contribute to discussions
  • Stay updated on the latest developments

Contributing

We welcome contributions from the community! Whether you're fixing bugs, adding features, or improving documentation, your

readme truncated — read the full docs on github

Frequently asked questions

Is terminusdb free to use?

terminusdb is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does terminusdb do?

TerminusDB is a distributed, collaborative database designed for building, sharing, versioning, and reasoning on structured data.

What is terminusdb written in?

terminusdb is primarily written in Prolog. Its source is publicly available at https://github.com/terminusdb/terminusdb, and it has 3,417 GitHub stars.