Repository navigation
1.14.0 — 2026-10-14
Release Notes
A run the model service ended is restarted like an interrupted one, and a chain that ends on a
failed run no longer reads as finished.
Compatibility. Additive for layover.toml: every factory that loaded under 1.13 loads unchanged,
and the one new key, a runner's provider_errors, is optional. What an existing factory will notice:
- A Copilot run the model service ended is restarted, after a minute, where its agent's
recoveryisautomatic— the default — up tomax_recovery_attempts(default2). It is on by
default becauserecoveryalready says whether an agent's work is safe to repeat. To keep the old
behaviour, setmax_recovery_attempts = 0,recovery = "manual"on an agent, or
provider_errors = { read = "none" }on a runner. No other failed run is restarted. - Chains that ended on a failed, timed-out or interrupted run show as
failed, in Chains'
needs attention, the tab's count, the page title and notifications — including ones that ended
that way before this release, within the window shown. layover runwaits for a restart that is backing off rather than stopping with it queued.- The HTTP API:
ItineraryStategainsfailedandItineraryListafailedcount; a run gains
causeandrequest_id; a queued flight gainsattemptandnot_before. A client that treats
the chain state as a closed set should expect the new value. - Run records in
runs-*.jsonlgaincauseandrequest_id, absent from older records. - Going back to 1.13 or earlier: a restart this release queued, or one alive when the Tower
stopped, is not understood by them and would be dropped. Let it start, or cancel it, first.
Added
- A run the model service ended is told apart from one that failed its own work. Copilot CLI's
events are read: a failed run is a provider error when its last model call came back with a
resultother thansuccess(http_400,transport_error, …) or asession.errorof type
query, and no tool started and no call succeeded after it. Only top-level event fields are read,
so an agent quoting an error never counts. The run staysfailed, withcause: provider_error,
the provider's request id, and a detail saying what the service said. - Such a run is restarted like an interrupted one: the agent's
recoverypolicy and
max_recovery_attempts, counted per piece of work, a Ground Stop forbidding it, and every rail
applying to the restart. It waits a minute before the first restart, five before the second and
fifteen after that, and is told the model service failed and that the earlier run's tools may have
acted. Upcoming says when it starts. provider_errorson a runner:read = "copilot"for Copilot CLI under another name,
read = "none"to turn it off, or the events that say the service failed (failed) and that the
run carried on (carried_on), for a CLI Layover has no reader for. Claude Code and Codex have
none yet.validaterefuses a declaration that cannot decide or matches every event.- The
failedchain state, for a chain whose last run failed, timed out or was interrupted with
nothing queued or running after it and nobody having continued it.
Install layover-cli 1.14.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/KotkaZ/layover-project/releases/download/v1.14.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.14.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.14.0Download layover-cli 1.14.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>