# Bespoke Nimble: a 9B model that answers flat schemas with token probabilities instead of generated JSON

> bespokelabsai/nimble holds the data, training recipe and scoring code for a model that reads text plus a schema and returns typed choices with probabilities. This review covers the one-step design, the flat-schema limit, the probability temperature change, and the benchmark claims.

**bespokelabsai/nimble** — Local typed decisions, contrastive data curation, and model evaluation.

- Repository: https://github.com/bespokelabsai/nimble
- Stars: 2,289 · Forks: 175
- Language: Python
- License: not declared
- Published: 2026-10-11 · Updated: 2026-10-30 · Language: en
- Canonical page: https://hysenlabs.com/projects/bespokelabsai-nimble

## Nimble answers in one step and never writes out reasoning

Nimble takes some text and a schema, and makes typed decisions about the text. The schema is a list of questions. Each question is either a choice from a list you supply or a true or false question, and for each one Nimble returns the answer it picked plus the probability of every allowed answer.

The decision happens in a single step with no reasoning written first, which is the stated reason for its speed. The design is inspired by the System One approach of TypeSafe's Jev, a decision model released on September 14, 2026. The maintainers state that Nimble was not distilled from Jev. The repository exists to show how to curate data, train and serve such a model.

The cost of skipping reasoning is that you get an answer and a score but no explanation of why.

## Output comes from logits over one-token answer codes, so there is no JSON to parse

Each allowed answer gets a code that is one token long. The scorer reads the model's logits for those codes, turns them into probabilities with the softmax function, and Python code then builds the typed output. Because nothing is generated, a malformed JSON reply cannot happen.

For ordered rating scales, the probabilities let your application calculate an expected level rather than only taking the top pick. The scorers also return the raw logits and the probabilities of the candidate answers, so you can log them. Each field is scored separately, so one field cannot see the answer to another field. If you wanted a later answer to depend on an earlier one, you would have to make two calls yourself.

## The schema must be flat: enums and booleans only

You supply a context, which is the text to judge, and a schema. The schema has no nested fields. Each field is an enum with a fixed list of string choices, or a boolean. In the latest release an enum field can carry 1 to 255 string choices.

The four task shapes the repository names are routing a request to a destination, checking a yes or no condition, applying a policy with allowed outcomes, and rating an outcome on ordered levels. Example files such as examples/priority_schema.json, examples/parallel_schema.json and their matching results files show the format. Anything that needs a list of extracted items, a free-text field or a nested object does not fit, and you would have to flatten it into several enum or boolean questions.

## Two scorers, one shared prompt on Mac and a full prompt per field on CUDA

Bespoke-Nimble-9B can run on a Mac with Apple Silicon or on a machine with an NVIDIA GPU, and the two paths score differently. On a Mac, ParallelScorer processes the shared context once and then scores all the fields in parallel. The CUDA scorer scores each field on its own, with the full prompt each time.

Both return the typed output together with the logits and candidate probabilities. The practical difference is cost: with many fields over a long context, the CUDA path repeats the context work for every question. A local route also exists through Ollama. Nimble-v2 was added there on September 29, 2026, and the command is:

```bash
ollama pull nimble
```

## Probabilities were recalibrated on September 22, so old thresholds may be wrong

On September 22, 2026 the maintainers fitted a temperature for Bespoke-Nimble-9B so that the probabilities better match how often the answers are right. The model picks the same answers as before. What changed are the probability and score values, so any threshold you set against them needs a new test. A pull request, #7, covers the change.

A second update on September 24, 2026 put the latest checkpoint into Bespoke-Nimble-9B, with an 8,192-token context, up to 255 choices per field and a default of T=1.0. The original release is preserved under the original-2676 tag, and the separate v2 repository is unchanged. Update your checkout before loading the new release. Pin the tag if you need numbers that stay the same between runs.

## Prompts were trained to 2,048 tokens but allowed up to 8,192

The hosted API prompt limit was raised to 8,192 tokens for each question on September 19, 2026. The model, however, was trained on prompts of up to 2,048 tokens, so shorter prompts are the better tested ones. If your documents run long, split or trim them before scoring and compare accuracy at both lengths on your own labels.

On September 20, 2026 the maintainers published the 2,676 training examples and the 324 held-out examples for Bespoke-Nimble-9B, which had been left out of the first release by mistake. A dataset guide is in docs/DATASET.md, and docs/MODAL_SERVING.md covers serving with SGLang. Capability comes from two places: the base model, Qwen3.5-9B, and training data curated for a few specific domains. Outside those domains, expect uneven quality.

## Benchmark ranks are self-measured, and the repository has no release or license

The October 13, 2026 timeline entry reports Nimble-v4-max ranked first on the public suite of the Decision Index with 68.46, and Nimble-v4 first of 104 models under 25B with 63.70. Jev 1.13 is listed at 57.96 and Perplexity Decider v1.1 at 62.25. The v4 numbers come from the maintainers' own run on October 12, 2026 and were not yet on the Decision Index dashboard.

A public benchmark suite added on September 18 lets you run Bespoke-Nimble-9B and Jev on the same records from 13 public subsets with human labels, with steps in docs/PUBLIC_BENCHMARKS.md. Use that, not the headline scores, to judge fit for your data. The repository has no GitHub releases and no license listed. The last push was on 2026-10-24, and the maintainers themselves write that it was built in one day, so expect rough edges.

## Conclusion

Use Nimble if your task is classification-shaped: routing, yes or no checks, policy outcomes or ordered ratings over plain text, and you want probabilities you can threshold. Skip it if you need explanations, nested output, extracted spans or image input. Before building on it, confirm the license, because the repository lists none, and retest any probability threshold you set before the September 22, 2026 temperature change.

## FAQ

### What is Nimble?

Nimble takes some text and a schema and makes typed decisions about the text. For each question it returns the answer it picked and the probability of each allowed answer.

### How do I use Nimble?

You supply a context, which is the text to judge, and a flat schema of enum or boolean fields. Nimble returns the chosen answer and the probability of each allowed answer for every field.

### How do I install Nimble?

To run it on your own computer through Ollama, use ollama pull nimble. Bespoke-Nimble-9B also runs on a Mac with Apple Silicon or on a machine with an NVIDIA GPU.

## Sources

- [bespokelabsai/nimble on GitHub](https://github.com/bespokelabsai/nimble)
- [Issues](https://github.com/bespokelabsai/nimble/issues)
- [README](https://github.com/bespokelabsai/nimble/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/bespokelabsai-nimble
