jaala

A Datalog engine for graph-shaped data. You describe what you want to know as rules over your facts, and every answer comes back with the facts that produced it.

Rules, recursion and negation

Derived relations, recursion to a fixpoint, stratified negation and aggregation, in rule heads as well as in the answer.

Read the overview →

Answers that cite their facts

Every row carries the citations of the facts behind it, and on request a witness tree of the rules and facts that derived it.

How provenance works →

Facts from your own stores

A store answers only what a query binds, and can join, count, page and walk itself. A federation spreads one question over many stores.

Facts from stores →

Facts across versions

One base over every revision: answer at one, across all of them with the versions each row holds in, or list what changed between two.

Versions →

Asked in plain language or Cypher

A model writes a program from a question and fixes it from jaala's errors, an MCP server lets an agent ask with its own tools, and Cypher compiles to a program.

Asking through a model →

A library, in Go or in the browser

Pure Go with no dependencies outside the standard library, so it embeds in a service and runs in a browser as wasm.

The three packages →