Instructions to use Hanno-Labs/bosun-v3.1-0.6b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Hanno-Labs/bosun-v3.1-0.6b with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Hanno-Labs/bosun-v3.1-0.6b", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("Hanno-Labs/bosun-v3.1-0.6b", trust_remote_code=True, device_map="auto") - PEFT
How to use Hanno-Labs/bosun-v3.1-0.6b with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Hanno-Labs/bosun-v3.1-0.6b with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Hanno-Labs/bosun-v3.1-0.6b" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Hanno-Labs/bosun-v3.1-0.6b", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/Hanno-Labs/bosun-v3.1-0.6b
- SGLang
How to use Hanno-Labs/bosun-v3.1-0.6b with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "Hanno-Labs/bosun-v3.1-0.6b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Hanno-Labs/bosun-v3.1-0.6b", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "Hanno-Labs/bosun-v3.1-0.6b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Hanno-Labs/bosun-v3.1-0.6b", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use Hanno-Labs/bosun-v3.1-0.6b with Docker Model Runner:
docker model run hf.co/Hanno-Labs/bosun-v3.1-0.6b
Bosun v3.1 0.6B
Copyright 2026 Clause Logic Inc. Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.
GGUF weights: Bosun v3.1 0.6B GGUF (F16, Q8_0, Q4_K_M).
A small model for structured decisions. Bosun v3.1 evaluates typed questions against a shared state and returns native probability distributions over the available choices. It is built for decision points inside agents and software: classification, routing, scoring, abstention, policy checks, and other places where the useful output is a calibrated decision rather than generated prose.
This release is built on
Qwen/Qwen3-0.6B at pinned revision
c1899de289a04d12100db370d81485cdf75e47ca.
This is a custom Bosun decision model. Its Transformers model class loads the pinned base, PEFT adapter, tokenizer, stable decision-token embeddings, and serving contract together.
Changelog
v3.1 β typed decisions (current)
Bosun v3.1 moves from pairwise yes/no judgment to a general typed-decision contract. Candidate answers are assigned to stable presented slots and scored through learned decision-token logits, producing a normalized probability distribution without autoregressive JSON parsing.
- 256 learned decision tokens
- Up to 255 runtime choices plus one null slot
choice,score, andnouldecision types- 130,000 training rows: 80,000 original plus 50,000 ecosystem rows
- Three completed epochs; epoch 2 selected by macro-family accuracy
Loading contract
Install transformers, peft, safetensors, and accelerate, then load the
complete Bosun runtime through Transformers remote code:
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"Hanno-Labs/bosun-v3.1-0.6b",
trust_remote_code=True,
dtype="auto",
device_map="auto",
)
choice = model.predict(
state={"request": "Customer cannot access their account."},
instructions="Choose the best support route.",
decision_type="choice",
row_id="example-1",
candidates=[
{"id": "billing", "label": "Billing", "description": "Payment issue"},
{"id": "access", "label": "Account access", "description": "Login issue"},
],
)
score = model.predict(
state={"ticket": "Duplicate charge; customer cannot buy groceries."},
instructions="Rate the support urgency.",
decision_type="score",
row_id="example-2",
candidates=[
{"id": "0", "label": "Low"},
{"id": "1", "label": "Medium"},
{"id": "2", "label": "High"},
],
)
noul = model.predict(
state={"ticket": "The bank confirmed a duplicate charge."},
instructions="Was the duplicate charge confirmed?",
decision_type="noul",
row_id="example-3",
candidates=[
{"id": "yes", "label": "Yes"},
{"id": "no", "label": "No"},
],
)
print(choice["probabilities"])
print(score["probabilities"])
print(noul["probabilities"])
trust_remote_code=True is required because Bosun's typed-decision readout is
not part of stock Transformers. model.forward(...) remains compatible with
the underlying causal LM; model.decision_logits(...) returns all 256 stable
slot logits, and model.predict(...) renders the verified prompt contract,
masks unused slots, and maps probabilities back to the caller's candidate order.
serving.json remains the source of truth for the stable-slot contract:
- Load the pinned Qwen base revision.
- Apply the PEFT adapter from
adapter/. - Load the tokenizer snapshot from
tokenizer/. - Restore the learned decision-token rows from
decision_embeddings.safetensors. - Use the prompt schema, candidate masking, and stable-slot mapping recorded in
serving.json.
Do not infer decision-token meaning from token order. The presented_slot
mapping in the serving contract is authoritative.
Results
DecisionBench
The full frozen 23,900-row DecisionBench evaluation completed with zero row errors. Probabilities were read from the model's full candidate logits.
| evaluation | rows | accuracy | ECE | NLL |
|---|---|---|---|---|
| DecisionBench overall | 23,900 | 81.1841% | 0.0659 | 0.6491 |
| Reasoning slice | 1,200 | 43.0833% | 0.2019 | 1.1805 |
The complete result submission, including all 129 aggregate views and immutable
model/data revisions, is tracked in
Hanno-Labs/decision-bench-results.
Checkpoint selection
The selected epoch reached 88.39% accuracy and 88.3907% macro-family accuracy on the frozen training-heldout evaluation. This evaluation covers families represented in training; it is not a DecisionBench result or evidence of unseen-task OOD generalization.
Inference files
| file | what |
|---|---|
adapter/ |
LoRA adapter weights and PEFT configuration |
config.json |
Transformers registration and immutable Bosun loader configuration |
configuration_bosun.py |
BosunConfig for AutoConfig |
modeling_bosun.py |
BosunForDecision loader, prompt compiler, and decision readout |
decision_embeddings.safetensors |
learned Bosun decision-token embedding rows |
tokenizer/ |
exact tokenizer and decision-token vocabulary used in training |
serving.json |
authoritative prompt, stable-slot, base-revision, and runtime contract |
manifest.json |
content-addressed inference-package manifest and metrics |
Provenance
- Training rows: 130,000 (80,000 original plus 50,000 ecosystem)
- Epochs completed: 3
- Selected epoch: 2
- Seed: 20260918
Links
- DecisionBench results β
Hanno-Labs/decision-bench-results - Bosun-XS β
Hanno-Labs/bosun-xs - Bosun-4B β
Hanno-Labs/bosun-4b - Introducing Bosun β Hanno Labs field note
From Hanno Labs.
- Downloads last month
- 511
Model tree for Hanno-Labs/bosun-v3.1-0.6b
Spaces using Hanno-Labs/bosun-v3.1-0.6b 5
Articles mentioning Hanno-Labs/bosun-v3.1-0.6b
Evaluation results
- Hanno-Labs/decision-bench-results Β· DecisionBench View evaluation results source
0.81 *
