v0.2.0
Korvun v0.2.0
The second release. It closes the cold-start failure that could drop the very first
message, ships the full command-line surface, and is the first release whose binary
reports its real version. No breaking changes — every v0.1.0 invocation still works.
Highlights
Cold-start is fixed (ADR-0031)
On v0.1.0, a first-time model load slower than Korvun's fixed ~5s provider timeout
would abort: Ollama cancelled the load, and the user's first message failed. v0.2.0
resolves it — production error handling landed:
- Boot warmup — local models are warmed at startup, best-effort (a warmup failure
logs and does not block boot). - Generous per-attempt timeout — configurable per model, defaulting generous so a
slow cold load is not guillotined. - Retry with differentiated fallback — transient post-load failures retry with
backoff; a genuine timeout is not retried (retrying a mid-load model just re-aborts
it). If every provider is down, the reply is an honest fallback, not a crash.
Verified on the same hardware that first surfaced the bug (iMac Intel, macOS 13): the
first cold request completed in ~6s with no timeout, where v0.1.0 failed.
A first-class CLI (ADR-0032)
korvun now has real subcommands instead of a single flag-driven binary:
korvun serve --config korvun.json # load config, wire, serve
korvun config check --preflight korvun.json # validate offline (+ online checks)
korvun status # live wiring of a running instance
korvun version
korvun help
config checkvalidates a config offline (structure, enums, timeouts — no network,
no secrets);--preflightadditionally resolves secrets, runs the privacy selector,
and reaches the channel/providers.statusis a thin read-only client of the admin API (/healthz+/api/brains+
/api/channels) — no token, no new server code.- Output is styled on an interactive terminal and stays machine-clean otherwise:
NO_COLOR,--plain, and--no-colorall turn styling off, and colored output
degrades to 256-indexed so it renders correctly everywhere (Apple Terminal included).
Example config shipped in the archive
Every release archive now bundles korvun.example.json — a minimal, valid starting
config you can validate with korvun config check korvun.example.json and adapt. It
was not in the v0.1.0 archive.
The binary reports its real version
v0.2.0 is the first release whose binary reports its actual version. The release
build's version ldflags were retargeted to the package where the version variable now
lives, so korvun version (and --version) print korvun v0.2.0 (<revision>)
instead of dev.
Compatibility
No breaking changes. The pre-CLI invocation korvun -config <path> still works —
a retrocompat shim routes it to serve unchanged — so existing docs, scripts, and the
systemd unit keep working. korvun serve --config <path> is the new canonical form.
Verifying this release
Releases are signed keyless with cosign (Sigstore)
and ship an SBOM. Verify the checksums signature, then check your archive against the
verified checksums.txt:
cosign verify-blob checksums.txt \
--signature checksums.txt.sig \
--certificate checksums.txt.pem \
--certificate-identity-regexp 'https://github.com/Sebastian197/korvun/.*' \
--certificate-oidc-issuer https://token.actions.githubusercontent.comFull install and verification walkthrough: docs/packaging/INSTALL.md.
Full commit changelog: v0.1.0...v0.2.0