Evidence that an AI red-team test was fair.

Bayora walls off the attacking team, the defending team and the model, catches leaks with canaries that name the leaker, and seals every event in a log that witnesses co-sign. The run ends in a receipt anyone can check.

Or check it offline, without us · from a clone, steps below
bayora verify results_final/demo/receipt.json results_final/demo/log.jsonl --trust results_final/demo/keys.json

Custody receipt

in-toto · DSSE
Receipt
Loading the latest case…
Verify the seal, then tamper with one event in a copy of the log and verify again.
Seal not checked

The log behind it

Hashing the log in this browser…

Recomputed here
–
Signed in receipt
–
Not hashed yetRFC 9162 · SHA-256
See a real run, step by step

One run, step by step

A replay of a real Bayora run. Every frame below is that run's own data, not an illustration.

Scene 1 · The problem

An AI lab must show regulators its model was red-teamed (EU AI Act, Art. 55), but attackers, defenders and the model share one machine. If the defenders glimpse the attacks, or one tenant reads another's prompt from a shared cache (NDSS 2025), the finding is void, and nobody outside could tell.

Scene 2 · Before the run

Before anything runs, each team publishes a fingerprint (a hash) of its attacks and its rules. Neither can change them later without breaking the match.

Scene 3 · Setup

Each team gets its own container and network, and the broker is the only way through. When the red team tries to reach blue, the model directly or the internet, the kernel refuses before a packet leaves, and the attempt goes into the log.

Scene 4 · During the run

Every secret is tagged with canaries: unique tokens only Bayora can mint. During the run Bayora leaks fake ones on purpose, in nine disguises, to measure what it catches. When one surfaces, the alert says whose secret it is and where it escaped. Pieces shorter than 10 characters still slip past, and the console lists them as residual risk.

Scene 5 · Against the real model

Before the evaluation, Bayora attacks the real model itself: tenant B times its own prompts to guess which of 8 secrets tenant A's prompt holds. Bayora gives each tenant its own cache slot and a per-tenant salt, then checks that the attack stops working.

Scene 6 · After the run

Every event is chained into a log that two witness processes co-sign. The run ends in a receipt anyone can check without trusting the operator. Try it: verify, then tamper with one event.

bayora console · replayScene 1 of 6

Measured, not promised

Read from the run behind this page. Bayora never claims zero leakage; what it cannot see is listed as residual risk in the console.

MeasureResultRound 1How it was measured

Loading run…

Four commands, on your machine

Don't take our word for it. These commands check the run behind this page on your own machine.

  1. Get the code

    Python 3.10 or newer, in a fresh virtual environment. Run the next steps in the same terminal. No Docker needed.

    git clone https://github.com/bhaveshlakhmani25-ui/Bayora_HIH2026 && cd Bayora_HIH2026 && python3 -m venv .venv && . .venv/bin/activate && pip install -e .
  2. Verify this page's receipt

    Checks the signatures, the witness quorum, every published checkpoint and the teams' reveal, without contacting us.

    bayora verify results_final/demo/receipt.json results_final/demo/log.jsonl --trust results_final/demo/keys.json --checkpoints results_final/demo/checkpoints --reveal results_final/demo/reveal.json
  3. Try to break it

    Change one event in your copy of the log, run step 2 again, and it fails and says why. The original is kept as log.jsonl.bak.

    sed -i.bak 's/BLOCKED/CONNECTED/' results_final/demo/log.jsonl
  4. Measure the leak scanners

    The 180 planted leaks and 10,000 noise lines, in a few seconds on a laptop.

    bayora drill

Steps 2 and 3 use the demo run shipped in the repository. A full run of your own needs Docker on Linux, or Colima on a Mac: bayora run. See the README.

Overview

Latest events

All events

    Custody receipt

    Verify