Skip to content

Opaline

Blazing fast deterministic decision engine

Evaluate versioned rule packs against your data. Get the same decision every time, recorded in a trail you can verify.

A verifiable record of every decision.

Opaline runs your rules and writes each decision to an append-only trail as it happens. You can replay any decision later and prove exactly what produced it, without trusting the system that made it.

Why Opaline

Three guarantees on every decision

Deterministic

The same inputs and the same pack version always return the same decision. Arithmetic is decimal, and the clock and timezone are inputs you provide, not read from the system.

Tamper-evident

Every decision is written to an append-only hash chain before the response returns. Signed checkpoints are anchored outside the engine, so you can verify your history yourself.

Headless

No UI, no document parsing, no domain logic built in. You publish the rules as versioned packs, and your apps and agents build on the API, SDK, or MCP.

Performance

Decisions in milliseconds

Opaline compiles every pack to bytecode the moment you publish. Decisions run compiled, not interpreted, fast enough to call inline in the transaction that needs the answer.

~0.1msrule evaluation
<10mstypical decision, trail write included
Compiledpacks run as bytecode, never interpreted

Use cases

What teams build with Opaline

Send the facts, get a decision back. The shape is the same in every domain.

Invoice & bill validation

Check an invoice against the rules in effect on its date before it posts.

Tax determination

Resolve the rate and treatment for a transaction, and see the rule that set it.

Eligibility & approvals

Turn an application into a clear pass, review, or reject, with the reason attached.

Risk & fraud checks

Score a transaction and see exactly which rules moved the number.

How it works

Publish, decide, verify

1

Publish

Publish your rules as an immutable, versioned pack. Each publish is linted, compiled, and tested before it is accepted.

2

Decide

Send your facts and get a decision back, including the outcome of every rule behind it. One call, from any language.

3

Verify

Every live decision is written to the trail before the response returns. Verify any of them yourself, anytime.

curl -X POST https://api.opaline.dev/v1/decide \
  -H "Authorization: Bearer opl_live_…" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "pack": "acme.bill.validity",
    "version": "1.2.0",
    "facts":   { "vat_rate": "0.1", "total": "1250.00" },
    "context": { "transaction_date": "2026-06-12" }
  }'

Proof

Verify it yourself

Every decision is recorded the moment it is made, and the record cannot be changed afterward without it showing. You can check it yourself, so you never have to trust the system that produced it.

  • Rollback: history is rewound to an earlier point.
  • Fork: the record is replaced with a different one.
  • Truncation: an entry is removed from the middle.

All three are caught the moment you verify.

Bring your own rules.

Opaline has no domain logic of its own. It runs whatever rules you publish, the same way every time, whatever the decision.