Model reference · verified
Laya, specified
Laya is an open-weight decision model from Convai Innovations: give it a state — a ticket, an email, a JSON blob — and a set of typed questions, and one forward pass returns typed answers with probabilities. It never writes text, and the three question types it accepts are the ones TypeSafe's Jev accepts, which is why its server can stand in front of a client written for Jev.
In short
- 421M parameters, Apache-2.0, no key. The English checkpoint is a ModernBERT-large with a two-layer head; the card also ships a 322M multilingual one and a 421M checkpoint tuned for four decision workflows.
- It runs on a laptop. A single question cost 0.30 s on a 2018 CPU; ten took 2.09 s and fifty took 10.4 s, about 0.21 s each.
- It claims to be drop-in for Jev, and the claim mostly holds. Our Jev client, pointed at its server, returned a valid answer for all thirteen of our adversarial cases.
- On the same thirteen cases it agreed with Jev eleven times — two different models, two different training stories, the same labels on most of the set.
- The card is unusually straight about the failures: near-chance zero-shot on its own hard benchmark, a per-option token budget that breaks large option sets, and an ordinal `score` primitive it calls the weakest of the three.
The facts
| Field | Value |
|---|---|
| Maker | Convai Innovations Author: Nandhakishor, publishing as Convai Innovations. |
| Licence | Apache-2.0 Read from the model card's frontmatter; the card also tags it `commercial-use`. |
| Class | System One decision model Returns typed answers with probabilities; it does not generate text. |
| Question types | choice · score · noul The same three TypeSafe uses, which is what makes the protocol claim possible. |
| English checkpoint | ModernBERT-large, 421M parameters 512-token window, of which roughly 320 is left for the state. |
| Package | laya 0.3.11 On 2026-09-24 that was the current release. |
| Hosted price | None — you run it The cost is your machine, your electricity and your weekend. |
| Weights | 2.3 GB for all three checkpoints 843 MB for the English one alone — the encoder weights are inside that file, not a separate download. |
huggingface.co/convaiinnovations/laya Verified model card and shipped files, 2026-09-24 GitHub repository created 2026-09-18; 125 commits from 40 contributors, read 2026-09-23.We downloaded the English checkpoint and its encoder and ran everything on this page ourselves; the runner is in tools/laya-lab/. Three checkpoints, one interface
The family is small and the differences are the kind that change an integration: the window, the language coverage, and how much of that window is left for the state once the options have taken their share.
| Checkpoint | Backbone | Params | Context | Left for the state | Best at |
|---|---|---|---|---|---|
laya | ModernBERT-large | 421M | 512 | ~320 tokens | English text, guardrails, email triage |
laya-multilingual | mmBERT-base | 322M | 1,024 | ~768 tokens | 100+ languages; about 2.2× the English one |
laya-typed-decisions | ModernBERT-large | 421M | 1,024 | ~768 tokens | the four typed-decision workflows the card benchmarks |
That fourth column is the one people miss. A 512-token window sounds like twice a 256-token one; in practice the options are rendered into the same window, so the English checkpoint leaves about 320 tokens for the ticket itself and the rest is option text. A long support thread is truncated sooner than the number suggests — and the model will still answer.
What we ran it on, and what came back
Everything here ran on the machine this site is written on — an i7-8550U with no accelerator — after a download of 2.3 GB for all three checkpoints; 843 MB for the English one alone, encoder included. The four numbers that matter to somebody deciding whether to try it:
| What we did | Result | How it compares |
|---|---|---|
| 20 identical calls, three questions each | range 0.0000 | Every signal identical to four decimals. Jev's label was equally stable but its confidence moved 0.38–0.58. |
| 13 adversarial cases × 4 runs | 0 off-menu | No answer ever left the option set the caller defined — the same result we got from Jev. |
| Our Jev client, pointed at its server | 13 / 13 parsed | all thirteen answered in the envelope the client already parses |
| 50 questions in one call | 10.4 s | 0.21 s per question, flat from ten questions up. |
tools/laya-lab/laya-probe.py Verified 2026-09-24 Runs on Intel i7-8550U, 4 cores / 8 threads, 2018 laptop part, 15 GB of RAM, no GPU. The measurement that made us write this section rather than quote the card: on the adversarial set, Laya and Jev returned the same label on eleven of thirteen cases. Two models that share no weights and no training data agreeing that often on deliberately strange inputs is the most interesting thing in this comparison, and it is on the head-to-head page case by case.
The column of things it cannot do
Most of this comes from the model card's own "Honest Limits" section, which is longer and blunter than most vendors write. One entry is ours, and it is the reason the self-hosting page exists.
| Limit | Whose number | What it costs you |
|---|---|---|
| Zero-shot, the base checkpoints are near chance on typed-decisions (0.362 against a 0.461 majority baseline) | the card's | Treat it as a fast thing to fine-tune, not a decision engine you point at your data on day one. |
| Options share a fixed token budget, so 77 options get three or four tokens each — 0.425 on Banking77, where Jev scores 0.870 | the card's | Under 20 options is the comfortable zone. Beyond that you are tuning `head_max_len` or splitting the choice in two. |
An ordinal score question is the weakest primitive (0.372 on SST-5) | the card's | Severity scales drift with the wording — we measured 0.47 of a level between two phrasings of the same scale. |
noul can follow its two level labels instead of the state | the card's, reproduced by us | On our sentiment question the English checkpoint returned 0.000 at confidence 1.0 for five out of five reviews, three of them glowing. |
The shipped choice:11+ temperature is outside the range its own library accepts | ours | Every choice question with eleven or more options gets a confidence the library itself calls uncalibrated. |
Where to go next
Source material: the repository · the model card · the package.
What this page cannot tell you
It cannot tell you whether Laya is good at your task. Our tests are thirteen adversarial cases, forty ticket-labelling calls and a handful of option-set experiments — enough to say where the sharp edges are, not enough to rank two models. It cannot tell you what it costs at scale, because the honest answer depends on the machine you were going to buy anyway. And it cannot verify the publisher's benchmark table: those runs happened on their hardware against their test sets, and the Jev column in it was never measured by them at all.
The one number we could have argued about is the star count — 20,346 on 2026-09-24, up from 19,196 the day before — and we could not corroborate it: GitHub's star-history endpoint answers 404 for this repository, so it is printed as the API reported it and no more.