Skip to main content

Nasute

Nasute logo: a nasute termite drawn in green and orange

A self-hosted eval harness for RAG (retrieval-augmented generation: a system that looks things up and then writes an answer) and for language models. It asks a system questions with known answers, has a second AI mark the answers claim by claim, counts, and keeps every run. It tells you whether a change made things better, worse or no different, with a 95% range on every number. Named after the nasute, the soldier termite that guards the colony.

Plain Python 3.11 or newer, standard library only. Any system you can ask a question over HTTP is a target, and anything else takes one Python function.

The report's front page on a phone: each dataset with its systems ranked, then recent runs A run page on a phone: the headline scores, then At a glance, a bar of outcomes for each difficulty

The demo report on a phone: the front page, and a run page with its outcomes at a glance.

Quick start

Install. Nasute uses only Python's standard library, so pipx is the way to install it; there is no Docker image, and none is needed.

pipx install nasute                     # or, until it is on PyPI: pipx install git+https://github.com/bobbyely/nasute

Or run it from a clone, with no install. Then type python3 -m nasute wherever this page says nasute:

git clone https://github.com/bobbyely/nasute && cd nasute
export PYTHONPATH="$PWD/src"            # lets python3 find the code from any folder
python3 -m nasute --help

Changing the code? Install it editable in a virtual environment instead (python3 -m venv .venv && .venv/bin/pip install -e .); see CONTRIBUTING.md.

Try the demo, with no account and no model. In one terminal start the stand-in system and judge, and in another make a folder set up for it and run:

nasute demo-server                      # leave it running
nasute init try --demo && cd try        # in a second terminal
nasute run --profile smoke

Each question gets a line as it is marked, such as [2/3] water-boils ... right (0.0 s). The run ends with its scores, each with a 95% range, and a link to its page in the report.

Point it at your own model. Run nasute init mytest (without --demo) and edit [targets.mine] and [judge] in mytest/nasute.toml. Ready-made settings: a model behind an OpenAI-compatible API and a model run by Ollama. Then nasute run --profile smoke from that folder.

Open the report. Open report/index.html in a browser, or run nasute serve and visit http://127.0.0.1:8765/. The front page shows each dataset with its systems ranked; click through to a dataset and then to a run, or tick runs to compare them. To have the printed link use your own web address, set report_url (see settings).

Progress prints as short lines at a terminal and as JSON lines when the output goes to a file or a pipe, for a program that reads logs; --log text or --log json picks one (commands).

The full walk-through is the Quick start.

How do I…

Documentation

All of it is in docs/: a Quick start, How Nasute works, how-to guides, a reference and explanations.

This repo

Path What
src/nasute/__init__.py The tool: settings, datasets, statistics, judge, runs, compare, command line.
src/nasute/manage.py, pages.py dataset and runs commands; the static report.
src/nasute/demo_server.py nasute demo-server: a stand-in system and judge for the quick start.
src/nasute/targets/ The built-in kind of target, http. Your own is a module:function in the settings.
src/nasute/datasets/ demo: ten questions about a made-up garden handbook (demo/handbook.md). judge-demo: answers with known faults, to test the judge.
src/nasute/assets/ The report page script and style, and three vendored libraries (MIT, each with its licence file): uPlot 1.6.32, Chart.js 4.5.1 and @sgratzl/chartjs-chart-boxplot 4.4.5. Versions and SHA-256 are in data layout.
src/nasute/starter/ What nasute init copies out.
nasute.example.toml Every setting, explained.
examples/ Ready settings for a model behind an OpenAI-compatible API, and for one run locally by Ollama.
tests/nasute_test.py Checks, with made-up data: python3 tests/nasute_test.py. No network, no model, no install.

Contributing and security

See CONTRIBUTING.md. To report a security problem, see SECURITY.md.

Licence

MIT (see LICENSE). The vendored chart libraries keep their own MIT licences, in src/nasute/assets/.

Metadata

Release files for nasute 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nasute 0.1.0
File Size Uploaded Provenance Actions
nasute-0.1.0.tar.gz 2.4 MB With provenance Details for nasute-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for nasute 0.1.0
File Interpreter ABI Platform Actions
nasute-0.1.0-py3-none-any.whl Python 3 none any Details for nasute-0.1.0-py3-none-any.whl

Total release size: 2.7 MB

Release files / nasute-0.1.0.tar.gz

Download URL nasute-0.1.0.tar.gz
Size 2.4 MB
Tags Source
SHA-256 checksum
How to use checksums
c52c60a65b8e61cad5432e4e13ee5f94318495289a072f15e3d377e7a5199ea5
BLAKE2b-256 checksum
How to use checksums
fc3507769c9e9688df03080fcfa968fc30f93634c30523b7f03cf9d05dcea0cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 12, 2026.

Transparency log

Release files / nasute-0.1.0-py3-none-any.whl

Download URL nasute-0.1.0-py3-none-any.whl
Size 223.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f7d79c18dc22cc76f82c545e6b52534a37734ea02d3b3bd0c2235f7ebb5d737c
BLAKE2b-256 checksum
How to use checksums
5395b0bf5954a0e8f973941ceb3a0c829e1b1ab8b48bea6a963d9748d477e703
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 12, 2026.

Transparency log

Security for nasute 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for nasute-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 12, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page