Laya Local System One: Setup, Limits, and Jev Comparison
Laya is an open-source System One decision model that can run on local hardware. Like Jev, it accepts a state plus Choice, Score, and Noul questions instead of generating text. The model code and weights are published under Apache 2.0, which makes Laya relevant when application data cannot be sent to a managed decision API.
The project was published on September 18, 2026 and remains very new. It provides model weights, a PyPI package, benchmark artifacts, and notebooks, but that does not make every README result an independently replicated production guarantee.
Choose among three checkpoints
The repository lists three checkpoints:
| Checkpoint | Backbone | Parameters | Default context | Intended use |
|---|---|---|---|---|
laya | ModernBERT-large | 421M | 512 | English decisions |
laya-multilingual | mmBERT-base | 322M | 1,024 | Multilingual and non-Latin input |
laya-typed-decisions | ModernBERT-large | 421M | 1,024 | Fine-tuned typed-decision workflows |
The Router can select English or multilingual inference from the detected script and language. It can also select the typed-decisions checkpoint for recognized question schemas or an explicit model request.
This routing step exists because the English checkpoint can be confidently wrong on non-Latin scripts. Confidence gating cannot recover an input the checkpoint does not represent; choose the checkpoint before inference.
Install and run the Python package
The project declares Python 3.9 or newer and installs from PyPI:
python -m venv .venvsource .venv/bin/activatepip install layaLoad one checkpoint for a dedicated English pipeline:
from laya import load
agent = load( "convaiinnovations/laya", device="cuda",)
state = { "subject": "Duplicate charge", "body": "I was charged twice and want a refund today.",}
questions = { "department": { "type": "choice", "instructions": "Which team should handle this ticket?", "criteria": { "billing": "Payments, invoices, and refunds", "support": "Product help and bugs", "sales": "New purchases and upgrades", }, }, "refund_requested": { "type": "noul", "instructions": "Does the customer explicitly request a refund?", },}
result = agent.predict(state, questions)print(result)For mixed-language traffic, use the router rather than repeatedly loading checkpoints by hand:
from laya import Router
router = Router(max_loaded=2)result = router.predict(state, questions)
print(result["routing"]["model"])print(result["answers"])max_loaded=2 trades memory for fewer checkpoint reloads. The project reports multi-second reload times when alternating languages with only one checkpoint kept in memory, so include cold-load behavior in latency tests.
Read the benchmark beyond the headline
The repository reports 32.8 to 39.5 milliseconds for a single question on a T4 GPU and 72.3 milliseconds for a batch of 10 with the multilingual checkpoint. Those are model-side measurements from the project’s benchmark, not end-to-end application latency.
More important, the project’s typed-decision results show a large gap between the base and fine-tuned models. On the published shared benchmark, the base checkpoints score around 0.34 to 0.36 accuracy, near the 0.318 random baseline and below the 0.461 majority baseline. The laya-typed-decisions checkpoint reports 0.766 accuracy on its target workflows.
That result does not mean the fine-tuned model will reach 0.766 on a different label set. It shows that domain and schema-specific training materially changes this kind of model. Build a labeled set for the actual decision and test the exact checkpoint you intend to deploy.
The project also warns that raw confidence can be overconfident and recommends temperature fitting. Score is currently weaker than Choice and Noul, and large option sets are constrained by the model’s token allocation.
Laya or Jev?
| Condition | Start with | Reason |
|---|---|---|
| Fast hosted evaluation with no model operations | Jev | Managed endpoint, higher published limits, no local weights |
| Data must stay within your environment | Laya | Local inference and downloadable weights |
| Need to modify training or inspect implementation | Laya | Open code, checkpoints, and research artifacts |
| Need 64k request context | Jev | Laya checkpoints use 512 or 1,024-token contexts |
| Need a multilingual local path | Laya multilingual, after evaluation | Dedicated multilingual checkpoint and script-aware router |
| Need generated text or multi-step reasoning | Neither | Use a generative or reasoning model |
Local inference is not automatically cheaper. Account for GPU or CPU capacity, memory, cold starts, monitoring, calibration, model distribution, and updates. A managed API is not automatically less secure either; evaluate data handling requirements rather than using deployment location as a proxy for the entire risk model.
Verification boundary for this guide
The repository, package metadata, model card, source code, and published benchmark artifacts were inspected. The model weights were not downloaded and GPU inference was not executed in this environment. The reported latency and accuracy values therefore remain project-published results, labeled as such.
Use the Jev model guide for the managed alternative and the Jev TypeScript tutorial for an API workflow. If the goal is coding-agent cost control, review the Codex token-routing evidence before treating either decision model as an automatic proxy.
FAQ
Q: Can Laya run without sending data to an external API?
A: Yes. The reference Python package loads downloadable checkpoints for local inference. You still need to secure the machine, model cache, logs, and any surrounding service that exposes the model.
Q: Is Laya a drop-in replacement for Jev?
A: It uses similar Choice, Score, and Noul concepts, but context length, quality, calibration, SDK behavior, and operational responsibility differ. Evaluate the exact request schema instead of assuming output compatibility means equivalent decisions.
Q: Which Laya checkpoint should handle Chinese text?
A: Start with the multilingual checkpoint, not the English ModernBERT checkpoint. Then measure accuracy and calibration on representative Chinese examples because the repository’s language routing only selects a checkpoint; it does not prove task quality.
References: