Bello
Build a cheaper, more reliable, better coding team from the models you already have.
Codex, Claude Code, OpenAI, Anthropic, OpenRouter, in any mix. Bello puts a supervisor, a reviewer, an adversary, and a local log distiller around the coder, each optional, each on its own model. In our tests, one of the configurations used 66% less Codex usage at the same quality.
Contents
TL;DR
Bello runs a coding task through a coder and four optional parts: a runtime supervisor, a completion reviewer, an adversary, and a local log distiller. The coder, the supervisor, the reviewer, and the adversary each have their own model and reasoning effort, from a Codex or Claude Code subscription or from an API provider. The four components can be enabled or disabled independently.
In our tests, the Efficient Budget configuration used 66.3% less of the weekly Codex limit than Raw GPT-5.6 Sol XHigh without lowering average quality, and its mean score was 1.45% higher. Sol Ultra C+A raised the mean score over Raw Codex by 26.4%. The log distiller cut subscription usage by 22% on Astra and by 14.8% on Luna.
Install
Python 3.11 or newer, git, and macOS, Linux with the bubblewrap package, or
native 64-bit Windows 11 or Server 2022/2025 with the one-time sandbox
preparation from docs/windows.md.
pipx install bello
bello doctor
Then add the model sources you want, any one is enough:
- Codex subscription: install the Codex CLI and run
codex login. - Claude Code subscription:
pipx install 'bello[claude]' --force, thenbello runtime login claude-code. The extra bundles the official Agent SDK and its CLI. - API providers (OpenAI, Anthropic, OpenRouter, and other Pi providers):
Node.js 22.19 or newer,
bello runtime installonce, thenbello runtime login <provider>. - Log distiller:
pipx install 'bello[log-distiller]' --force. The model (599 MB) downloads on the first run with the distiller on. With subscription Codex it also downloads a compatible Codex helper on Apple Silicon, Windows x86_64, and Linux x86_64 (glibc 2.35+); see docs/native-codex-selection.md.
bello doctor shows what is ready, and bello update updates Bello. To run
Bello from inside your coding agent, add the plugin, which includes the
configuration advisor. For Codex:
codex plugin marketplace add AlexeyKulaev/Bello-codex-marketplace --ref main
codex plugin add bello@bello-marketplace
The same plugin has a Claude Code manifest in plugins/bello.
Quick start
After installing the plugin, open your coding agent in the project that
contains task.md. The full start can be a short conversation:
You: Do you see the Bello plugin?
Agent: Yes. I can inspect the task, recommend a configuration, and run it with Bello.
You: Please recommend the best balance of price and quality for completing
task.md.Agent: I recommend Configuration X for
task.md. It offers the best balance of price, quality, and time for this task.You: Thanks. Please run
task.mdwith Configuration X and keep me updated on what is happening.
The agent shows the resolved configuration before launch. Bello then runs the
task and writes .supervisor/FINAL_REPORT.md with the result, changed files,
checks, and remaining risks.
You can also ask a stronger model to prepare an advisory PLAN.md, then have a
less expensive Bello configuration execute it. The coder receives the plan as
guidance, while completion review and adversarial testing remain independent.
Bello in 42 seconds
https://github.com/user-attachments/assets/f0324432-f616-45f6-beca-9bd8282f06ef
How Bello runs a task
The coder implements the task in a disposable workspace and runs its own checks. Bello then hands the final patch back to your project. Around the coder, four parts can be switched on or off independently.
- Runtime supervisor. Follows the live run, judges risky commands before they run, redirects the coder when it drifts from the task, and can restart a failing run without losing the workspace. On by default.
- Completion reviewer. Starts with a fresh context, compares the result and its evidence with the task, and returns the work when something is missing or unproven.
- Adversary. Receives the finished result without the development history and tries to break it with edge cases, invalid input, and feature interactions. A separate check confirms its findings before they go back to the coder.
- Log distiller. A ModernBERT model we fine-tuned, running locally, that shortens tool output before the coder and its subagents read it. Reviewers get the undistilled output.
Confirmed problems go back to the coder, and the number of review and adversary rounds is a setting. Roles can use different providers, including API providers such as OpenAI, Anthropic, and OpenRouter, and the coder, the reviewer, and the adversary can also delegate work to subagents with their own models. For example, when these models are available in your accounts:
| Role | Model |
|---|---|
| Coder | GPT-5.6 Sol |
| Coder subagents, three in parallel | Claude Sonnet, GLM, GPT-5.6 Luna |
| Runtime supervisor | GPT-5.6 Terra |
| Completion reviewer | Claude Fable |
| Adversary | GPT-6 Astra |
| Log distiller | ModernBERT on your machine |
You do not have to pick all of this by hand. The advisor in the Codex and
Claude Code plugins reads the task and the repository and recommends one
complete setup for the priority you name. Every setting is also in
bello config.
Results
Scores are ProgramBench completion scores unless a task has its own evaluator. Raw means a model run through Codex alone, without Bello.
Four models, raw and with Bello
Three ProgramBench tasks (Solar, Samtools, and Rumdl), four models, each run
raw and through Bello: 24 runs in total. Sol ran at xhigh here.
Bello scored higher with every model. The gap is 13.6 points on Luna, 9.5 on Terra, 6.5 on Sol, and 6.0 on Astra. Solutions for all 24 runs.
Efficient Budget: less usage at the same quality
Efficient Budget uses GPT-5.6 Luna at xhigh for the coder, the completion
reviewer, and the adversary, and Luna at high for runtime supervision with
cheap triage on. It allows one completion return before one adversary pass.
The baseline is Raw GPT-5.6 Sol XHigh.
Across four tasks with three runs per task and system, Budget used 5.27% of a weekly Codex limit against 15.63% for Raw, which is 66.3% less. Its mean score was 48.80% against 48.10%, 1.45% higher. Runs took longer: 1:49:44 on average against 28:27.
| Task | Raw score | Budget score | Change | Raw weekly limit | Budget weekly limit | Raw time | Budget time |
|---|---|---|---|---|---|---|---|
| Revive | 40.990% | 45.530% | +11.08% | 3.2757% | 1.0555% | 24:52 | 1:23:22 |
| JSONSchema | 56.821% | 54.673% | -3.78% | 3.0069% | 0.8138% | 23:34 | 1:20:43 |
| LightningCSS | 60.750% | 60.302% | -0.74% | 6.0281% | 2.2569% | 40:39 | 2:58:52 |
| Miller | 33.839% | 34.684% | +2.50% | 3.3190% | 1.1428% | 24:44 | 1:36:00 |
| All 12 + 12 | 48.100% | 48.797% | +1.45% | 15.6297% | 5.2690% | 28:27 | 1:49:44 |
Scores and times are means over three runs; weekly limit is the sum.
Solutions and checksums. Per-run rows.
Sol Ultra C+A: higher quality for more time
With GPT-5.6 Sol at ultra, one completion review and one adversary pass
raised the mean completion score on Solar, Samtools, and Rumdl from 53.53% to
67.67%, which is 26.41% higher than Raw Codex. Total time across the three
tasks rose from 2:48:55 to 7:08:06.
| Task | Raw completion | C+A completion | Change | Raw time | C+A time |
|---|---|---|---|---|---|
| Solar | 53.13% | 59.00% | +11.05% | 00:32:33 | 02:17:45 |
| Samtools | 51.86% | 63.00% | +21.48% | 00:36:17 | 02:14:40 |
| Rumdl | 55.60% | 81.00% | +45.68% | 01:40:05 | 02:35:41 |
| Mean / total time | 53.53% | 67.67% | +26.41% | 02:48:55 | 07:08:06 |
Run-level scores and times. Solutions.
Runtime-only: supervision alone
With only the runtime supervisor on, Bello scored higher on three custom tasks built from long specifications with contradictions and late corrections, in about the same time as Raw Codex. Each task has its own evaluator on a 0 to 100 scale. On the shorter ProgramBench tasks (Solar, Samtools, and Rumdl) the average gain was about 2%.
| Task | Raw score | Runtime-only score | Change | Raw time | Runtime-only time |
|---|---|---|---|---|---|
| Marl | 32.91% | 37.91% | +15.19% | 00:58:49 | 00:46:09 |
| Slab | 81.08% | 85.69% | +5.69% | 00:57:26 | 01:04:11 |
| Pinch | 89.25% | 98.00% | +9.80% | 00:40:09 | 00:43:34 |
Task briefs, tests, and evaluator outputs.
Log distiller: less tool output for the coder
The distiller is a ModernBERT-base encoder with a small token-selection head, about 149 million parameters. In the coder pipeline, each tool call carries a short focus written by the coder, what it wants from the result, and the distiller uses that focus to decide which parts of the output to keep and which to drop. It keeps original text and writes no summary. It runs on your CPU, so logs stay on your machine and no paid model call is added. The task file, reads of instruction files such as README or AGENTS.md, and command help pass through unchanged.
We measured it on the JSON Schema task with the same coder model, with and without distillation, on a weaker model (GPT-5.6 Luna) and on a frontier model (GPT-6 Astra). Usage fell with both, so the selector works for weak and strong coders alike.
| Coder | Runs per arm | Usage | Score, off to on | Mean solution time, off to on |
|---|---|---|---|---|
| Astra XHigh, runtime off | 3 | -22.0% | 62.22% to 60.57% | 33:04 to 42:10 |
| Luna Max, runtime on | 6 | -14.8% | 56.75% to 55.45% | 1:41:53 to 1:22:38 |
Luna's 14.8% includes the runtime supervisor's usage in the Bello arm. After subtracting the recorded runtime cost, the coder alone used 25.3% less. Scores were 1.3 to 1.7 points lower with the distiller on.
Model on Hugging Face. Solutions and checksums.
Results for the older 4C+A+2C schedule (four completion reviews before the adversary and two after) are archived in the 0.5.2 README.
Configuration
bello config # interactive editor, saves .supervisor/config.json
bello runtime models # models and reasoning efforts your accounts can use
bello --task TASK.md --adversary # run flags override the saved settings for one run
The editor covers the model and reasoning effort of each role, subagent pools
and concurrency, review budgets, and the four switches. bello --help lists
the run flags.
License
Bello is released under the MIT License. See LICENSE. The distiller model is distributed separately under Apache 2.0.
Contributions require signing the project CLA. A bot will prompt you on your first pull request, and you only sign once.
Release files for Bello 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bello-0.6.0.tar.gz | 925.5 kB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bello-0.6.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| bello-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.3 MB
Release files / bello-0.6.0.tar.gz
| Download URL | bello-0.6.0.tar.gz |
|---|---|
| Size | 925.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
17bb456bdda3d26fe7fb5ee8ce8d2241a1657b1de7e29482b89910650af75ef9
|
|
BLAKE2b-256 checksum How to use checksums |
0f3c433ce0bc1f75f72a365218bd0fcab003cdb15333b5cdbbc40eee5a6420fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 20, 2026.
Transparency logRelease files / bello-0.6.0-py3-none-win_amd64.whl
| Download URL | bello-0.6.0-py3-none-win_amd64.whl |
|---|---|
| Size | 921.6 kB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
6a487abc3d3814518254f7c5a66b82847f7f11c80c12456de675d68a3032f88b
|
|
BLAKE2b-256 checksum How to use checksums |
bb55ba9ec2573942a3ade60560076268c0c101d613c2bb77580b5eac349d28bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 20, 2026.
Transparency logRelease files / bello-0.6.0-py3-none-any.whl
| Download URL | bello-0.6.0-py3-none-any.whl |
|---|---|
| Size | 459.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e56df94693eea75732389aa7c93b1b7eb769171ba2ecc4907cab49e6e44abdf1
|
|
BLAKE2b-256 checksum How to use checksums |
5cf20149ae583a780409f792b8341c50351d0b6fa717ed02182782d89d33cdb3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 20, 2026.
Transparency log