on-device decision model · apache-2.0 · free in the v0.5 preview
wattai is a decision model that runs on your own machine. You send it a piece of text and a list of options. It returns the option that fits, plus a calibrated probability for every option you sent.
It never generates a string. It scores the options you supply and hands back a calibrated distribution over them. On CLINC150 it scores 96.3% against TypeSafe Jev at 87%, the only benchmark both have run. That Jev figure comes from an independent pre-registered eval. The wattai figure is its own v2 measurement.
Download the 726 MB f16 build and run it offline. Or call the hosted API at api.wattai.dev, free during the preview, with no key and no account for 1,000 calls a day. In five two-question requests on September 20, 2026, the hosted API took 2.16–2.41 seconds round trip, including 1.79–1.85 seconds of reported server inference. Your network and server load will affect timing. Local latency depends on your hardware and is not benchmarked here.
Try a decision
Edit the text, choose your questions, and run a real API request. No key or account needed. These examples use the hosted model; your input is sent to the server.
live response
Run the example to see which options fit, with a probability for each.
Where wattai beats TypeSafe Jev
On CLINC150, wattai scores 96.3% and TypeSafe Jev scores 87%. That Jev figure comes from an independent pre-registered eval, and the wattai figure is its own v2 measurement. CLINC150 is the only apples-to-apples number between the two, and every other Jev cell reads not run, which means not evaluated. Expected calibration error is 4.1 for wattai, averaged across ten tasks, against 12 for Jev, the midpoint of an independently measured range. Lower is better.
wattai is distilled from SmolLM2-360M. Against that base zero-shot it scores 82.3% on MNLI against 33%, and 81.5% on BoolQ against 63%.
wattai buildsother modelsnot evaluated on this task: SmolLM2-360M.
wattai: v2 tern_synth · jev: independent pre-registered eval · sm2: not published
What the confidence does not tell you
The probability says which of your options fits best, not whether any of them fit. A sentence about the weather, scored against bug, feature and praise, comes back praise with a number that looks like any other answer. If none-of-the-above is a real outcome, send it as an option; add_none appends one for you.
Use it in your app
Send the text once and ask as many questions about it as you like. They share a prefill, so ten questions cost about what one costs.
curl -X POST https://api.wattai.dev/v1/systemone \
-H "content-type: application/json" \
-d '{
"state": "From: Dana. How do I get a return label for the printer?",
"questions": [
{ "kind": "choice",
"q": "What is the customer intent?",
"options": ["return label", "refund request", "shipping delay"] },
{ "kind": "score",
"q": "How urgent (1 to 5)?",
"options": ["1", "2", "3", "4", "5"] }
]
}'{
"results": [
{ "kind": "choice",
"options": ["return label", "refund request", "shipping delay"],
"probs": [0.96530, 0.03023, 0.00447],
"argmax": "return label",
"confidence": 0.9653 },
{ "kind": "score",
"options": ["1", "2", "3", "4", "5"],
"probs": [0.11881, 0.29686, 0.28027, 0.14841, 0.15565],
"argmax": "2",
"confidence": 0.29686 }
],
"model": "watt-v0.5",
"ms": 1825
}- choice
- categorical. pick one of up to 255 options.
- noul
- yes/no, returned as a probability.
- score
- ordered levels, so 4 sits next to 5.
The hosted API is free in preview
POST api.wattai.dev/v1/systemone is free during the v0.5 preview, with no key and no account up to 60 requests a minute and 1,000 calls a day. A bearer key raises that to 300 a minute and 20,000 a day.
request
statestring, requiredthe text the model reads. max ~3,000 tokens.questionsarray, 1-32each: {q, options, kind, add_none?}.qstringthe question in natural language.optionsarray of strings, 1-255the allowed answers. required for every kind, including noul..kind"choice" | "noul" | "score"choice is categorical, noul is yes/no, score is ordered levels.add_noneboolean, optionalappends a "none of these" option. defaults on for choice, off for noul and score.response
resultsarrayone entry per question, in the order sent.argmaxstringthe most likely option label.confidence0..1probability of the argmax.optionsarray of stringsthe labels as scored, with "none of these" appended when you asked for it.probsarray of 0..1calibrated distribution over the options above.kindstringechoes the question kindmodelstringidentifier of the served buildmsintserver-side inference latency in millisecondsrate limits
anonymous, by ip60/min · 1,000/dayno key, no account. enough for a prototype.bearer key300/min · 20,000/dayone request to get one, see below.response headersX-RateLimit-*Limit and Remaining ride on every response.over the limitHTTP 429Retry-After says when to come back.Lift the limit
curl -X POST https://api.wattai.dev/v1/keys \
-H "content-type: application/json" \
-d '{"note": "my-app-name"}'
# {"key": "wattai_xxxxxxxxxxxxxxxxxxxx",
# "limits": {"per_min": 300, "per_day": 20000}}
# then send it on every request:
# -H "authorization: Bearer wattai_xxxxxxxxxxxxxxxxxxxx"- It is a decision model, not a chat model. It never generates a string, it only picks from the options you send.
- Options can run to 255 items, and the model scores all of them in the same pass.
- Questions about the same state share a prefill, so ten questions cost about what one costs.
- Five sequential two-question requests to /v1/systemone on September 20, 2026 took 2.16–2.41 seconds round trip, with 1.79–1.85 seconds reported server inference. These are observations from one client, not a latency guarantee. The live demo shows both timings for your request. Local inference depends on your hardware.
Four builds, apache-2.0
wattai-fp.gguf is the 726 MB f16 build, the one the benchmarks are measured on. The ternary builds score below it and fall under the SmolLM2-360M base on PIQA (66.3 against 72) and MMLU (33.7 against 36).
- wattai-fp.ggufrecommendedthe build the benchmarks are run on. unquantized weights, every point of accuracy intact.726 MB · gguf · f16
- wattai-tern-q8.ggufternary weights, 8-bit embeddings. a third of the size, and it keeps the calibration.205 MB · gguf · tq2_0 · + side lora 17 MB
- wattai-tern-tq1.ggufthe smallest build. same body, tq1_0 packing. for phones and edge boards.201 MB · gguf · tq1_0
- wattai-side.ggufthe higher-precision residual that pairs with a ternary body. load it as a lora in llama.cpp.17 MB · gguf · lora · rank 16
apache-2.0 · v0.5 preview · free to use, self-host and redistribute.