Skip to content

lo is one Go binary. Every command runs natively in it. The binary embeds the frozen argsh tree, and the tree stays runnable: a project selects it per command through lok8s.yaml (spec.implementation).

Install

New installs use lo-install.sh. Download it and checksums.txt from the release, verify, read, then run it. See Installation.

Two builds, and both install as lo:

  • lo (core, about 18 MB) renders through the pinned kustomize binary and the exec plugins that lo toolchain install installs with b.

  • lo-full (lo-install.sh --full) links the kustomize API and khelm and renders in-process. The two builds give byte-identical output.

New

  • lo init runs a wizard on a terminal. It detects where you stand, asks, prints the plan, then writes. lo init --plan prints the plan and writes nothing. Every answer has a flag twin on a subcommand.

  • lo toolchain install writes .bin/b.yaml with the pins of this lo build. It installs b (SHA-256 verified) and runs b install. lo toolchain doctor verifies what landed.

  • lo assets is the eject model. The binary embeds the addons, the driver templates, the CRD mirror, the Tilt extension and the bash tree. They land in .lok8s/ on first use. lo assets list|diff|eject|update manage the copies. A local copy always wins.

  • lo mcp serves the MCP server for editors and agents from the same binary.

  • lo secrets uses the kernpilot age-only sops fork. The fork drops the cloud KMS, Vault and PGP backends. lo rejects a rule with such a recipient.

Removed

  • LO_IMPL and LO_GO_BASH. Nothing in the environment selects the implementation. lok8s.yaml does.

  • lo assets show. Use lo assets diff <rel>.

  • lo init project --env both. Pick mise, direnv or none.

Deprecated

  • lo init toolchain is a hidden alias of lo toolchain install. This release keeps it, the next one removes it.

Breaking

  • .lok8s/lo no longer marks a project root. The binary walks up to the nearest clusters/ directory or a kind: Project lok8s.yaml (D30).

  • Install through lo-install.sh or the release archives. lo-up stays online as legacy and does not install the Go binary.

  • Go refuses go install github.com/kernpilot/lok8s/cmd/lo@v0.3.0. The module carries replace directives.

Upgrade an existing project

  1. Install the binary: bash lo-install.sh.

  2. Add lok8s.yaml at the project root if there is none:

    yaml
    kind: Project
    spec:
      implementation:
        default: go
  3. Run lo toolchain install. It never overwrites an existing .bin/b.yaml. It prints a diff against the pins.

  4. Optional: lo assets eject bash writes the frozen tree into .lok8s/. Then spec.implementation.bash.commands can route a command to it.

  5. Run lo doctor.

Deviations

Where the binary does not match the bash on purpose: the deviations catalogue.

Assets

For linux and darwin, amd64 and arm64: lo-<os>-<arch>.tar.gz, lo-full-<os>-<arch>.tar.gz, kustomize-secret-<os>-<arch>, lochat-<os>-<arch>, plus lok8s-v0.3.0.tar.gz (the framework tree), lo-install.sh and checksums.txt.

Released under the MIT License.