Tura-S1-4B · open weights, from Tura

A decision in one forward pass.

Tura-S1 reads a state and scores every option at once: which tool next, whether the turn is done, how to reply. We trained it on the decisions inside Tura’s own agent, and it gets them right twice as often as the model it came from.

choice1 forward pass · 0 tokens generated

State

Student what do I keep getting wrong in thermodynamics?

Agent so far nothing called yet · 14 tools available

QuestionWhat should the agent do next?

  1. read_learner_record0.91
  2. reply_to_user0.05
  3. find_in_books0.03
  4. make_quiz0.01
Illustrative. Every option gets a calibrated probability, together, so the agent can act on the top one or ask when nothing is sure.
Agent-step routing
98.5%Which tool next, or reply, on Tura decisions it never saw. The base: 49.6%.
Tura’s product decisions
90.0%Routing, turn end and reply mode, held out. The base: 41.8%.
Tokens generated
0Every option is scored in one forward pass.
Per decision
178 msMedian, on one NVIDIA L40S, at about 2,000 tokens of state.

Why a decision model

An agent decides far more often than it writes.

Before every step, an agent decides: look something up, or answer? Is this turn finished? Should the reply explain, or ask? Asking a chat model each time means waiting for it to write, then parsing what it wrote. A decision model answers the question directly, with a probability for every option, in the time it takes to read the state once.

  1. 01

    A state

    Whatever the decision depends on: a conversation, a document, an agent’s steps so far. Up to 4,096 tokens in training.

  2. 02

    A typed question

    Yes or no, a choice among up to 16 options, or a score. The options are part of the question, so the answer can only be one of them.

  3. 03

    A probability for each

    One forward pass reads the option letters off the model’s logits. Nothing is generated, so nothing has to be parsed.

Results

Twice as right on an agent’s own decisions.

Tura-S1 against Plumb-4B, the model it was trained from, on decisions neither saw in training. Same harness, same GPU, one run each.

Agent-step routingWhich tool next, or reply · Tura, held out (129)
49.6%
98.5%
Product decisionsRouting, turn end, reply mode · Tura, held out (170)
41.8%
90.0%
Hard decisionsJevK5’s hand-written hard set (65)
78.5%
83.1%
General decisionsDocuments and questions, held out (900)
58.0%
68.1%

Plumb-4B, the baseTura-S1-4B

BenchmarkPlumb-4BTura-S1-4B
Tura agent-step routing, held out (129)49.6%98.5%
Tura product decisions, held out (170)41.8%90.0%
Held-out general decisions (900)58.0%68.1%
JevK5’s hand-written hard set (65)78.5%83.1%
JevBench public (231)90.0%85.3%
JevBench public, calibration error (ECE, lower is better)0.0530.036

The trade we chose: eleven of JevBench’s hard items, for agent routing and general decisions. Calibration improved on JevBench too. If you do not need tool routing, Plumb-4B is the stronger JevBench model. On Tura’s product decisions, always picking the most common answer would score 74.1%.

Against the hosted model

Built to replace a call to someone else’s API.

Tura’s agent asks a decision model before it acts. Tura-S1 answers the same questions, in the same format, on hardware you own.

Hosted Jev APITura-S1-4B
Where it runsA hosted APIYour own GPU
Time per decisionAbout 311 ms per call, in our logs178 ms p50 on one L40S
Cost per decisionBilled per callYour hardware, nothing per call
WeightsClosedOpen, Apache-2.0
Trained on Tura’s agent decisionsNoYes: 8,865 of them
The requestPOST /v1/systemoneThe same request, served by JevK5’s runtime

How we trained it

33,756 decisions, a quarter of them our own.

One LoRA, rank 16, one epoch on Plumb-4B. Tura’s decisions were labelled by what the agent actually did, by its written rules, and by an open-weight teacher, with personal data removed.

Tura’s own agent decisions
8,865 · 26% · Tool routing, turn end, reply mode
General decisions
20,000 · 59% · Documents and questions, double-checked
Public tool calling
5,000 · 15% · ToolACE, Glaive, Hermes, When2Call

What it is for

Wherever an agent has to choose.

  • Tool routing

    Before each step, choose the next tool or decide to reply, and act only when the top option is sure.

  • Turn-end checks

    Ask whether the agent has done what the turn needs before it stops.

  • Reply mode

    Decide how to answer a message: explain, quiz, draw, or ask back.

  • Guardrails

    Check a draft against a written rule before it is sent.

  • Labelling

    Sort messages, tickets or documents into fixed classes, with a probability you can threshold.

  • Model routing

    Send each request to the cheapest model that can do it well.

Get started

Two commands to your first decision.

It serves the same request as a hosted decision API, so an agent that calls one can call it instead.

# install JevK5’s runtime, then serve Tura-S1
pip install git+https://github.com/allebee/jevk5
jevk5-serve --model AshishDwi99/tura-s1-4b --port 8090

# or in Python
from jevk5.runtime import JevK5
model = JevK5("AshishDwi99/tura-s1-4b")

Questions

About Tura-S1.

What is a decision model? +

A model that scores a fixed set of options instead of writing an answer. You give it a state and a question with its options; it gives back a probability for every option in one forward pass. Agents make hundreds of these small decisions, and a decision model makes each one quickly, cheaply and in a form that cannot fail to parse.

What is Tura-S1-4B built on? +

Plumb-4B, which is JevK5 v0.2 with a LoRA on Qwen3.5-4B. We trained one more LoRA on 33,756 questions and merged it. Tura-S1 keeps JevK5’s format, so JevK5’s runtime serves it unchanged.

Was it trained on the benchmarks it is scored on? +

No. Every training item was checked against JevBench’s 231 public items, by exact match and by shared eight-word sequences, and matches were removed. No JevBench item was trained on, tuned on or used to choose the model, and the rule for choosing a checkpoint was fixed before JevBench was run once.

How well calibrated is it? +

One temperature, 1.48, fitted on held-out development data, ships with the weights. On JevBench public its expected calibration error is 0.036, lower than its base’s 0.053: when it says 0.9, it is right about nine times in ten.

What does it need to run? +

About 9 GB in bf16 and a GPU. It reads English, and answers up to 16 options in one pass; more go through JevK5’s knockout, several passes at a time.

Can I use it commercially? +

Yes. The weights are Apache-2.0, with notices for the weights, code and data it builds on.

Open weights. Built for agents.

Tura-S1-4B is free to use, change and ship, under Apache-2.0.