embedding

The next series · weights public

vega-U. One engine, any reader.

A universal adapter: the decision engine is trained once, in a space no single LLM owns, and whichever model you already run plugs into it through a small linear port. No retraining. No fine-tuning.

Qwen3.5 0.8BportGemma 3 1BportQwen3.5 4Battached coldportyour LLMportshared space1024 done engine14.3M, frozen fitanswerp = 0.93

Readers stay frozen. Each one gets a port into the shared space. The engine reads that space and returns a typed answer with a calibrated probability.

How it works

Three pieces, one of them shared.

01

Freeze the reader

Any instruction-tuned LLM works as the eyes. Hidden states are tapped at two depths and pooled per span and per option. The reader's weights are never touched.

02

Fit the port

One small linear map per tapped layer carries the reader's features into a shared 1024-dimensional space. For a new reader it is fit in closed form against stored targets, then refined for 300 steps against the frozen engine.

03

Reuse the engine

The 14.3M decision engine lives entirely in the shared space and is byte-identical for every reader; the run asserts its checksum. Only a per-reader calibration is refit, because calibration never transfers.

The engine is trained jointly on multiple readers at once, with an invariance loss that pulls the same training item, seen through different tokenizers, to the same point in the shared space. That is what makes the space reader-agnostic rather than a disguise for one backbone. The first run matched 708,657 items across readers, with training records up to 73,728 tokens long.

The early proof

A reader the engine never met, scoring highest.

Held-out accuracy, same engine, same split

Qwen3.8 27B, attached cold0.810
Qwen3.5 4B, attached cold0.791
Qwen3.5 0.8B, trained0.765
Gemma 3 1B, trained0.738

October 2026 runs. The engine trained jointly with the 0.8B and 1B readers; the 4B and the 27B were attached afterwards with a closed-form port fit and a short refine. 27B calibration error 0.021, and the best selective risk of any reader (AURC 0.053). Its split is capped at 400 records per source.

Every cold-attached reader beat the readers the engine was trained with, and the ladder climbs with reader size: 0.765, 0.791, 0.811. The engine did not change by a single byte between the four; each run asserts the checksum.

That is the point of the series. Calibration, abstention and the typed answer live in the engine. Reading lives in the reader. The 27B's gains land exactly where reading matters: 0.941 on 70k-token long context, 0.922 on ARC, 0.792 on CommonsenseQA, against 0.831, 0.647 and 0.490 for the 0.8B. Saturated tasks (phishing, spam, intents at 0.99) stay flat, which is what an unchanged engine behind better eyes should look like.

The engine itself is small enough to be boring: 14.3M parameters, about 57MB on disk. Everything else is a frozen model you already have.

Status

  • doneJoint training across two reader families, long-context corpus to 73k tokens, cold attach validated end to end at 4B and at 27B: Qwen3.8-27B lands at 0.811 held-out accuracy with the best selective risk of any reader.
  • nowAttaching Gemma 3 27B, evaluated on the same held-out splits and fresh task data.
  • doneWeights public: the engine, the ports and every reader dir are on the Hub, and vega-U is the default model of vegaml 0.11: one pip install, one load() call, no token.
  • nextThe 27B ports join the Hub repo, and the attach tooling and harness ship in the open like everything before it.

Read the full write up →