bandr
Agent logs in. Harbor tasks out.
Rebuild the jobs in your traces as runnable tasks for evaluation and training.
Open GIF · Run the example · Still image
bandr helps your coding agent turn the jobs captured in your logs into runnable Harbor task packages: the original instruction, starting environment, outcome verifier, and an oracle when one is available.
Bring logs and any existing harness or starting-state files. The coding agent writes source-specific parsers and generators; Mint runs them over the corpus, writes the packages, checks them, and records their provenance and gaps. Successful, failed, and partial runs can all contribute. Repeat attempts at the same instance become one task with their evidence kept together.
Traces → Harbor task → model attempt → verifier grade → new traces. Harbor can run an agent on the packaged task and grade its output using the task's verifier. The resulting trajectory and result can become input for another conversion. Use the tasks for evaluation or as environments in a training workflow.
Quickstart
Install bandr, then give your coding agent the bundled skill.
The package is bandr; its command is mint.
pip install bandr
mint skill install
Python 3.11+.
Start a new Claude Code session and ask:
Use Mint to turn ./logs into Harbor tasks in ./mint-workspace.
Inspect the source first, build a few tasks, then validate and report.
The skill goes into ~/.claude/skills/mint/. Use mint skill install --project
for the current project's .claude/skills/mint/. Other coding agents can read
SKILL.md directly.
Other install options and updating the skill
For an isolated CLI installation, use uv tool install bandr or
pipx install bandr. For local development, run uv sync --extra dev and use
uv run mint ... to run this checkout.
After upgrading, re-run mint skill install. If the installed skill differs,
review it and use --force to replace SKILL.md; other files are preserved.
When to use Mint
| You have | You want | Mint helps you build |
|---|---|---|
| Failed or successful agent traces | Repeatable tests of the same work | Whole-job tasks with starting files and outcome checks |
| Several attempts at one job | One task with all attempts as evidence | Grouped instances with source references |
| Traces plus an existing harness | Tasks for evaluation or training rollouts | Harbor packages that reuse the supplied environment |
Bring the starting-state files or harness when you have them. Missing evidence becomes a recorded gap or a candidate to finish, rather than an invented environment.
How it works
The coding agent writes source-specific code. Mint runs it over the corpus and records the evidence.
| Step | What happens |
|---|---|
| Read | Sample the logs, write a parser, and identify the whole jobs the agent was given. |
| Rebuild | Group repeated attempts and construct each job's instruction, starting environment, verifier, and oracle when available. |
| Challenge | Check structure, answer leaks, and credentials. Exercise the verifier with the oracle, no-op, wrong outcomes, and valid alternatives. |
| Report | Inspect task provenance, gate results, exclusion reasons, and gaps. Resume from mint status. |
The output is a task package you can inspect:
out/tasks/<type>/<task>/
├── instruction.md # the original job
├── environment/ # the world before the agent acted
├── tests/test.sh # check the requested outcome
├── solution/solve.sh # optional oracle
└── task.toml # runtime configuration and provenance
The verifier checks the outcome; it does not require a new agent to replay the logged steps. Mint can also build dialogue tasks with a runtime user simulator, or use a model judge when deterministic grading is unsuitable.
Try it on three traces
The bundled example contains three synthetic attempts at two jobs. Two recorded answers are wrong. Its generator recomputes the expected answers from the starting files and builds two tasks.
Run it yourself: logs → parser → task generator → validation → report. No model calls or production logs are needed.
Local checks leave tasks generated. Install Harbor and start Docker, then
run mint validate --runner harbor for container execution. Only passing Harbor
execution gates can produce validated. The example's answer oracle proves
verifier wiring; inspect that the expected answer follows from the inputs.
Validation statuses, sensitive data, and what passing gates prove
| Status | Meaning |
|---|---|
generated |
Structure and content gates passed; execution may be local-only, untested, or missing an oracle. |
validated |
Required Harbor execution gates passed, including an accepted oracle and rejected no-op/wrong outcomes. |
judged |
A model grades the task. Inspect calibration and execution evidence; it is never called validated. |
blocked |
A content scan found an answer leak or credential. Credential-blocked packages are removed from out/tasks; fix and regenerate. |
exec_failed |
Structure, execution gates, or a type audit failed. Inspect the reason. |
Passing gates are evidence about the verifier, not proof that the expected answer
is correct or the reconstructed task is faithful. Review the source references,
grading trust, oracle provenance, and gaps in report.md.
The secret scan is best-effort text scanning. Binary and explicitly allowed files are outside it; raw logs, parsed trajectories, and internal metadata can remain sensitive. See the validation guide.
Documentation
| Start here | For |
|---|---|
| Mint skill | The full agent-assisted workflow |
| Parsing · Checks | Reading your source format and optional findings |
| Task types | Building whole jobs, environments, and verifiers |
| Validation · Harbor | Execution gates and runtime integration |
Run mint --help, mint schema, and mint docs for the installed version's
commands and contracts. Open an issue
for a bug or a conversion case you cannot represent.
Development, releases, and older recipes
uv sync --extra dev
uv run ruff check bandits mint tests
uv run ruff format --check bandits mint tests
uv run pytest tests
The distribution is bandr; Python imports remain mint and bandits.
bandits provides the ingestion library. See releasing and
the changelog. Older SFT and JEV
recipes are retained for reference.
Anonymous command usage is enabled by default. No log contents or paths are sent. Disable it with mint telemetry off or MINT_TELEMETRY_DISABLED=1. Captured fields and limits.
Metadata
Release files for bandr 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| bandr-0.3.1.tar.gz | 671.2 kB | With provenance | Details for bandr-0.3.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| bandr-0.3.1-py3-none-any.whl | Python 3 | none | any | Details for bandr-0.3.1-py3-none-any.whl |
Total release size: 913.3 kB
Release files / bandr-0.3.1.tar.gz
| Download URL | bandr-0.3.1.tar.gz |
|---|---|
| Size | 671.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
625932dcad945494bf4d80922209143e312c6b03ca6fc5583a2041315298fcf4
|
|
BLAKE2b-256 checksum How to use checksums |
e500493e62165af07b0dcfc1348e31e7dc06c8e679d45e32b8d50f12ed79edec
|
| 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 13, 2026.
Transparency logRelease files / bandr-0.3.1-py3-none-any.whl
| Download URL | bandr-0.3.1-py3-none-any.whl |
|---|---|
| Size | 242.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bff523aa126f288c228d829080614f2d652f09ea72f1057616b2d5df6d40a7db
|
|
BLAKE2b-256 checksum How to use checksums |
9bf057ffb3bd37fde508eb56fd46f83e4947651e72bb59ad1203b64d7ddc0c1b
|
| 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 13, 2026.
Transparency logSecurity for bandr 0.3.1
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.
Attestation for bandr-0.3.1.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 13, 2026.
Transparency logA 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.