← Journal Models & Routing 27 September 2026 9 min read

The right model for every turn.

Inside Laya, Jev and Luminair's Automatic routing: how a prompt gets sized up, matched to a model that is good enough, and explained back to you, without paying flagship prices for a typo.

Fig 01  One turn, start to finishAutomatic routing
YOUR PROMPT “Make the header 2px taller.” “Refactor the payment flow.” Simple edit? RULE, NOT A MODEL YES · skip the classifier · 0 ms wait NO DECISION MODEL Laya or Jev • How strong a model? • Touches files? • Needs the conversation? • Verify afterwards? • How risky? POLICY Your rules 1 Precision first 2 Allowance left 3 Billing consent 4 Reference cost 5 Stay on provider Light e.g. GPT-5.6 Luna Standard e.g. Sonnet 5 Heavy e.g. GPT-5.6 Sol Last decision: Luna · Simple-edit rule · light precision · … · 0 ms EVERY CHOICE IS EXPLAINED
Small, self-contained edits skip the classifier entirely. Everything else is read by a decision model, then scored against rules you control. The result is always labeled with its reason and how long the decision took.

The short version

  1. Most prompts in a coding session are small. Sending a typo fix to the most expensive model is like hiring an architect to hang a picture.
  2. Luminair now picks an adequate model per turn: light for small edits, heavy for payments, security and migrations.
  3. Two decision models, Laya (runs on your Mac) and Jev (hosted), read each prompt. They never write text; they only answer questions about it.
  4. Every choice shows its reason. Paid API spending stays off unless you turn it on.
02Built with Luminair

We used Luminair to build Luminair.

Everything in this post was researched, written and tested inside the app it describes. We split the work across sessions and models, each doing what it is best at, and kept the findings in the Luminair Journal so no session had to start from zero.

Perplexity SonarPulled current rate cards and model docs, with citations, for every provider on the roster.
GPT-6 AstraWorked through the routing policy and the edge cases: follow-ups, images, stale allowance readings.
Luminair JournalHeld the research doc: sources, prices, test results and what is still unmeasured.
Luminair itselfRan the sessions side by side, then the tests, then the signed 1.0.234 build.
Luminair · three sessions in panes
Luminair desktop app with three chat sessions side by side and a folder sidebar
This is what that looks like: several sessions open side by side, each on its own model, with folders on the left. (Demo workspace.)
03The problem

Most turns are small.

A real coding session is not one long, hard question. It is a hard question followed by dozens of little ones:

  • “Change the button background to the design token.”
  • “Fix the typo in the header title.”
  • “Add 8px of space under the card.”

If your session is pinned to a flagship model, every one of those little turns is billed at flagship rates. If it is pinned to a cheap model, the first hard question falls over. Switching the model picker by hand fifty times an hour is not a workflow.

Fig 02  Same turn, different price tagsUSD · reference basket
GPT-5.6 LunaLight
$2
Sonnet 5Standard
$18
GPT-5.6 TerraStandard
$20
GPT-5.6 SolHeavy
$36
Opus 5.5Heavy
$36
GPT-6 AstraPremium
$90
Fable 5.1Premium
$90
$0$45$90
Price of 4 million input tokens plus 1 million output tokens at each provider's published API rate (checked 27 September 2026). This fixed 4:1 basket is the yardstick the router uses to rank models. It is not what subscribers pay and not a prediction of any real turn. At the top end the basket costs 45 times what it does at the bottom.
04How a turn is routed

Four steps, one receipt.

Here is what happens between pressing Enter and a model starting to work, in plain terms. Fig 01 at the top of this page is the same flow as a diagram.

01

Check for a simple edit

A plain rule looks for short, self-contained visual changes: colors, spacing, typos. If it matches, the turn goes to a light model right away. No model is asked, so there is nothing to wait for.

02

Read the prompt

Otherwise a decision model reads the prompt and answers five fixed questions. Laya runs entirely on your Mac (about 600 MB). Jev is hosted and runs through your own Cloudflare account.

strengthfile accessneeds historyverify afterrisk
03

Apply your rules

The policy throws out anything too weak for the task, anything out of allowance, and anything that would start paid API spending without your permission. Among what is left, it prefers lower reference cost and staying with the current provider.

04

Pick, and say why

The chosen model runs the turn. The panel records the choice, the reason, the allowance reading and the decision time. When anything is unclear (an image, a “continue”, a timeout), your selected model is kept.

05Four design choices

The details that matter.

1 · The fastest decision is no decision

We measured Laya on one Mac with six synthetic prompts. A warm classification took 610 to 674 ms; the very first call took 1,444 ms. That is fine for a refactor. For “make the button blue” it is more time deciding than the change deserves.

So small visual edits never reach the classifier. The simple-edit rule is plain, inspectable code, and it hands the turn to a light model with zero classifier wait.

Fig 03  Time spent decidingMilliseconds · one Mac
Simple-edit rule
0 ms
Laya, warm
610–674 ms
Laya, first call
1,444 ms
05001,0001,5002,000
A six-prompt diagnostic on one machine, not a benchmark. Your times will depend on your hardware.

2 · Precision comes before price

Cheap is only good if it is good enough. The policy first asks how precise the work must be. Small edits may use light models. Clear security, payment or migration work requires a heavy model, and with Protect high precision work on, it never downgrades a stronger model you already picked.

“Use the least expensive model that is adequately capable. Not the cheapest. Not always the best.”

3 · Switching providers has a hidden cost

A naive router compares price tables and jumps to whichever is a few cents cheaper. But a long session builds up a warm prompt cache with its provider. Move the conversation to a different provider and that cache is gone; the history has to be bridged over and paid for again.

So the scorer adds a penalty for changing provider and a small bonus for the model you already have. Out of the box, Stay with the same provider is on, so Automatic only chooses within your current provider unless you allow otherwise.

desktop/lib/decision-models/automatic.jslines 42–44
// Switching providers can lose warm caches and requires a history bridge.
if (current && current.engine !== candidate.engine) score += 1.5;
if (candidate.id === context.model) score -= 0.4;

Lower scores win. A model has to be meaningfully better suited before it is worth leaving a warm cache behind.

4 · No surprise bills, no made-up numbers

Many people run Luminair on subscriptions, but some models are pay-per-token API lanes. A turn that starts on a subscription will never move into a metered API lane unless you turn on Allow switching into paid API models. It ships off.

Allowance works the same careful way. The router reads your account meters, keeps separate pools separate, and treats any reading older than three minutes as unknown. It never turns a percentage into a guessed token count.

What you will not seeThere is no “dollars saved” counter. We have not measured real savings yet, so the app does not claim any. The panel shows reference prices and says so.
06Find it in the app

Where the controls live.

  1. 1Open Settings › Models and scroll to Decision models.
  2. 2Pick Laya to download it, or Jev to connect your Cloudflare account.
  3. 3Leave each task strength on Automatic — best fit, or pin your own model per strength.
  4. 4Send a prompt. Last decision shows which model ran and why.
Settings · Models · Decision models · Laya
DECISION MODELS › LAYA
Laya

Laya runs fully on this computer (about 600 MB). It evaluates each prompt's strength, file access, conversation dependence, verification needs, and risk.

Auto switch working modelChoose an adequate model using the task, precision, allowance, and reference cost.
Prefer efficient modelsPrefer lower reference prices among adequate models.
Allow switching into paid API modelsAllow new metered API spending when your selected model uses a subscription.
Stay with the same providerPrevent automatic switches between providers.
Protect high precision workClear high precision tasks use a strong model.
3Light task model
Automatic — best fit ▾
Standard task model
Automatic — best fit ▾
Heavy task model
Automatic — best fit ▾
4Last decision: Luna · Simple-edit rule · light precision · … · 0 ms
Drawn with the exact labels and defaults from build 1.0.234 (a subset of the twelve switches). Pins match the steps above.
07The model roster

Who does what.

Each model has a researched profile: its published price, its strength level, and a source link. Strength levels are our routing policy, not benchmark scores. Prices are USD per million input / output tokens at standard API rates.

ModelIn / outLevelUsed for
OpenAI · Codex
GPT-5.6 Luna$0.20 / $1.20LightFirst pick for narrow, low-risk edits
GPT-5.6 Terra$2 / $12StandardEveryday development
GPT-5.6 Sol$4 / $20HeavyFlagship coding; promotional rate
GPT-6 Astra$10 / $50PremiumHard, end-to-end work
Anthropic · Claude
Sonnet 5$2 / $10StandardRoutine coding; fallback for small edits
Opus 5.5$4 / $20HeavyLong-running coding
Opus 5 · Opus 4.8$5 / $25HeavyHeavy work
Fable 5 · Fable 5.1$10 / $50PremiumDemanding reasoning; never for small edits
Perplexity
Sonar$1 / $1Light researchQuick sourced answers
Sonar Reasoning Pro$2 / $8ResearchResearch that needs reasoning
Sonar Pro$3 / $15ResearchDeeper sourced research
Google · Antigravity
Gemini 3.8 Flash, low$0.75 / $3.75LightPromotional API reference through 31 Dec 2026
Gemini 3.8 Flash, medium / high$0.75 / $3.75StandardSame reference; conservative level

Local and unknown models (Ollama, LM Studio, downloaded weights) stay available as manual picks; they get no invented score. The profiles carry a review date: on 27 October 2026 Automatic stops using this snapshot until it is refreshed.

08What we proved

Checked, and not yet checked.

57/57
Focused routing and decision tests passed
1,011
Core suite tests passed, zero failed
0ms
Classifier wait for a simple color edit, routed to Luna
1.0.234
Built, signed and verified with codesign --strict

We also clicked each of the four new switches off and on in a real app window and confirmed each setting was saved, and routed a payment refactor from Luna to Sol at high effort.

Not measured yet

  • Real tokens or dollars saved per session
  • Answer quality across every provider model
  • How much subscription allowance each task really uses
  • Laya's speed on your hardware

When those numbers exist, they will be in a follow-up post here. Until then, we would rather show you the method than a made-up headline.

Try Automatic routing

Connect your accounts, pick Laya or Jev, and let each turn find its model.

Download Luminair →