Repository navigation
1.9.0 — 2026-10-07
Release Notes
An agent declares its own reasoning effort and context tier beside its model, so one runner serves
every agent with the same permissions; and every run records which effort and context it ran at.
Compatibility. Additive. Existing factories — including ones whose runners fix an effort or a
context in their command — load, validate and run unchanged; validate warns about nothing new
unless a runner both fixes a value and has the placeholder for it. Two things are different in an
existing factory:
- A runner whose
{model}an agent leaves unset no longer hands the CLI a flag without its value,
or the literal{model}; the argument is left out, with its option. Such runs failed at spawn. - Run records gain
effortandcontext, andGET /runsgainsreasoning_effortandcontext;
older releases and records simply lack them.
Added
- An agent declares its own
effortandcontext, beside itsmodel, and a runner carries
them with{effort}and{context}placeholders exactly as{model}carries a model —
"--reasoning-effort={effort}","--context={context}", or Codex's
"-c", "model_reasoning_effort={effort}". A runner now describes a CLI and a permission set, and
is shared by every agent with those permissions whatever its model, effort and context: tuning one
agent no longer means a new runner and a copied deny list.[defaults] effortand
[defaults] contextfill in for agents that set none; an agent's own value wins. Values are
passed through as written — Layover keeps no catalog of the levels a model accepts. layover validatewarns when an agent's effort or context has no placeholder to reach its
runner, when a runner with a placeholder serves an agent that sets no value and has no default,
when a runner fixes a value beside its own placeholder (the CLI would get two), when a
[defaults]value reaches no runner, and when a value is empty.- Every run records the model, effort and context it ran with, in
runs-*.jsonlaseffort
andcontext, and inGET /runsasreasoning_effortandcontext; a session's header shows
them. History says which effort a run used without its transcript. Older records lack the fields. layover explainsays what each agent runs on, andlayover promptprints it on stderr
beside the prompt, both read from the command line with the agent's own values filled in.
Fixed
- An unset
{model}no longer hands the CLI a flag without its value."--model", "{model}"
with no model left--modelin front of the next flag, which Copilot CLI refuses outright, and a
joined--model={model}reached the CLI as that literal text. An argument carrying an unset
placeholder is now left out whole, together with the option it is the value of. The reference
factory's Copilot and Codex agents, which declare no model, were affected.
Changed
- For anyone using the crates as a library:
Runner::invocationandinvocation_with_mcptake a
Selectioninstead of a model,spawn::Plancarries aselection, andcost::of_runreturns a
ModelChoice.RunnerandMcpWiringmoved toconfig/runner.rsand are still reached as
layover_core::config::Runner.
A rate card is still keyed by model alone. A provider that bills a long-context tier at a higher
rate above a token threshold is not modelled, so a card for such a model is a lower bound on its
long-context runs; Copilot runs are priced from the credits they report and are unaffected.
Install layover-cli 1.9.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/KotkaZ/layover-project/releases/download/v1.9.0/layover-cli-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/KotkaZ/layover-project/releases/download/v1.9.0/layover-cli-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install KotkaZ/tap/layoverInstall prebuilt binaries into your npm project
npm install @layover/layover-cli@1.9.0Download layover-cli 1.9.0
| File | Platform | Checksum |
|---|---|---|
| layover-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| layover-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| layover-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| layover-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| layover-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo KotkaZ/layover-projectYou can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>