Operational Integrity for every action

Control what your AI agents are allowed to do. Prove what they actually did.

SynOI sits between your agents and the systems they touch. It blocks unauthorized actions before they run and signs a receipt for every action it allows, one that anyone can check without taking our word for it.

ProofApproved before it runs. Provable after: independently verifiable, offline, without trusting us. AI agents are the sharpest edge of this problem today; the same checkpoint governs any action, human or automated.

Where this fits your OI stack

Telemetry tells you what happened. This proves what was allowed.

Your operational intelligence tells you what happened. SynOI proves what was authorized before it ran, and lets anyone verify the record without trusting us.

Keep Honeywell, AWS, or your OI stack for telemetry. Add SynOI so each action it drives carries a signed, offline-verifiable authorization receipt an auditor can check without trusting the vendor.

See how the gate works →

How it works

Connect. Govern. Prove.

Point your traffic at SynOI once. From there, every action is checked against your grants before it runs, and every decision, allow or deny, mints a signed receipt automatically.

The GAP grant engine fails closed by default: an action without a valid, unexpired grant is denied. Broader LLM risk scoring runs in observe mode until you turn enforcement on, so adopting SynOI does not mean every existing call stops working on day one.

Connect: wrap any action with one call
export SYNOI_GATEWAY_URL=http://localhost:3000

import { gate } from '@synoi/sdk'
await gate({ tool_name: 'payments.charge', tool_input: { amount: 4200 } }, () => charge())

Any action: an API call, a payment, a device, an integration, or an LLM call. A signed receipt on every one. No LLM required.

Already routing LLM calls? Govern those with zero code
export ANTHROPIC_BASE_URL=http://localhost:3000/anthropic
# or  OPENAI_API_BASE=http://localhost:3000/v1

Repoint your base URL. Self-hosted: your keys, your machine, traffic never leaves your box. BYO keys. Multi-vendor. 12 of 20 tools verified →

Prove

Verify it yourself. No account. Offline.

Every governed action mints a Decision Receipt: a canonical, signed record of what was asked, what was decided, and who (or what) approved it. Check the signature against the public key yourself. We do not have to be in the loop for you to trust the answer.

Receipts are tamper-evident, not tamper-proof and not a claim about court admissibility. The @synoi/verify Node/CLI re-runs the full hybrid Ed25519 + ML-DSA-65 check on your own machine. Verify an exported bundle, or supply a key you already hold, and nothing is sent to us; the quick receipt-ID form fetches the receipt and key from the gateway, which proves the signature is internally consistent, not that the key is genuinely ours. verify.synoi.systems offers the same pass or fail as a hosted convenience, by receipt ID, confirmed server-side today; an in-browser client-side check is on the roadmap.

We call this Decision Replay: take a receipt from any point in the past, rebuild the canonical record from it, and re-run the signature check yourself, offline, with your own tooling. It is not the point-in-time state queries described on the protocol page, and not the 5-minute anti-replay window on our webhook intake: those answer different questions. Decision Replay re-verifies the record of what was authorized, not the runtime that ran it. More on Decision Replay →

Try the verifier →
Decision ReceiptSignature valid

receipt_id rcpt_8b3c9f...

tenant acme-prod

action_class tool.deploy

model claude-opus-4-7

decision allow

risk_level medium

approver a.rivera (mobile · 14s)

elapsed_ms 3

recorded_at 2026-05-14T14:32:01Z

signature 3a9f2b…Ed25519 + ML-DSA-65

Verifiable offline by anyone against the published public keys. The body is canonicalized with RFC 8785 JCS, and the hybrid signature means a full check needs both an Ed25519 and an ML-DSA-65 (FIPS 204) library. Hosted verifier at oid.synoi.systems: planned, not yet deployed.

Every governed action mints one of these.

Neutral and open, not locked to us

Live on npm

SynOI runs on the Governed Action Protocol (GAP): CC0-licensed, published, and verifiable by anyone. Re-check any receipt with your own tooling against a published key: no account, no lock-in.

npm install @synoi/gap@1.2.0
npm install @synoi/verify
npx @synoi/verify rcpt_abc_123   # fetch + re-run the signature check against the gateway key

@synoi/sraid · @synoi/gap · @synoi/verify · @synoi/oid-resolver: all public on npmjs.org, source on github.com/synoi. Anyone can implement GAP, not only SynOI.

The custody moat

Shipped · self-hosted

Your credentials never leave your machine.

Most governance products ask you to route your API keys through their cloud. SynOI's gateway runs where you run it: self-hosted, keys held in your custody, never transiting or persisting on SynOI infrastructure. That is an architectural fact you can inspect, not a policy promise you have to take on faith.

See how custody works →

Standards alignment · what we build on

  • CSA · STAR for AI· submission in preparation
  • OpenSSF
  • sigstore
  • in-toto
  • NIST FIPS 204· PQ migration path
  • NIST AI RMF
  • RFC 8949 · CBOR· reserved · future profile
  • RFC 8152 · COSE· reserved · future profile
  • RFC 8032 · Ed25519
  • ISO/IEC 42001· planned

We don't invent crypto. How SynOI aligns with each body →

Not sure where SynOI fits? Answer two questions.

What can I do with SynOI? →

One environment variable.
Receipts from the next request on.

The gateway is free to start. The receipts are free to verify. The protocol is open. Drop SynOI in front of any model call and the audit trail begins.