Skip to content

feat(install): install.sh installs the Rust lksr binary (P10) - #93

Draft
qdang46 wants to merge 1 commit into
mainfrom
worktree-p10-rust-installer
Draft

feat(install): install.sh installs the Rust lksr binary (P10)#93
qdang46 wants to merge 1 commit into
mainfrom
worktree-p10-rust-installer

Conversation

@qdang46

@qdang46 qdang46 commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator

What

The latest GitHub release (v0.1.0-rust) is now Rust-only (ships lksr-linux-x86_64.tar.gz, lksr-macos-aarch64.tar.gz, SHA256SUMS.txt). The primary documented installer install.sh still downloaded the legacy Python zip and failed against it (Release v0.1.0-rust missing asset lks-linux-x64.zip). This rewrites install.sh to install the SHA256-verified Rust lksr binary.

Changes

  • install.sh (rewrite) — installs the Rust lksr binary:
    • asset_name()lksr-${os}-${arch}.tar.gz (macos/linux + x86_64/aarch64)
    • install_binary() → download tarball + SHA256SUMS.txt, verify checksum (sha256sumshasum fallback, fails loud on mismatch), extract flat tarball, install to $DEST/lksr (or $INSTALL_ROOT/current/lksr + symlink when set)
    • drops the Python portable-pack dance (unzip, nested-layout repair, python encodings check, lks-mcp shims)
    • preserves every flag: DEST, INSTALL_ROOT, LK_SIM_REF, --version/--ref, --from-git, --no-mcp, --easy-mode, --verify (now --version + guide), --quiet, --uninstall, lock/trap, 5-target MCP JSON merge
    • MCP entry → $DEST/lksr args: ["mcp"] (MCP lives inside the binary)
  • install-rust.sh deleted — folded into install.sh (was redundant, undocumented, lacked sha256/MCP/easy-mode). AGENTS.md no-legacy-paths.
  • install.ps1 unchanged — Windows stays on the Python build (no Rust Windows binary shipped yet; documented).
  • Docs — README.md + docs/guide/installation.md updated to the lksr install path, lksr mcp, flags, and Windows note. All curl URLs unchanged.
  • CI — added a post-release install-smoke job to release.yml (runs install.sh --ref <tag> --verify --no-mcp on ubuntu, asserts lksr --version + lksr guide).

Verification

  • bash -n install.sh — syntax OK
  • Core install logic verified against the real v0.1.0-rust release: asset URL resolution, tarball+SHA256SUMS download, SHA256 match (7c98aadf...), flat-tarball extraction → lksr binary, tampered-hash fail-loud
  • Layout branches tested in isolation (direct install + INSTALL_ROOT symlink)
  • asset_name() correctly dies on Windows/MINGW pointing to install.ps1
  • Workflow YAML parses

Beads

Closes livekit-agent-simulator-rust-full-port-f8k.12 (P10 — Packaging: install.sh adaptation). Windows Rust binary remains deferred per plan research §1.6.

Honest limitation

Full end-to-end install could not be run on this Windows host (install.sh is macOS/Linux-only by design). The download/checksum/extract path was validated against the live release; the CI install-smoke job will exercise the real binary on ubuntu.

The latest GitHub release (v0.1.0-rust) is now Rust-only — install.sh still
downloaded the legacy Python zip (lks-${os}-${arch}.zip) and failed against it
("Release v0.1.0-rust missing asset lks-linux-x64.zip"). Rewrite install.sh to
install the SHA256-verified Rust lksr binary:

- asset_name() maps macos/linux + x86_64/aarch64 -> lksr-${os}-${arch}.tar.gz
- install_binary() downloads the tarball + SHA256SUMS.txt, verifies the
  checksum (sha256sum -> shasum fallback, fails loud on mismatch), extracts the
  flat tarball, installs to $DEST/lksr (or $INSTALL_ROOT/current/lksr with a
  $DEST symlink when INSTALL_ROOT is set)
- drops the Python portable-pack dance (unzip, repair_nested_portable_layout,
  python encodings check, lks-mcp shim symlinks)
- preserves every flag: DEST, INSTALL_ROOT, LK_SIM_REF, --version/--ref,
  --from-git, --no-mcp, --easy-mode, --verify (now --version + guide), --quiet,
  --uninstall, lock/trap, and the 5-target MCP provider JSON merge
- MCP entry points at $DEST/lksr with args ["mcp"] (MCP lives in the binary)

Folds in install-rust.sh (redundant, undocumented, lacked sha256/MCP/easy-mode)
and deletes it per AGENTS.md no-legacy-paths. Windows stays on the Python
install.ps1 (no Rust Windows binary shipped yet). Updates README.md and
docs/guide/installation.md to the lksr install path and adds a post-release
install-smoke job to release.yml.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants