Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md
StartLux-Decision

Hugging Face  |   Technical report  |   Blog  |   API reference  |   Free unlimited use

arXiv License Python Backends

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.

Decision Index 0.3 public score against model size

Demos

Coast Guard helicopter rescue
Helicopter rescue: calls each stage of a Coast Guard hoist rescue in Hurricane Harvey, one frame a second
Chess against Jev 1.13
Chess: with White, checkmates Jev 1.13 on move 19 of a Scotch Game, and neither side searches
Super Mario Bros.
Super Mario Bros.: clears World 1-1
StarCraft II
StarCraft II: makes the strategic calls for a Terran bot and beats the built-in Hard AI
Artemis I launch
Rocket launch: follows the Artemis I night launch one frame a second, calls liftoff and tells the camera when to tilt up
JevBall
JevBall: makes the decisions for a football team in real time

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.1Decision Index 0.3DecisionPivotOther formats
27B AutoThink73.3786.9GGUF · MLX 8-bit · MLX 4-bit
27B Instant72.8375.4GGUF · MLX 8-bit · MLX 4-bit
9B AutoThink70.4559.9GGUF · MLX 8-bit · MLX 4-bit
9B Instant69.9647.5GGUF · MLX 8-bit · MLX 4-bit
4B AutoThink68.2159.9GGUF · MLX 8-bit · MLX 4-bit
4B Instant67.8841.5GGUF · MLX 8-bit · MLX 4-bit
2B Instant59.1421.1GGUF · MLX 8-bit · MLX 4-bit
0.8B Instant53.758.1GGUF · 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.

FieldDefaultEffect
think_modeautoauto reasons when the first read-out's top probability is below gate; never answers in one pass; always reasons first
gate0.6the confidence below which auto reasons (the published results use 0.9)
think_budget4096the longest thought, in tokens
none_checktrueevery choice answer reports none_probability, the chance that no listed option fits; choice stays a listed option
allow_nonefalse (serve --allow-none: true)lets choice be null when "None of the above" is the most likely answer
return_details, return_thoughtfalseper-answer read-outs and timings, and the thought text
imagesnonebase64 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

EngineInstantAutoThinkImagesTypical use
vLLM (default)yes, with the plugin in this packageyesvLLM 0.31serving, and the published numbers
llama.cppyes, GGUF builds marked non-causalyeswith the mmproj filemachines without vLLM
MLXyes, mlx-vlm buildsyesyesApple Silicon
transformersyesyesyesreference 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

DocumentContents
docs/api.mdrequest and response format, controls, confidence, none_probability, errors
docs/none_probability.mdwhat none_probability means, how it was measured, why 0.2
docs/deployment.mdengine settings, images and long inputs, compatibility with v1 models
docs/engines.mdhow each engine is driven and what was measured
docs/vllm_bidirectional.mdthe vLLM plugin for prompt-bidirectional attention
docs/quantization.mdFP8, GGUF and MLX builds
docs/serving_publicly.mdkeys, TLS, rate limits, logs
docs/benchmarks.mdhow 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.

关于 About

Open decision models from 0.8B to 27B: a calibrated probability for every option in one pass, and a short thought only when unsure. Engine for vLLM, llama.cpp and MLX.
agentscalibrationclassificationdecision-makingggufinferencellama-cppllmmlxopen-weightsreasoningvllm

语言 Languages

Python96.3%
JavaScript2.3%
CSS0.9%
HTML0.3%
Shell0.1%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
38
Total Commits
峰值: 18次/周
Less
More

核心贡献者 Contributors