Check it yourself
There is no account to make, no service to sign up for, and nothing running that you have to trust. Everything below is a link into the repository or a command you can run in about a minute.
One minute
See a real decision, with nothing installed but uv
The demo workspace ships a recording captured from a live DataHub instance, so a fresh clone produces the real thing — no Docker, no catalog, no waiting.
git clone https://github.com/AmirmLotfy/zence && cd zence
uv sync --all-packages
uv run zence evaluate --tool Write --file models/blend.sql \
--content "SELECT l.email, p.phone
FROM northstar.marketing_leads l
JOIN bluepeak.patient_contacts p ON p.email = l.email" \
-C examples/clients/northstar-analyticsWhat you should see
✗ DENY ZR-001 naming email, phone and postcode as classified at column level, with the DataHub URN as evidence and an in-domain alternative offered.Where that came from
A recording, captured by
zence demo record from a live DataHub instance. Every decision it produces reports provider: fixture — a recording can never pass itself off as a live read.Ten minutes
Run it against your own DataHub
Everything above, against a catalog you control. Setting DATAHUB_GMS_URL takes precedence over the recording.
datahub docker quickstart # ~8 GB RAM, 13 GB disk
export DATAHUB_GMS_URL=http://localhost:8080
uv run zence demo seed
uv run zence demo verify
uv run pytest -m integration # 15 tests against the live catalogThe real thing
Install the plugin and try to break the boundary
/plugin marketplace add AmirmLotfy/zence
/plugin install zence@zenceStraight to the source
Every claim, and where it lives
| The decision engine | Precedence, and why tamper is checked before everything else. |
|---|---|
| The fail-safe matrix | What happens when no rule matched — the part worth reading twice. |
| The twelve rules | Policy as data. No expression language, no eval. |
| The DataHub provider | Including the association-object bug that only a live catalog revealed. |
| Hook wire format | 28 tests asserting the exact shape Claude Code acts on. |
| Adversarial tests | Hostile policies, injected metadata, ReDoS, credential leakage. |
| Live DataHub tests | The four scenarios and idempotent write-back, against a real catalog. |
| Decision artifacts | The JSON rendered on the demo page. Not written by hand. |
| The demo catalog | Two fictional clients, shaped so each rule has a realistic asset. |
| Clean-room verification | Clones the published repo and runs a reviewer’s setup from nothing. |
| Threat model | What Zence is not, and one accepted risk with its reasoning. |
| Build status | What is verified, and against what. |
Worth knowing
Two things we would rather say than have you find
There is no hosted catalog
Zence runs entirely on your machine, so there is no Zence server to be down and no demo instance to expire. That also means the live-DataHub path needs a catalog you start yourself — the recording exists precisely so that is optional rather than required.
The clients are fictional
Northstar Commerce and BluePeak Health do not exist. The decisions about them are real output from the engine; the companies, datasets and people are invented, because a tool about not leaking client data should not ship anyone’s.