wattai

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.

questions
4 questions · one request

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 96.3%, wattai ternary 95.2%, TypeSafe Jev 87.0%

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.

request
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"] }
    ]
  }'
example response
{
  "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.

POST/v1/systemonerun typed decisions in one forward pass
POST/v1/keysgenerate a bearer key with the higher rate limit
GET/v1/healthmodel info and current rate-limit tiers

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 kind
modelstringidentifier of the served build
msintserver-side inference latency in milliseconds

rate 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).

apache-2.0 · v0.5 preview · free to use, self-host and redistribute.