Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 18 Jul 14:57

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 check validates a config offline (structure, enums, timeouts — no network,
    no secrets); --preflight additionally resolves secrets, runs the privacy selector,
    and reaches the channel/providers.
  • status is 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-color all 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.com

Full install and verification walkthrough: docs/packaging/INSTALL.md.


Full commit changelog: v0.1.0...v0.2.0