Hugging Face | Technical report | Blog | API reference | Free unlimited use
StartLux-Decision is a family of open decision models. Given a state (text, JSON or images) and a set of typed
questions, a model returns a probability for every option of every question: a choice among listed options
(choice), a yes or no judgement (noul), or a level on a scale (score). Instant models answer in a single forward
pass with bidirectional attention over the prompt. AutoThink models answer in one pass when the top probability
reaches a gate, 0.6 by default, and otherwise generate a short reasoning trace and read the answer again.
This repository contains the inference engine and HTTP server for both variants. The API is compatible with System
One /v1/systemone.
Demos
In the chess and game runs, every step is one request with typed questions, answered by StartLux-Decision-v1-27B, the first release, in one pass. The rescue and launch videos send one frame a second with nine questions to the 27B AutoThink model on bamboonode.dev, which thinks only when its top probability is below the 0.6 gate. Their footage is from the U.S. Coast Guard and NASA (public domain, no endorsement implied), and the faces of the people being rescued are blurred. Click a preview for the video. v1/README.md describes each harness, and the harnesses for computer use and chess are in v1/demos.
Release notes
- 2026-10-16: StartLux-Decision v1.1 27B Instant ranks first of 174 entries on the Decision Index 0.3.2 leaderboard on Hugging Face, with a Full score of 69.12. It is also first on each of the three parts: the public benchmarks (72.88), the private tests of the same skills (64.82) and the private tasks from new domains (61.41).
- 2026-10: the technical report is on arXiv as 2610.17309.
Models
| StartLux-Decision v1.1 | Decision Index 0.3 | DecisionPivot | Other formats |
|---|---|---|---|
| 27B AutoThink | 73.37 | 86.9 | GGUF · MLX 8-bit · MLX 4-bit |
| 27B Instant | 72.83 | 75.4 | GGUF · MLX 8-bit · MLX 4-bit |
| 9B AutoThink | 70.45 | 59.9 | GGUF · MLX 8-bit · MLX 4-bit |
| 9B Instant | 69.96 | 47.5 | GGUF · MLX 8-bit · MLX 4-bit |
| 4B AutoThink | 68.21 | 59.9 | GGUF · MLX 8-bit · MLX 4-bit |
| 4B Instant | 67.88 | 41.5 | GGUF · MLX 8-bit · MLX 4-bit |
| 2B Instant | 59.14 | 21.1 | GGUF · MLX 8-bit · MLX 4-bit |
| 0.8B Instant | 53.75 | 8.1 | GGUF · MLX 8-bit · MLX 4-bit |
Decision Index 0.3 refers to the public subset, evaluated with the public kit. DecisionPivot reports pair accuracy on 7,800 programmatically generated examples arranged in contrast pairs that differ in one decisive detail. A pair counts only when both answers are correct. The AutoThink results use a gate of 0.9.
Across sizes, the Instant models exceed the strongest evaluated decision model of comparable size by 7.4 to 16.9 points on Decision Index 0.3, and AutoThink adds 11.5 to 18.4 points of DecisionPivot pair accuracy over Instant. AutoThink reasoning is trained with RLCD², reinforcement learning for calibrated deliberative decisions. The technical report contains the full evaluation. The engine also serves the v1 models (0.8B to 27B and 35B-A3B), which answer in one pass.
On one H200 with vLLM and one request in flight, Instant models answer a request in 25 to 52 ms at the median, from 0.8B to 27B. Through this server, an AutoThink model needs one read-out of 38 to 59 ms when it is sure. When it is unsure it writes a thought and reads the answer a second time, and the thought takes longer the more it writes.
Quick start
To try a model without a GPU, use bamboonode.dev. It hosts the 27B AutoThink model with the
same request format (POST /v1/decisions), free and without usage limits, and needs only a Bamboo API key.
To run the models yourself, install the package into the same Python environment as vLLM. It carries the vLLM plugin that Instant models need.
git clone https://github.com/StartLuxLabs/StartLux-Decision.git cd StartLux-Decision pip install -e '.[vllm]' # vLLM 0.31.0; the published numbers were measured on 0.19.1, which is also supported
Download a model and start one vLLM server per GPU with the decision server in front of them:
hf download startlux-models/StartLux-Decision-v1.1-4B-AutoThink --local-dir models/StartLux-Decision-v1.1-4B-AutoThink startlux-decide serve --model models/StartLux-Decision-v1.1-4B-AutoThink --launch-vllm --gpus 0,1,2,3 --port 8090
Ask a question:
curl -s localhost:8090/v1/systemone -H 'Content-Type: application/json' -d '{ "state": {"ticket": "I was charged twice for order #4411 and the app still shows it as unpaid."}, "questions": { "team": {"type": "choice", "instructions": "Which team should handle this ticket?", "criteria": {"billing": "Payments and refunds", "shipping": "Delivery", "technical": "App and login"}}, "urgent": {"type": "noul", "instructions": "Should this ticket be answered today?"}, "severity": {"type": "score", "instructions": "How severe is the impact?", "criteria": ["cosmetic", "annoying", "blocks the customer"]} } }'
The 27B AutoThink model answers (numbers rounded):
{"answers": {
"team": {"type": "choice", "choice": "billing", "confidence": 0.992,
"probabilities": {"billing": 0.995, "shipping": 0.000, "technical": 0.005},
"none_probability": 0.002},
"urgent": {"type": "noul", "noul": 0.870},
"severity": {"type": "score", "score": 1.858, "confidence": 0.787,
"legend": {"0": "cosmetic", "1": "annoying", "2": "blocks the customer"},
"probabilities": {"0": 0.005, "1": 0.133, "2": 0.863}}},
"usage": {"input_tokens": 290, "output_tokens": 144}, "model": "startlux-decision-27b-autothink"}noul is the probability of yes. score is the expected level, with a probability for every level.
none_probability is the chance that none of the listed options fits (see Controls).
examples/ has the same request in Python, a request with an image and a small batch client.
Controls
A request can steer the reasoning of AutoThink models and ask for more detail. All fields are optional.
| Field | Default | Effect |
|---|---|---|
think_mode |
auto |
auto reasons when the first read-out's top probability is below gate; never answers in one pass; always reasons first |
gate |
0.6 | the confidence below which auto reasons (the published results use 0.9) |
think_budget |
4096 | the longest thought, in tokens |
none_check |
true | every choice answer reports none_probability, the chance that no listed option fits; choice stays a listed option |
allow_none |
false (serve --allow-none: true) |
lets choice be null when "None of the above" is the most likely answer |
return_details, return_thought |
false | per-answer read-outs and timings, and the thought text |
images |
none | base64 strings or data URIs used as evidence |
The default gate of 0.6 answers more requests in one pass. A gate of 0.9 thinks more often and is more accurate on decisions that need rules or arithmetic. For the 27B AutoThink model on this engine, moving the gate from 0.9 to 0.6 lowers Decision Index 0.3 from 73.22 to 72.85 and DecisionPivot pair accuracy from 88.1% to 68.4%. Instant models always answer in one pass.
We suggest treating a none_probability of 0.2 or more as "no listed option fits". At 0.2 it catches two thirds
(66.3%) of the questions whose listed options are all wrong, and flags 2.2% of the questions that do have a right
answer. Lower thresholds flag many more good questions, higher ones miss more of the bad ones
(why 0.2). docs/api.md describes the full request and response
format, the confidence definitions, the details fields and the errors.
Engines
| Engine | Instant | AutoThink | Images | Typical use |
|---|---|---|---|---|
| vLLM (default) | yes, with the plugin in this package | yes | vLLM 0.31 | serving, and the published numbers |
| llama.cpp | yes, GGUF builds marked non-causal | yes | with the mmproj file |
machines without vLLM |
| MLX | yes, mlx-vlm builds | yes | yes | Apple Silicon |
| transformers | yes | yes | yes | reference checks |
FP8 and GGUF Q8_0 largely preserve BF16 decision performance, while Q4_K_M can lose up to 4.3 points (27B AutoThink on DecisionPivot). docs/deployment.md lists the engine settings to switch on and off and why, and docs/quantization.md covers the quantized builds.
Serving in production
startlux-decide serve can face the internet directly, with API keys, HTTPS, early 429 responses under load, an
access log and an optional request log. docs/serving_publicly.md has a complete command
and a checklist. The other commands measure a deployment: bench for latency, eval for accuracy and calibration on
labelled requests, and quantize for FP8, GGUF and MLX builds.
Documentation
| Document | Contents |
|---|---|
| docs/api.md | request and response format, controls, confidence, none_probability, errors |
| docs/none_probability.md | what none_probability means, how it was measured, why 0.2 |
| docs/deployment.md | engine settings, images and long inputs, compatibility with v1 models |
| docs/engines.md | how each engine is driven and what was measured |
| docs/vllm_bidirectional.md | the vLLM plugin for prompt-bidirectional attention |
| docs/quantization.md | FP8, GGUF and MLX builds |
| docs/serving_publicly.md | keys, TLS, rate limits, logs |
| docs/benchmarks.md | how accuracy and latency are measured |
Tests
python -m unittest -v
The tests need only the standard library and skip the parts that need aiohttp, torch or transformers when those are
missing. Set STARTLUX_TEST_MODEL_DIR to a model folder to add checks against its real tokenizer.
The first release
StartLux-Decision-v1 (0.8B to 27B and a 35B-A3B mixture of experts) answers every question in one pass. Its inference
code, evaluation scripts, results, game logs and demo harnesses are in v1/, and the repository as it was at that
release is tagged v1. The engine in this repository serves the v1 models as well.
Citation
Xialie Zhuang1,2, Zunhai Su1,2, Jia Pan2, Ngai Wong2, Guanhua Chen3,*, Chuan-Wei Kuo1,*
1StartLux 2The University of Hong Kong 3Southern University of Science and Technology *Corresponding authors
@misc{startlux2026decision, title = {StartLux-Decision: AutoThink Decision Models with Reinforcement Learning for Calibrated Deliberative Decisions}, author = {Zhuang, Xialie and Su, Zunhai and Pan, Jia and Wong, Ngai and Chen, Guanhua and Kuo, Chuan-Wei}, year = {2026}, eprint = {2610.17309}, archivePrefix = {arXiv}, primaryClass = {cs.CL}, url = {https://arxiv.org/abs/2610.17309} }
License
The code in this repository is released under the Apache License 2.0. The model weights are released under CC BY-NC 4.0 for non-commercial use. For commercial licensing, contact StartLux.






