Released v1.0.0October 11, 2026. Open weights, Apache 2.0.

Avrik-Max-31B

The most accurate Avrik model, for the hardest calls.

The Max tier: Gemma 4 31B-it served in FP8 on one 80 GB GPU. Use it for the hardest decisions and as the fallback behind the faster tiers. The repo ships calibration and readout config only; the weights come from Google, verified by hash.

96.9%Dev-set accuracy310 of 320, 95% CI 94.3–98.3%
168.4 msPer decision on one H100p50 at 702 tokens, FP8
91.8%JevBench public tasks212 of 231, self-run, not official
FP8One 80 GB GPUWeights from Google, verified by hash

What it’s for.

Send a state, like a ticket, a transaction, a policy and a case, and one or more typed questions. Get back a calibrated probability for every option, read straight from the model’s output in one forward pass.

  • Hard, high-stakes decisions
  • A fallback when Pro or Lite is unsure
  • An accuracy reference for your own thresholds

One build, verified end to end.

The repo holds calibration, readout config, and a lock file. Google’s weights download separately and are checked file by file against it.

FP8

avrik-ai/Avrik-Max-31B
Format
FP8, quantised by vLLM at load
Size
About 62 GB download from Google
Runs on
One 80 GB GPU (H100 class) via vLLM
Context
70,000 tokens
Latency
168.4 ms p50 (170.6 ms p95) at 702 tokens on an H100
Temperatures
choice 4.65, yes/no 5.0
Calibration
cal-31b-fp8-frozen-20261009-1

This repo redistributes no weights. upstream.lock.json pins the SHA-256 of every file in Google’s repo, and anything missing, extra or different is refused. The calibration was fitted on FP8 outputs; other precisions need their own fit.

Four question types. One API.

All three Avrik models answer the same /v1/systemone API with the same question types. Pick a tier by accuracy, latency, and hardware, and switch without changing your code.

TypeYou sendYou get
Yes or no noulA yes/no questionP(yes), from 0 to 1
Choice choiceA question and two or more named optionsThe top option and a probability for each
Score scoreA question and ordered levels, like low, medium, highThe expected level and a probability per level
Multi-label multi_labelA question and a set of labelsP(yes) per label, and the labels above a threshold
  • Confidence on every answerEach answer carries top, margin, confidence, and an abstain flag.
  • Room to say “I don’t know”With abstain_option, the model can answer “Insufficient information to decide.”
  • ReplayableEight audit fields per response. The same request on the same backend and precision returns the same numbers.

How an answer is made.

Run the model through avrik-server, not generate(). The readout and calibration are what turn raw weights into probabilities you can act on.

  1. 1

    Prompt renderer

    One fixed template per build, its SHA-256 in every response. Options become letters A, B, C.

  2. 2

    Gemma 4 decoder

    One forward pass per question. Questions on the same state are batched. Nothing is generated.

  3. 3

    Letter readout

    Reads the probability of every form of each option letter, and refuses if the letters hold under 98% of the mass.

  4. 4

    Calibration

    Per-type temperatures fitted for this exact build and bound to its hash.

Results, with their error bars.

Measured by Avrik AI on the FP8 build. Every accuracy carries a 95% Wilson interval, because a bare point estimate hides how few items sit behind it.

Avrik dev set

310/320 overall. 320 text items in 24 families. 100 labels are computed by code; 220 were drafted by a model and aren’t human-verified, so treat those families as indicative.

Agent governance

Prompt injection15/15
Intent alignment15/15
Personal data15/15
Tool-call authorization15/15

Core reasoning

Abstains when ambiguous10/10
Extraction10/10
Judgement15/15
Long policy10/10
Multi-hop10/10
Paraphrase edits15/15
Probability laws14/15
Routing10/10
Rule precedence15/15
Safety judgement15/15
Temporal and numeric23/24
Adversarial traps10/10

Long context

Buried policy clause12/16
Long records18/18
Needle in a haystack12/12

Consistency

Near-tie stability10/10
Negation pairs15/15
Order invariance10/10
Paraphrase invariance10/10

Scoring

Score quality6/10
Accuracy per family, dot is the point estimate, line is the 95% Wilson interval.

JevBench public tasks

The 231 public tasks of JevBench v1.4.2, run by Avrik AI. Not an official measurement, and not on the scale of the current leaderboard.

Easy48/48
Standard71/72
Hard93/111
Overall212/231
Top-answer accuracy by difficulty tier, with 95% Wilson intervals. Axis starts at 50%.

Held-out human evaluation

Pending. Avrik’s sealed evaluation set is written by people, kept encrypted, and never used for training or tuning. Results will be added to the model card in a later revision.

Calibration

Expected calibration error, 10 bins, top option. Lower is better. When this model says 0.8, it should be right about 80% of the time. Calibration pool held out from dev; dev shown for comparison. The pool covers hard families only, so on dev this calibration lowers yes/no ECE but raises choice ECE. It is refitted when the pool widens.

FP8 build, calibration cal-31b-fp8-frozen-20261009-1.

Run it in a few commands.

avrik pull verifies every file before anything loads. avrik serve exposes the API on 127.0.0.1:8080, loopback only.

On one 80 GB GPU with vLLM. avrik pull downloads this repo, then Google’s weights at the pinned revision, and checks every file before anything loads.

pip install avrik "vllm==0.30.0"
avrik pull Avrik-Max-31B                 # -> ~/.cache/avrik/Avrik-Max-31B-fp8

HF_HUB_OFFLINE=1 VLLM_NO_USAGE_STATS=1 DO_NOT_TRACK=1 VLLM_BATCH_INVARIANT=1 \
  vllm serve ~/.cache/avrik/Avrik-Max-31B-fp8/upstream --quantization fp8 \
  --served-model-name avrik --max-model-len 70000 --logprobs-mode raw_logprobs \
  --host 127.0.0.1 --port 8000 &

avrik ask Avrik-Max-31B --vllm-url http://127.0.0.1:8000 \
  --state "Customer bought headphones 12 days ago, unopened, receipt attached. \
Policy: unopened items within 30 days get a full refund." \
  --noul "Should the refund be approved?" --choice "Which action?=approve,deny,escalate"

avrik serve Avrik-Max-31B --vllm-url http://127.0.0.1:8000   # API on :8080
RoutePurpose
POST /v1/systemoneDecide: state and questions in, calibrated answers out
GET /healthReadiness and the loaded build’s hashes
GET /v1/modelsThe served model
GET /openapi.jsonThe OpenAPI 3.1 schema
# Typed Python client, sync and async
pip install avrik-sdk

Use it well.

Set your own thresholds: approve above 0.95, send to a person between 0.2 and 0.95, and so on.

Built for

  • Automated decisions with a threshold a person sets
  • Triage, routing, policy and eligibility checks
  • Classification with calibrated confidence
  • A fast first stage in front of people or larger models

Not built for

  • Explanations or free text. It generates none.
  • Acting alone on legal, medical, financial, or safety decisions without human review
  • Images, in this release. Input is text or JSON.
  • Languages other than English, which haven’t been evaluated

Weakest dev-set areas: score_quality (6/10), long_policy_buried (12/16), probability_laws (14/15). The model judges only what’s in the state, so instructions planted there can sway it. Keep untrusted text clearly delimited.

Provenance you can check.

Every file is listed with its SHA-256 in MANIFEST.sha256. Inference makes no network calls, sends no telemetry, and stores nothing.

Basegoogle/gemma-4-31B-it at 842da3794eaa0b77d5f08bae87a17459d91ff475
RecipeFrozen base with fitted per-type temperatures. No fine-tuning.
Release gateNone needed: nothing is trained. The base is frozen by design.
FP8 buildModel hash google/gemma-4-31B-it@842da3794eaa0b77d5f08bae87a17459d91ff475Prompt template 7d36e748b56cc50c10796ce959f1ae6b60cd6e7ee277823438a51b5ce2ff3607
Releasev1.0.0, October 11, 2026
  • Tamper checksSwapped or altered downloads are refused, and the manifest’s own digest is pinned in the avrik package.
  • No code in releasesCode files, auto_map, and symlinks are refused. Tokenizers load with trust_remote_code=False.
  • LicenceApache 2.0 for the weights, calibration, and readout config. Keep NOTICE with any redistribution.

The rest of the family.

Same API, same question types. Move up a tier for accuracy, or down for speed and cost.

  • Edge4B

    Avrik-Lite-4B

    Calibrated decisions on an ordinary CPU.

    Dev-set accuracy
    86.6%
    Per decision on a laptop CPU
    5.0 s
    • GGUF Q4_K_M
    • bf16
    Hugging Face

Get Avrik-Max-31B on Hugging Face.

Open weights under Apache 2.0, with calibration and hashes for every build. Questions or a use case to talk through? We’d like to hear it.