The deny-by-default egress judge

Say what it may reach. Sign it. Then refuse the rest.

A manifest declared at build time and signed. Every outbound action judged against it at runtime, and every decision written into a chain that verifies offline.

Source available (BUSL‑1.1, Apache‑2.0 in 2030) · keyed BLAKE3 · optional Ed25519 for an auditor

a denial
eventEGRESS_DENIED
reasonTARGET_NOT_IN_USAGE_CONTRACTS
purposetelemetry
and : the reason is a named value, not a sentence — so a gate can branch on it

What it is

An allowlist is only worth what signed it.

Everybody writes down which endpoints their workload is allowed to call. Almost nobody can show, afterwards, that the list in force was the list they approved.

Pimatika takes the list, requires it to be signed, and refuses to start without it. From then on every outbound action is checked against that exact document — and the document's digest travels inside every decision it produces.

The name is Lingala: pima, refuse; tika, allow. In that order, because the default is refusal.

The manifest

A build-time document, and a human has to finish it.

Each permitted target names more than a host: which methods, how large a payload, which data class, and what for. A draft that still says HUMAN_REQUIRED is refused at load.

Deny is not a default you can change

The manifest's egress policy must read DENY. Anything else and the file does not load — there is no permissive mode to slip into.

Purpose is part of the match

A target allowed for telemetry is not allowed for exporting customer data. The purpose and the data class are compared, not decorative.

Signed, and verifiable by an outsider

Keyed BLAKE3 by default, with an optional Ed25519 signature so an auditor can verify it without holding your secret.

The refusal

Every denial says which denial it is.

Not "blocked". A named value a gate can branch on and an auditor can count — and the prose beside it may be reworded without breaking either.

TARGET_NOT_IN_USAGE_CONTRACTS  — nobody declared this destination
METHOD_NOT_ALLOWED  — declared, but not for this verb
PAYLOAD_EXCEEDS_LIMIT  — larger than what was approved
PURPOSE_MISMATCH  — allowed for something else
DATA_CLASS_MISMATCH  — the right destination, the wrong data
BIM_SIGNATURE_INVALID  — the manifest is not the one that was signed
EVIDENCE_WRITE_FAILED  — allowed, but unrecordable, so refused

The last one is the interesting one. An action that was allowed but whose record could not be written is denied anyway. A permission nobody can prove was granted is worth less than a refusal.

Credentials never reach the record. A target carrying a user, a query string or a fragment is stripped before it is written or reported.

The record

Every decision, chained where it was made.

Allowed and denied alike. Each entry is linked to the one before it, signed, and carries the digest of the manifest it was judged against.

The chain is a Litatoli chain, so it verifies with the same open tooling as everything else in the house — offline, with no server in the loop and no permission from us.

Behaviour that drifts from the signed intent is accumulated and raised as a proposal rather than a silent block. Two escalation levels ship in the open engine; the tuned production thresholds are the paid part.

Limits

What Pimatika cannot do, in its own words.

This product sells refusals. It would be a poor advertisement for itself if it were vague about its own.

It is a judge, not a proxy

It never carries the request. It answers allowed or denied, and the host process is what honours that answer.

Version 1 is cooperative

Enforcement happens at the call site. A program that goes around the API can still open a socket — kernel-level impossibility is version 2, not a claim today.

Names, not addresses

Targets are matched as exact strings. DNS pinning is out of scope in v1, and a redirect is a new target the caller must submit again.

Run it under NaZelo and the cooperative limit narrows: the sandbox gives the workload a network of its own, so what it may reach stops depending only on it asking politely.

Jagora — build the whole application Litatoli — the evidence layer Sawabona — licensing and payments Kumbukumbu — auditable memory and RAG NaZelo — critical software, run under controlled adversity

Pricing

Per organisation. Not per decision.

A judge asked to price each judgement is a judge somebody switches off on the busy day. The estate is the unit, as it is for the sibling engines.

Prism

Run it yourself
€0
free, and staying free
  • The engine and the CLI
  • Sign and verify your own manifests
  • The full decision record
  • Drift levels one and two
Read the code

Alchemy

A signing service, not a secret in CI
€99
/ month
  • Everything in Prism
  • Managed signing and key rotation
  • Tuned drift thresholds
  • The export an assessor reads
Talk to us
The estate

Harmony

Every workload, one view
€299
/ month
  • Everything in Alchemy
  • Fleet — which manifest each workload is running
  • Industry manifest templates
  • Team scoping
Talk to us
Single-tenant

Sovereignty

Your region, or your perimeter
Annual
contact us
  • Everything in Harmony
  • Dedicated deployment in your region
  • Custom SLA
  • Contractual support
Contact us

Sold together

Decided, enforced, sealed.

Pimatika decides. NaZelo runs it under constraint. Litatoli seals what came out. Each is sold on its own; together they cost a third less.

NaZelo Policy

Pimatika + NaZelo — decided and enforced, no sealed chain.

€169 / month at Alchemy · €499 at Harmony

NaZelo Trust

All three. Decided, enforced, sealed — the whole guarantee.

€269 / month at Alchemy · €799 at Harmony

On its own

Pimatika governs an ordinary workload perfectly well. The bundle is for when the runtime has to enforce the decision too.

€99 / month at Alchemy · €299 at Harmony

Annual is ten months. Bundles start at Alchemy; the free tier is for one engine at a time.

Launch pricing. If a plan is wrong for your situation, say so — we would rather hear it now than model it.

Manage your subscription

Change plan, update your payment card, or download your invoices. We will email you a link — your inbox is what proves the account is yours.

Talk to us

We read every message. Expect an answer within a working day.

Sales open on 17 August 2026

A date rather than "soon", because you are deciding whether to wait. Everything else — the plans, the prices, the licence you would receive — is exactly what will be on sale that day.

Nothing has been charged and no account has been created. If you would like to be told the morning it opens, use the contact link at the bottom of this page.

Start

You will be taken to our payment provider. Nothing is charged until you confirm there.

Your sign-in and your licence both go to this address. Check it — a typo here is an account you cannot open.

Search this site

Answers are passages from these pages, with a link to where each one is. Nothing is generated, so nothing is invented.