Analytics that flow with the question.

An in-memory associative engine, a studio for building dashboards, and an AI analyst whose numbers come from the engine. Click any value — everything else answers, from extracts you own, never from your production database. Runs on one machine you own.

sales.fa explored
Country
Channel
Revenue—
Orders—

Pick a country or a channel.

selected possible alternative excluded

How it works

From data to answer, in three steps.

  1. 01

    Load

    A load script pulls files, SQL and APIs once and keeps them as extracts of your own; tables meet on the fields they share. Your database is asked once, not on every click.

  2. 02

    Explore

    Click a value anywhere. Every chart, list and table narrows to what is still possible.

  3. 03

    Ask

    Omni reads the same model, builds charts and selections, and marks any figure it did not compute.

The engine

A selection is a question.

Pick a value and the engine sorts every other value in the model: selected, still possible, excluded. Nothing is thrown away — the excluded stay in view, greyed, and one click brings them back. The answers come from an in-memory engine written in Rust, over your own extracts — not from the browser, and not from a query against your production database.

Selectedwhat you picked
Possiblegoes with every pick
Alternativeanother pick in the same field
Excludedshares no row with your picks

Omni · the analyst

An analyst that shows its work.

Omni works through the engine — it inspects the model, builds charts and selections, writes load scripts and publishes report pages. A figure it did not compute is marked as such, and every write waits for your approval. The same tools run as an MCP server for agents of your own.

Which channel grew fastest in Japan this quarter?
OMNIcomputed by the engine · sample data

Self-hosted

Your data stays home.

One machine, one docker compose up, automatic HTTPS at the door — and the extracts on your own disk. Row-level security lives in the engine session, so a reader sees only the rows their policy allows. Sign in with a password or your OpenID provider.

$ deploy/compose/gen-secrets.sh
generated 6 secrets · names only
$ docker compose up -d
✓ engine  ✓ gateway  ✓ control-plane
✓ studio  ✓ caddy · certificate obtained

Begin with one click.

Open the demo, pick a value, and watch the rest of the sheet answer.

Open the live demo