Myles-400M
A 395M-parameter decision model that reads up to 2,048 tokens. Give it a message or document, a question and any list of options, and it returns a probability for every option in a single forward pass. It doesn't write text; it decides. The weights are a 398 MB int8 ONNX file that runs on an ordinary CPU in your own environment, so the text never has to leave your infrastructure.
Part of the Myles family from Launchables: Myles-22M runs in a browser, Myles-150M on a laptop or a server CPU, Myles-400M on the cheapest server you have, and Myles-G, our GPU decision models for the hardest decisions, is in preparation (see Benchmarks). API: documentation.
Renamed on 3 October 2026 from
myles-400m-preview; the old name redirects. Same weights (buildmyles-400m-v2mix, 27 September 2026). This card replaces the short preview card with the same measurements the other Myles cards carry.
| Parameters | 395M |
| Input | up to 2,048 tokens: question, options and text together, as trained and as shipped (max_length in decision_config.json); longer text is cut at 2,048 |
| Output | one probability per option |
| File | model_quantized.onnx, 398 MB, 8-bit (SmoothQuant, alpha 0.8) |
| Speed | 641 ms median on one CPU thread at full precision (13th Gen Intel(R) Core(TM) i9-13900KF, 1,400 frozen decisions, measured while the machine was training); the 8-bit build is about three times faster; long inputs near 2,048 tokens take much longer (see limits) |
| Cost | about ยฃ4 per million decisions on commodity CPU at the median latency above |
| Build | myles-400m-mo2, 18 October 2026 (previous: myles-400m-crf2, 16 October 2026) |
| Access | gated, Myles Evaluation Licence |
Note added 18 October 2026: option order and label preference with long option lists. The option-order figure in the build note below (2.2% on the 506 frozen questions with three or more options) was measured almost entirely on short lists: 497 of those questions have 3 to 9 options and 9 have 10 or more. On questions with 10 to 24 options this 8-bit build changes its top answer more often: for 6.5% of 4,384 questions when the options are reversed and 5.7% when they are shuffled (1.2% to 16.6% reversed, by set), on five of our own held-out test sets (customer complaints by product, 11 options; banking requests by intent, 20 options; biographies by profession, 24 options; contract provisions by type, 10 to 24 options; public-benchmark questions, 16 options). On the same questions it picks some labels far more often than they are right: on customer complaints by product, one label took 23% of the answers against a true share of 9%. Asking each long question with the options in the given order and reversed, and averaging the two probabilities for each option, makes the answer independent of that reversal and changes accuracy little (82.8% to 82.7%, mean over the held-out halves of the five sets); adding a per-option correction fitted on a labelled sample from the other halves gives 84.7%. Check answers on labelled examples of your own before relying on long option lists.
This is an updated build (18 October 2026), replacing the 16 October build. This build continues the 16 October build for one epoch on the same rows and settings, plus 17,684 questions with 10 to 24 options from public human-labelled datasets (biographies by profession, contract provisions by type, assistant requests by intent; train splits only, options in shuffled order, at most a fixed number of rows per label so that no label dominates), about a quarter of them with a one-sentence definition of every option placed in the text (definitions drafted from training examples by an open-weight model run locally), and 483 more of the grounding questions already in the mix. Two of the five long-list test sets quoted below (biographies and contract provisions) come from the same datasets as the new rows (test splits only). It passed release gate v3: a weighted score over test sets written and labelled by people rose by 0.5 points (95% paired-bootstrap interval +0.1 to +0.8), no guardrail set showed a real fall of more than 2 points and no safety set a real fall of more than 1 (a real fall: the 95% interval entirely below zero), and option-order flips stayed at or below 5%. On questions with 10 to 24 options (full precision), reversing the options changes the top answer for 6.1% of 4,384 questions (previous build 11.6%), and accuracy there went from 70.9% to 80.0%. The intent routing test comes from the same two datasets as the new training rows (test splits only). On the 506 frozen questions with three or more options, the top answer changes for 2.2% when the options are shuffled. On the independent judge benchmark (7-task average, 300 rows per task, 8-bit build) this build scores 45.9 against 45.1 for the previous build.
Human-sourced test rows previous build this build judge benchmark, 11 tasks from public datasets 3,299 63.8% 64.7% public-benchmark test 42,371 91.6% 91.9% public-benchmark out of distribution 83,505 84.8% 84.7% intent routing (Banking77 and CLINC150 test splits) 8,569 95.2% 95.7% human-written inference (NLI) test 7,895 59.1% 58.3% human everyday tasks (five public test sets) 2,000 63.9% 65.3% The scam guard safety check (a test set built by code) went from 92.8% to 92.2% on 4,810 rows.
Two older splits built from agent-written templates are reported but no longer gate a release: product tasks 97.0% to 97.0%; everyday tasks 93.8% to 94.3%.
This is an updated build (16 October 2026), replacing the 15 October build. This build continues the 15 October build for one epoch on the same rows, with shuffled options, label smoothing 0.1 and soft labels from Myles-G 12B at weight 0.5, plus 8,472 yes/no questions about invented company records (funding per employee, funding rounds inside a date window, the latest round against a date or a multiple of the one before, words in named fields only, investor lists, peer ranks), generated and labelled by code, half answered yes, with options in both orders. It passed release gate v3: a weighted score over test sets written and labelled by people rose by 0.4 points (95% paired-bootstrap interval +0.03 to +0.7), no guardrail set showed a real fall of more than 2 points and no safety set a real fall of more than 1 (a real fall: the 95% interval entirely below zero), and option-order flips stayed at or below 5%. Moderation (300 rows) fell 1.3 points, from 64.3% to 63.0%, within noise (95% interval -4.7 to +1.7). Prompt-injection detection (300 rows) fell 2.7 points, from 69.3% to 66.7%, within noise (95% interval -5.7 to +0.0). On the 506 frozen questions with three or more options, the top answer changes for 2.6% when the options are shuffled. On the independent judge benchmark (7-task average, 300 rows per task, 8-bit build) this build scores 45.1 against 44.2 for the previous build.
Human-sourced test rows previous build this build judge benchmark, 11 tasks from public datasets 3,299 63.5% 63.8% public-benchmark test 42,371 91.0% 91.6% public-benchmark out of distribution 83,505 83.9% 84.8% intent routing (Banking77 and CLINC150 test splits) 8,569 94.4% 95.2% human-written inference (NLI) test 7,895 59.2% 59.1% human everyday tasks (five public test sets) 2,000 64.0% 63.9% The scam guard safety check (a test set built by code) went from 92.9% to 92.8% on 4,810 rows.
Two older splits built from agent-written templates are reported but no longer gate a release: product tasks 96.0% to 97.0%; everyday tasks 95.4% to 93.8%.
This is an updated build (15 October 2026), replacing the 9 October build. It is an equal-weight average of the 9 October build and a copy of it trained for one more epoch on the same rows plus soft labels from Myles-G 12B, our GPU decision model, at weight 0.5. It passed release gate v3: a weighted score over test sets written and labelled by people rose by 0.4 points (95% paired-bootstrap interval +0.1 to +0.7), no guardrail set showed a real fall of more than 2 points and no safety set a real fall of more than 1 (a real fall: the 95% interval entirely below zero), and option-order flips stayed at or below 5%. Personal-data detection (300 rows) fell 1.7 points, from 73.3% to 71.7%, within noise (95% interval -4.3 to +0.7). The intent routing test comes from the same two datasets as the new training rows (test splits only). On the 506 frozen questions with three or more options, the top answer changes for 3.0% when the options are shuffled. On the independent judge benchmark (7-task average, 300 rows per task, 8-bit build) this build scores 44.2 against 46.0 for the previous build.
Human-sourced test rows previous build this build judge benchmark, 11 tasks from public datasets 3,299 63.8% 63.5% public-benchmark test 42,371 90.0% 91.0% public-benchmark out of distribution 83,505 83.9% 83.9% intent routing (Banking77 and CLINC150 test splits) 8,569 92.7% 94.4% human-written inference (NLI) test 7,895 58.6% 59.2% human everyday tasks (five public test sets) 2,000 64.0% 64.0% The scam guard safety check (a test set built by code) went from 92.4% to 92.9% on 4,810 rows.
Two older splits built from agent-written templates are reported but no longer gate a release: product tasks 94.5% to 96.0%; everyday tasks 93.9% to 95.4%.
This is an updated build (9 October 2026), replacing the 27 September build. This build continues the previous release for one epoch on the current recipe: no rows generated by a hosted model, no agent-written templates, plus two human-written, human-labelled intent datasets, Banking77 and CLINC150 (train splits only, checked against every test set reported here), shown as choices among long lists of up to 77 intents, with shuffled options and label smoothing 0.1. It passed release gate v3: a weighted score over test sets written and labelled by people rose by 8.7 points (95% paired-bootstrap interval +8.1 to +9.2), no guardrail set fell by more than 2 points, no safety set by more than 1, and option-order flips stayed at or below 5%. The intent routing test comes from the same two datasets as the new training rows (test splits only). On the 506 frozen questions with three or more options, the top answer changes for 2.2% when the options are shuffled. On the independent judge benchmark (7-task average, 300 rows per task, 8-bit build) this build scores 46.0 against 41.4 for the previous build.
Human-sourced test rows previous build this build judge benchmark, 11 tasks from public datasets 3,299 54.1% 63.8% public-benchmark test 42,371 89.2% 90.0% public-benchmark out of distribution 83,505 82.9% 83.9% intent routing (Banking77 and CLINC150 test splits) 8,569 52.6% 92.7% human-written inference (NLI) test 7,895 57.6% 58.6% human everyday tasks (five public test sets) 2,000 61.0% 64.0% JevBench 462 59.7% 59.1% The scam guard safety check (a test set built by code) went from 85.3% to 92.4% on 4,810 rows.
Two older splits built from agent-written templates are reported but no longer gate a release: product tasks 95.2% to 94.5%; everyday tasks 96.6% to 93.9%.
Access
Request access above. We review every request and approve internal evaluation under the Myles Evaluation Licence. Production use, redistribution and training other models on its outputs need written permission; write to info[at]launchables[dot]ai.
Installation
pip install onnxruntime tokenizers numpy
Download model_quantized.onnx, tokenizer.json, decision_config.json, compression.json and myles.py from this repository (the Hugging Face CLI or huggingface_hub.snapshot_download after your access is approved).
Quickstart
from myles import Myles
model = Myles(".") # the folder holding the files above
probabilities = model.decide(
state="Hi, I was charged twice for last month and the second charge has not been refunded.",
question="Which team should handle this message?",
options=["Customer support", "Billing and finance", "Security", "Sales"],
)
print(probabilities) # one probability per option, in the order given
decide returns a list that sums to one. Keep a decision when the top probability clears a threshold you set on your own held-out data; hand the rest to a person or a larger model.
Architecture
A cross-encoder with option markers: the question, every option and the text are read together in one sequence, so each option can attend to the text and to the other options. That is what relational questions ("the cheapest eligible one", "abstain if none qualifies") need.
[CLS] question [SEP] [OPT] option_1 [OPT] option_2 ... [OPT] option_k [SEP] state [SEP]
- Encoder: Ettin-encoder-400M (Johns Hopkins University, MIT licence), a long-context transformer encoder pre-trained on openly released data, fine-tuned by Launchables.
- Decision head: a linear layer scores the hidden state at each option marker; a softmax over the markers gives the distribution.
- Budgets: question up to 64 tokens, each option up to 16, the text fills the rest of the window. Trained and shipped at 2,048 tokens. Earlier versions of this card said 4,096: the encoder accepts that, but we have not shown that it reads text past 2,048 reliably, so the shipped configuration stays at 2,048 (corrected 17 October 2026).
Training
- Objective: listwise cross-entropy against a target distribution over the options.
- Data: a public decision-model dataset (one subset with unverified licensing excluded) at a quarter of the mix; Launchables product and everyday decisions with test templates held out, repeated to hold their share; generated multi-rule reasoning problems with exact labels in two versions, with whole domains and whole formats held out of training; and generated skills data (guardrails, personal data, moderation, retrieval, tool risk).
- Schedule: two epochs from the base encoder, cosine learning rate with warm-up, bf16, gradient clipping; checkpoint chosen on validation sets drawn from the training sources.
- Export: ONNX with 8-bit quantisation (SmoothQuant, alpha 0.65, chosen on a validation split).
- Lineage note: this build's training sample included rows from a crowd-revised NLI set generated with a hosted model, part of the public dataset under CC BY 4.0. Later Myles builds remove that source; the 150M build of 3 October 2026 already has.
Benchmarks
Frozen held-out decisions
1,400 decisions frozen before any comparison: 400 public-benchmark test, 400 public-benchmark out of distribution, 300 product tasks with unseen phrasing, 300 everyday tasks with unseen templates. Mean of the four split accuracies.
| Split | Myles-400M | Myles-150M (3 Oct build) | Hosted LLM, small tier | medium tier | large tier |
|---|---|---|---|---|---|
| Public-benchmark test | 88.5% | 83.8% | |||
| Public-benchmark out of distribution | 82.2% | 79.2% | |||
| Product tasks | 96.0% | 93.3% | |||
| Everyday tasks | 96.0% | 91.6% | |||
| Mean | 90.7% | 87.0% | 86.9% | 89.6% | 96.2% |
The hosted tiers are the small, medium and large models of a leading hosted LLM family, answering zero-shot with one fixed prompt. Myles-400M is 1.1 points above the medium tier at about one 350th of its cost per decision, and 5.5 points below the large tier.
Independent decision-model benchmark, public tasks
An independent, community-run benchmark for typed decision models publishes 231 tasks in three tiers (72 original, 48 easy, 111 hard); its held-out tiers are run only by its maintainers, so these are our own runs on the public tasks, scored with the benchmark's own code. Both input formats are reported.
| Format | Original | Easy | Hard | Total |
|---|---|---|---|---|
| Plain | 51/72 | 47/48 | 40/111 | 138/231 (59.7%) |
| Criteria | 49/72 | 48/48 | 41/111 | 138/231 (59.7%) |
Brier 0.562, expected calibration error 0.159 (plain). Multi-billion-parameter decision models score far higher on this benchmark; among one-pass encoders under 1B parameters this is the highest score we have measured.
Independent judge benchmark
Eleven judge tasks built from real public datasets, 300 rows each, scored with exact option probabilities on the 8-bit build: 7-task headline average 41.4, all-task average 47.3. Strongest on moderation and tool routing; weakest on personal-data detection and prompt injection, which is why those skills are the focus of the next builds.
Reasoning it was never shown
Generated multi-rule problems with exact labels: 74.0% correct on problems from domains held out of training, where chance is 15.9%. Whole domains and whole formats are held out, so this is a transfer score, not an in-distribution one.
8-bit build
Checked on 299 held-out decisions against the full-precision model: the 8-bit build gives the same top answer on 97.3% and the same accuracy (89.3%); the largest single probability difference seen was 0.56.
Certified escalation
Confidence thresholds are calibrated per task family on held-out data only (learn-then-test with an exact binomial bound), then applied to the 1,400 frozen decisions with the full-precision model.
| Target error | Decisions kept | Observed error on kept |
|---|---|---|
| 5% | 91% | 6.8% |
| 2% | 39% | 5.4% |
| 1% | 35% | 3.7% |
The guarantee is not met on the frozen test in this build at any target. Treat the thresholds as a starting point and refit them on your own held-out data before relying on them. Escalating the uncertain 9% of decisions to a local open-weight reasoning model instead of discarding them lifts the frozen-row accuracy to 92.5% (measured 3 October 2026), which is where the thinking tier of the Myles family comes from.
Option-order bias
Measured on 3 October 2026 on the frozen rows, full-precision model. Yes/no decisions (579), each scored with "yes" listed first and second: the top answer flips for 6 of 579 (1.0%), with a mean shift of 0.025 in the probability of "yes" when it is listed first. Questions with three or more options (506): the top answer changes for 2.4% when the options are shuffled and 4.2% when they are reversed. This build did not train with shuffled options; the effect is small but real, so test with your own paired-order check before relying on scores.
Honest limits
- Label preference on long option lists (measured 18 October 2026). With 10 or more options this build picks some labels far more often than they are right, and its top answer changes for 7% of such questions when the options are reversed (17% on the hardest of our test sets). Lists of 2 to 9 options are much less affected. Average the given and reversed orders, and check the answer distribution on labelled examples, before relying on long option lists.
- Option-order bias on short lists is small, not zero (18 October build, full precision, frozen rows): 3 of 579 yes/no decisions (0.5%) and 2.2% of 506 questions with three or more options, almost all with 3 to 9, change their top answer when shuffled (2.2% when reversed). Builds since 9 October train with shuffled options. Long lists are the exception; see the line above.
- The certified thresholds miss their targets on the frozen test (table above).
- Long inputs are slow on one thread. The median is 641 ms, but inputs near the 2,048-token window take far longer at full precision on one CPU thread; use the 8-bit build, more threads, or shorter inputs where latency matters.
- Agent dispatch and sensitivity are weak (55% on dispatch across large agent rosters; 42% on a small sensitivity set), and the independent benchmark's hard tier is 40 of 111.
- General decision benchmarks. 59.7% on the independent benchmark's public tasks; multi-billion-parameter decision models score far higher there.
- Base-model lineage. The base encoder's published training data includes a small share (under 1% of its tokens) of math text rewritten by a Chinese-developed model, and this build's own training sample included rows generated with a hosted model (see Training). This release is therefore not suitable where a fully audited model lineage is required; a rebuild on a clean base is planned.
- Numbers on this card are from our frozen rows and our own benchmark runs. They are not leaderboard rankings.
- English only. Not for high-stakes decisions about people (hiring, credit, health, legal) without human review.
Areas of improvement
- Order-bias correction and refitted thresholds, as in the 150M and 22M builds.
- Recipe without hosted-model rows or agent-written templates, which the 150M build of 3 October already has; the first 400M candidates on it improved skills (84 to 91), rule evaluation (58 to 90) and the independent benchmark's criteria format (125 to 152 tasks) but lost ground on everyday tasks and tool routing, so they were not released.
- Human-annotated skill data for personal data, moderation, routing and faithfulness, built by code from licensed datasets.
- Clean base: retrain on an encoder whose pre-training data we have audited end to end.
- Distillation from the larger Myles-L tier.
Feedback
Write to info[at]launchables[dot]ai with the decision, the options and what you expected; we add such cases to our held-out tests, never to training.
Licence
Myles-400M is proprietary to Launchables and released under the Myles Evaluation Licence: internal evaluation only, no redistribution, no production use, no training other models without written permission. Third-party components keep their own licences; see THIRD_PARTY_NOTICES.md.
Citation
@misc{launchables2026myles400m,
title = {Myles-400M: a calibrated long-context decision model},
author = {Launchables},
year = {2026},
url = {https://huggingface.co/launchables/myles-400m}
}
Model tree for launchables/myles-400m
Base model
jhu-clsp/ettin-encoder-400m