New onetrace-console 0.3.2: the short answer first, then what may have happened →

Your AI changed. Find the first difference.

Compare two runs of your pipeline. onetrace shows the first step whose output differs, what was recorded there, and every step that changed after it. Each run's record is one receipt per step, checkable by anyone.

Free and open source (Apache-2.0) · runs on your machine · no account · pip install onetrace

p3-23-t-1-rules1 → p3-27-t-1-rules2The live demo's ticket triage

classify · First difference

A recorded setting differs: rules 1 → 2. Same tool, keyword-rules 1.0.0; its configuration digest differs as well.

Its output class.json: "class": "billing" "technical", "matched": "charged" "app"

Recorded values from the live demo's example pipelines. A first difference narrows the investigation; it doesn't by itself say why the output changed. Open the demo

The problem

"Why did the answer change?" shouldn't take a week.

An AI pipeline is a chain of steps: retrieve, rank, build a prompt, call a model, act. Any of them can change quietly: a data refresh, a library upgrade, a new model behind the same name. When the answer moves, your team is left reading two piles of logs and hoping they line up.

Logs what your system says

  • Written by the system you're investigating, in whatever shape it chose
  • Hard to compare run against run
  • Nobody outside your team can check them

onetrace what someone else can check

  • One small receipt per step: what it read, what it produced, which tool and settings
  • Two runs compared step by step, with the first difference named
  • Checkable by anyone, with no network calls, by an independent verifier

What you get

Answers you can trace. Changes you can locate.

Three things your team gets on day one, without changing how your pipeline works.

Find the step that changed

Compare any two runs. Every step is marked same, first difference or changed after it, so you start at the first step that differs, not at the symptom.

Prove what ran

Each run leaves a chained record. Change, delete or reorder anything afterwards and an independent check says so. Sign it with your key if you need to.

See it all in one place

The onetrace console turns run records into pages anyone on the team can read: what was checked, what held, and what needs attention first.

Product tour

The console, on real demo runs.

Screenshots of the live demo, taken from its own pages. Open the demo to click through the same screens; nothing can be changed there.

See it on pipelines like yours: examples by industry →

01 · Overview

Every run, and what the evidence says about it

Each pipeline with its runs, and how many of their records agree. Then the runs that need attention first, each with what its own page reads, and counts you can click through to the exact runs behind them.

The live demo's Overview. It starts with a pipeline whose records agree, P3 ticket triage: its five stages, and 6 of 6 records agree. Then, under Then see what onetrace catches, the runs broken on purpose when the demo was built: what was done to each, and what its own page reads, such as Contradicts its record or Not checked.
02 · One run

A run, step by step, with its checks

A clear verdict at the top, then one question at a time: do the records agree, was it signed, is any step missing. Each answer says exactly what was and wasn't checked.

One run's page on the live demo: p3-27-t-1-rules2 in pipeline P3, marked Changed vs p3-23-t-1-rules1, first difference at classify. 5 of 5 declared stages, recorded in format stage-receipt-chain/0.3. Records agree: Yes. Ran as approved: Yes. Signed by a known recorder: Yes. Committed by a known time: Not anchored. Below, the case, the check's summary, and what the evidence establishes: 143 checks made, all hold.
03 · Two runs

Where two runs part ways, and the text that changed

The comparison's graph marks the first step that differs and everything after it. Its text diff shows, line by line, the output text that changed, each side checked against its receipt first.

Open the live demo

The text diff page for classify on the live demo. Settings: rules 1 to 2. In classify's class.json, class changes from billing to technical and matched from charged to app. In draft_reply's reply.json, the class and the reply text change from a billing reply to a technical one, and route's route.json begins below. Each output is marked verified against its receipt in both runs.

Suggested explanations

An explanation you can check.

onetrace-explain asks a model you configure where to look, then holds every claim to the record. If a claim can't be tied to it, you never see it.

  • Labelled, every time. Each explanation says it is AI-generated and may be wrong, and names the model that wrote it.
  • Every claim cites the record. It names the items in the comparison it rests on, linked where the page can show them. Claims that misquote the record are dropped before anyone reads them, and the page says how many.
  • Checks you can run. It suggests onetrace commands, each once; on your own console, the ones it can run get a Run button and every other a Copy button. A lead is confirmed or ruled out only by what those checks report.
  • It leaves a record too. Each explanation is recorded as a onetrace run of its own, and checked like any other.
  • You choose what's sent. To a model you configure, only when you press Explain. Before it first sends a kind of item to an endpoint, it names those kinds and waits for Send, and "Show the packet" shows the exact bytes.
pip install onetrace-explain

How it works · What it reads, sends, checks and writes

The live demo's split comparison in onetrace-console 0.3.2. At the top, The short answer: The runs first differ at split, where chunk_size went from 1024 to 512. Every stage before it is the same, all 3 stages after it differ; a strip of the five stages with split marked First difference. Directly under it, What may have happened, AI-generated, may be wrong, model anthropic:claude-sonnet-4-6: one card, Lead (possible culprit), saying the first difference originates in the split node where the chunk_size constant changed from 1024 to 512, with four cites as chips, two of them checked; then three onetrace commands under Checks, and the line 5 claims checked against the record, 4 left out.

Shown: the live demo's split comparison in onetrace-console 0.3.2: the short answer first, then the kept explanation, written once by claude-sonnet-4-6 and served as a file. The live demo shows four kept explanations and makes no network calls. See the split comparison's explanation on the live demo

The deterministic harness

Your model is non-deterministic. Your record of it shouldn't be.

onetrace wraps every step of an AI pipeline or agentic flow, model calls included, in a fixed, byte-exact record. The model still behaves like a model. Everything around it becomes something you can check, compare and audit.

Variation is allowed

The model can stay probabilistic.

Variation is caught

Any change shows up as a different digest.

Variation is located

The first difference, named, and checkable in your CI.

The model itself is not made deterministic. What is deterministic is the record around it.

Deterministic where it can be. Honest where it can't.

Re-run and checked

Retrieval, ranking and prompt building can be re-run from their recorded inputs, and onetrace tells you which ones reproduce.

Recorded, never faked

A model call is kept exactly as it happened and marked as not re-runnable. It's reported as "could not check", never quietly passed.

Pinned to the step

When two runs disagree, the change is pinned to the step where it happened, so you know whether the data, the prompt or only the model moved.

Auditable and governable

From evidence to a decision you can defend.

Every agentic run leaves a record an auditor can check on their own. Every change can be held against an approved baseline before it ships, with the step that changed named for the reviewer.

Your coding agent can help you start.

Hand it the integration recipe. It adds onetrace to your pipeline, asks you what only you can answer, and reports back with test, verify and diff results for you to review.

New in 0.4

Read your runs where you already look.

Three new views of the same record. None of them changes a verdict.

In your tracing tools

onetrace export otel turns a run into one OpenTelemetry trace, a span per step. The trace is a view; the record stays the evidence.

Across many runs

onetrace drift lines up a series of runs and compares each with the first or the one before, with each step's time beside it.

With a suggested explanation

onetrace-explain asks a model you choose where to look, then checks every claim against the record. Labelled AI-generated, and it may be wrong.

Everything new in 0.3 and 0.4 →

Who it's for

Built for the people who get asked "why?"

AI product teams

Ship changes with confidence

Upgrade a model, a retriever or a prompt, then compare before and after, step by step.

From "something changed" to "this step changed" in one command.

Risk and compliance

Hand over a record, not a story

Give reviewers the run folder. They check it themselves, with no network calls, using a verifier that doesn't trust your code.

Evidence a third party can verify on their own.

Platform and ML engineers

Add it in minutes, remove it in seconds

Two decorators on the code you already have. Plain Python, LangChain, LlamaIndex and Langflow examples included.

No platform, no account, no data leaves your machine.

Honest by design

We tell you what it doesn't prove, too.

A record you can trust has to be clear about its limits. onetrace says these out loud, in the product and in the docs.

It doesn't judge truth

A pipeline that faithfully records a wrong answer still verifies. onetrace shows what ran, not whether the answer was right.

"Same" means same output

A step marked same produced identical output. If its tool or settings changed, that's flagged separately, never hidden.

Not checked is not passed

When something couldn't be checked, onetrace says so plainly. It never reports a gap as a pass.

Read the full list of what onetrace does not claim →

See it on real runs in one click.

The live demo is the real console, read-only. Or install it and point it at your own pipeline.