Skip to content

CLI baseline: no version at all, --help exits 1, and the kiln release ships a binary named kilnd #486

Description

@avrabe

Part of an org-wide CLI survey across the verified varve layer 2026.08.2 plus the v0.4.4 release — matrix and baseline in pulseengine.eu#167.

What is good here

The flag surface is well-chosen and reads like someone actually ran embedded workloads: --fuel, --memory, --no-std, --memory-profile, --no-platform-opt are the knobs that matter for a bounded runtime, and the WASI group (--wasi-fs, --wasi-env, --wasi-arg) is complete rather than partial. --wasi-fs even documents its own alias inline — (alias: --dir) — which is more courtesy than most tools manage.

--component [<path>] + --invoke <export> is the right shape for a Component Model runtime: run a component and print an export's result in one line.

Three problems

1. No version, by any means.

$ kilnd --version
WebAssembly Runtime Daemon (kilnd)      (exit 1)
$ kilnd -V
WebAssembly Runtime Daemon (kilnd)      (exit 1)

It prints the banner and exits 1. Nothing in --help carries a version either. kiln is the runtime that executes other tools' artifacts — e.g. witness' --harness cross-check path runs modules under kilnd — so "which runtime produced this run" is precisely the question a coverage or timing result needs to answer, and it currently cannot.

2. --help exits 1. Asking for help is not an error; it should exit 0. Unknown flags should be the ones exiting non-zero (2, per the baseline).

3. The release ships a binary whose name is not the project's.

$ tar tzf kiln-v0.4.4-aarch64-apple-darwin.tar.gz
./kilnd

Repo kiln, tarball kiln-v0.4.4-…, binary kilnd. The varve layer therefore exposes kilnd, so a user reading the roster for "kiln" finds no such command. Worth deciding deliberately: either rename the binary to kiln, or state that kilnd is the binary everywhere the project is named.

Related, and maybe the root of it: the name says daemon, the CLI is a one-shot runner — kilnd [OPTIONS] <module.wasm> executes a module and exits. If it is not a resident process, kiln is the more honest name.

Ask

  1. --version/-V print <binary-name> <semver>, exit 0.
  2. --help exits 0; unknown flag exits 2.
  3. Decide the binary name and make repo, tarball, layer entry and roster agree.

Enforce (1) with a release step that runs the freshly built binary and asserts --version == the tag — varve added this after pulseengine/varve#38 and it would have caught all three of the version failures we found this week.

🤖 Generated with Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    tool-frictionFriction hit while using the tool for real work

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions