Open source, Apache-2.0v0.31.0, pre-1.0
You changed one prompt.What else got worse?
A new prompt, a model version, a library upgrade. The app still runs, and one answer your client relied on is now wrong. digline tells you which case, by how much, and whether the drop is bigger than the judge’s own noise.
pip install digline
Requires Python 3.12 or newer
Start here Why a reference in the repo
- Quickstart needs no API key
- No server, no telemetry
- Exit code for CI
how-do-i-returngot worse
- llm_rubric
- 1.00 → 0.40
- contains
- 1.00 → 0.00
- Also worse
- is-it-waterproof, where-is-my-order
-Sign every reply as "— Northwind Support".+Sign every reply as "— the Northwind team".
6 checks got worse. CI stops here.exit 1
The problem
An LLM app can get worse without anything breaking.
The tests pass, the app answers, the demo works. Then a prompt edit, a model version or a library upgrade changes one answer your client depended on, and nothing in the pipeline says so.
How it usually goes
- Re-run the evals and look at the average
- No way to tell a real drop from the judge having a bad day
- What was approved, and when, lives in someone’s notebook
- The client finds the regression first
With an approved reference in the repo
- Every change is compared case by case
- The judge’s noise is measured before a drop is called
- The reference is a file in a PR, with a commit and a name on it
- CI stops before the release does
How it fits
It lives in your repo, not on a server.
Nothing to sign up for and nothing to host. The reference is a file, and the tool is a package.
The reference is a file in your repo
Scores, prompt and model config, committed next to the code. It changes through a PR, so there is a commit and a name on every approval.
One dependency, no provider SDK
digline installs jsonschema and nothing else of its own. No server, no telemetry, nothing hosted. In CI the exit code is the whole interface.
Providers
One plugin each, installed only if you use it.
- Anthropicdigline-anthropic
- OpenAIdigline-openai and any OpenAI-compatible endpoint
- Amazon Bedrockdigline-bedrock
Worked examples
A real app on each framework, with its suite.
Other ways to run it
In a container, or for an agent.
Commands
Thirteen commands, one job each.
Every command has its own page or a place in the guide.
- Record and approve
- Compare
- History
- Maintenance
-
digline runexecute the suite and write a run -
digline promotemake a run the baseline -
digline comparecompare a run with the baseline -
digline diffreport what differs between two runs; judges neither -
digline explainread a run back at length; compares if there is a baseline -
digline reportrender the report -
digline listlist stored runs, newest first -
digline logwhich model answered, read down the stored runs; never a gate -
digline registerrecord a person's disposition about a comparison; commit the line -
digline viewbrowse stored runs and compare any two; promotes nothing -
digline rejudgejudge a stored run's recorded answers again, declaring the source -
digline migratebring stored runs and the baseline up to the current schema -
digline deleteremove a run, its journal legs and its replays across the tenant
Checks
Deterministic first, judge last.
22 checks today, in five kinds. The list grows; the kinds stay.
-
Deterministic12
No model involved. Same output, same verdict.
-
Judged2
A second model scores the answer, and its noise is measured.
-
Budgets2
A ceiling on cost or latency, scored graded rather than pass/fail.
-
Aggregates4
One verdict over the whole run.
-
Wrappers2
Takes the nature of the check it wraps.
Without a reference, and with one
The same eval run, read two ways.
One line of the prompt changed between two runs. On the left, the scores you get without a reference. On the right, what digline prints against the approved one.
The new run on its own no reference
case llm_rubric containshow-do-i-return 0.40 0.00is-it-waterproof 0.40 0.00where-is-my-order 0.40 0.00Were these 1.00 yesterday? Did anything change?Nothing here says.
digline compare against the reference
6 checks got worse compared with the reference. Every case could be judged. No case is suspended. The suite is unchanged from the reference. 1 file under test changed since the reference.tenant 'northwind', against baseline 2026-10-12T14-02-23-521445-00-00-282b0c02d6511fb4 prompt.md · +1 −1 lineshow-do-i-return · llm_rubric · Went from passing to failing (1.000000 → 0.400000).how-do-i-return · contains · Went from passing to failing (1.000000 → 0.000000).… 4 more linesexit 1
Both columns come from the same captured run, digline 0.31.0. The left one shows only the new scores; the right one is the compare output, shortened where marked.
Try it
The quickstart runs without an API key.
You need Python 3.12 or newer. The model call in the guide is canned, so you can see the whole loop before wiring a real provider.
digline runRuns the suite and writes a run file.
digline promoteA person approves that run as the reference.
digline compareEvery later run is checked against it.
$ pip install digline==0.31.0
$ digline run --suite support.py
2026-10-12T14-02-22-249098-00-00-282b0c02d6511fb4
$ digline promote --suite support.py --run latest --replacing none
tenant 'northwind' · support baseline set to 2026-10-12T14-02-22-249098-00-00-282b0c02d6511fb4
$ digline compare --suite support.py --run latest
Nothing got worse compared with the reference. Every case could be judged. No case is suspended. The suite is unchanged from the reference.tenant 'northwind', against baseline 2026-10-12T14-02-22-249098-00-00-282b0c02d6511fb4
Output captured from digline 0.31.0, run 2026-10-12T14-02-22-249098…. Full guide
In an agentic flow
Where the check sits when an agent is making the changes.
The agent edits, digline decides whether the edit can go further.
Roadmap
Where it’s headed
Shipped — verdict credibility: a drop is a regression only when it leaves the interval the baseline measured across its own samples, and the open work now is adoption.
Two things will never be on the roadmap. A hosted service that receives your payloads — prompts, outputs and the judge stay in your perimeter. And usage data collection, ever.
Pilots
Building LLM features for clients?
I’m looking for a few pilot teams to run digline on real projects — especially teams that build and maintain AI solutions for third parties. In exchange you get direct support and a say in what gets built next.
Write me: hello@digline.dev or open a GitHub issue
Start with one suite and one approved run.
The guide needs no key.
pip install digline
why a hash wasn’t enough → see it on your own suite → what an agent can and cannot do → how it differs from the tools you know →