Skip to content

Annona

Annona

The sovereign execution kernel for AI agents

Every agent you deploy sends your material somewhere. Annona decides where each step may run — your GPU, your cluster, or a frontier API — enforces the decision, and writes it into a record you can verify.

per stepplacement
defaultdeny
0leak rate
559tests
arm64DGX-ready

⬇ Download the app GitHub Design of record

Open source · Apache-2.0 · no telemetry · runs with no account · an-NO-na, the office that kept Rome fed

Get the desktop app

Ready to run, local by default: it registers nothing outside your machine until you declare it yourself.

  • Windows


    Per-user installer (.exe). No admin rights.

    Download .exe

  • macOS


    Apple Silicon and Intel (.dmg). Unsigned during beta — right-click → Open.

    Download .dmg

  • Linux


    Portable AppImage (chmod +x and run), or .deb.

    Download AppImage

Prefer a server? docker compose up -d brings up the kernel and a local model, arm64 or amd64 — see deploying. Prefer a terminal? pip install annona, then turn the perimeter on in five minutes.

How it works

Four steps. Three never leave your machine, and the fourth happens only when the policy says it may.

  • 1 · Classify


    Every path, every payload, every tool result gets a class — from where it lives, what it contains, and what a prompt names. A run's class only ever goes up.

  • 2 · Place


    From that class and the health of each substrate, the kernel picks where the step may run. Nothing permitted available → the step is held, not rerouted.

  • 3 · Execute


    Tools run behind a default-deny gate: one the policy does not name does not run, deny beats allow, and symlinks are resolved to their targets.

  • 4 · Record


    Every decision — including every refusal — lands in a hash-chained ledger you verify offline, with a command that contacts nobody.

$ annona why step_7f3a
step_7f3a  inference  HELD
  class        restricted  (working set touched /mnt/pratiche/2026/BG-114.pdf)
  rule         R-clienti  restricted → [local-gpu], on_unavailable: hold
  candidates   local-gpu (unhealthy: connection refused since 14:02:11)
  not chosen   frontier — max_class public < restricted
  outcome      held at 14:03:07
  ledger       #418  sha256:9c1f…a7  (chain verified)

That refusal is the product. A gateway in the same situation fails over to the frontier API and returns a good answer.

Why it exists

You have been told to pick one of three architectures: models on-prem (private, capped by your hardware), frontier APIs (excellent, and your material leaves), or your own weights in your own cloud (an honest compromise that costs an MLOps team).

The industry argues about which column wins. That argument is the mistake.

The right column is a property of the request, not of the company.

Summarising a public tender is not the same problem as reasoning over a client's medical file, and the second does not become safe because procurement signed a DPA. One organisation needs all three columns, chosen per step, ten thousand times a day, by something that can prove afterwards what it chose.

What you can do with it

  • Keep privileged work inside


    A client matter, a clinical record, a personnel file: read it, reason over it, and watch the frontier model that would have answered better simply not be called.

  • Use the best model for everything else


    Sovereignty is not a tax on all your traffic. A question with no client data goes to the best model you registered, at the price you chose.

  • Answer with a frontier model anyway


    A local PII model replaces the identifiers, the redacted question crosses, and the answer is re-identified here from a mapping that never left.

  • Prove it afterwards


    annona verify, annona audit --held, annona why <step> — an auditor's three questions, answered offline.

Six use cases, each with the test that proves it Skills, with a jurisdiction

Honest about what it is not

  • Pseudonymous is not anonymous. Redaction reduces exposure; the mapping exists, so it does not remove the need for a lawful basis.
  • No confidential computing on a GB10. Encrypted memory and GPU attestation are real on HGX B200-class hardware, not on a DGX Spark. A privileged host administrator can read memory — on-prem that administrator is the customer, which is the point, but it belongs in the meeting rather than in an audit.
  • The ledger has no external anchor yet. Tamper-evident against edits, deletions and reordering; a chain rebuilt wholesale by someone with write access is not detectable, and a test says so.
  • Small models still get tool arguments wrong. Grammar-constrained decoding is the next piece, and the project's research claim.

Every guarantee here has a test with its name on it, and every gap has a row in a table. That is the only way a vendor can ask to be believed about something a customer cannot watch happening.


Built by Akaion AI Lab on datapizza-ai · interoperates with rizzo-pii · Apache-2.0