chore: Deprecate configure.sh and align install scripts with Hero conventions #78

Open
opened 2026-04-07 11:44:48 +00:00 by mahmoud · 0 comments
Owner

Context

The Hero skills conventions (documented in hero_skills/claude/skills/) define clear rules for scripting:

  • Bash is only for curl | bash bootstrap and CI workflows
  • Nushell is the standard for interactive tooling and component management
  • Never require source code or build tools for end users
  • hero_proc manages service lifecycle — not raw pkill or screen sessions
  • All logic lives in scripts/, Makefiles are thin wrappers

Our current scripts partially violate these conventions.

Current State

Script Purpose Issue
scripts/install.sh Binary installer via curl | bash Correct — follows bash bootstrap pattern
scripts/configure.sh Build from source + install deps Violates "no build tools for end users", hardcoded versions (now fixed via central config but still builds from source)
scripts/uninstall.sh Clean removal Correct — bash is fine for system cleanup

Plan

1. Deprecate scripts/configure.sh

configure.sh does two things:

  • Installs runtime dependencies (cloud-hypervisor, mycelium, hero_proc, my_hypervisor) — install.sh already does this better
  • Builds hero_compute from source (cargo build) — only needed for developers, not end users

Split it:

  • End users: Use install.sh (downloads pre-built binaries, no Rust needed)
  • Developers: make build already handles compilation. make configure should only install build dependencies (Rust, musl-tools, system packages) and runtime deps, not download pre-built binaries

Add a deprecation notice to configure.sh pointing users to install.sh.

2. Create nushell module for Hero component management

Per Kristof's direction and the Hero conventions, create install_hero in hero_skills/tools/modules/:

# Downloads pre-built binaries for hero_proc, hero_router, hero_proxy
export def install_hero [] {
    # Fetch versions from central config
    # Download binaries to ~/hero/bin
    # Start hero_proc (bootstrap — screen or direct, since hero_proc can't manage itself)
}

This lives in hero_skills (not hero_compute) because it manages multiple Hero components.

See related: Kristof's request for nushell-based install flow.

3. Simplify make configure for developers only

Reduce configure.sh to developer-only setup:

  • Install system build dependencies (build-essential, libssl-dev, musl-tools)
  • Install Rust toolchain
  • Run install.sh for runtime dependencies (don't duplicate the download logic)
  • Build the workspace

4. Update install.sh for upgrade awareness

Already tracked in #77 — graceful stop, state capture, auto-restart.

Files to Change

File Action
scripts/configure.sh Add deprecation notice, simplify to dev-only build setup
scripts/install.sh Keep as-is (upgrade awareness in #77)
scripts/uninstall.sh Keep as-is
Makefile Update configure target description
docs/setup.md Update to recommend install.sh for end users, make configure for developers only
hero_skills/tools/modules/ New install_hero nushell module (separate repo/issue)
  • #68 — Install script base issue
  • #77 — Upgrade-aware install script
  • #76 — UI version display
  • Kristof's request: nushell scripts to download hero_proc, hero_router, hero_proxy
## Context The Hero skills conventions (documented in `hero_skills/claude/skills/`) define clear rules for scripting: - **Bash** is only for `curl | bash` bootstrap and CI workflows - **Nushell** is the standard for interactive tooling and component management - **Never require source code or build tools** for end users - **hero_proc** manages service lifecycle — not raw `pkill` or screen sessions - **All logic lives in `scripts/`**, Makefiles are thin wrappers Our current scripts partially violate these conventions. ## Current State | Script | Purpose | Issue | |--------|---------|-------| | `scripts/install.sh` | Binary installer via `curl \| bash` | Correct — follows bash bootstrap pattern | | `scripts/configure.sh` | Build from source + install deps | Violates "no build tools for end users", hardcoded versions (now fixed via central config but still builds from source) | | `scripts/uninstall.sh` | Clean removal | Correct — bash is fine for system cleanup | ## Plan ### 1. Deprecate `scripts/configure.sh` `configure.sh` does two things: - Installs runtime dependencies (cloud-hypervisor, mycelium, hero_proc, my_hypervisor) — **`install.sh` already does this better** - Builds hero_compute from source (`cargo build`) — only needed for **developers**, not end users Split it: - **End users**: Use `install.sh` (downloads pre-built binaries, no Rust needed) - **Developers**: `make build` already handles compilation. `make configure` should only install build dependencies (Rust, musl-tools, system packages) and runtime deps, not download pre-built binaries Add a deprecation notice to `configure.sh` pointing users to `install.sh`. ### 2. Create nushell module for Hero component management Per Kristof's direction and the Hero conventions, create `install_hero` in `hero_skills/tools/modules/`: ```nu # Downloads pre-built binaries for hero_proc, hero_router, hero_proxy export def install_hero [] { # Fetch versions from central config # Download binaries to ~/hero/bin # Start hero_proc (bootstrap — screen or direct, since hero_proc can't manage itself) } ``` This lives in **hero_skills** (not hero_compute) because it manages multiple Hero components. See related: Kristof's request for nushell-based install flow. ### 3. Simplify `make configure` for developers only Reduce `configure.sh` to developer-only setup: - Install system build dependencies (build-essential, libssl-dev, musl-tools) - Install Rust toolchain - Run `install.sh` for runtime dependencies (don't duplicate the download logic) - Build the workspace ### 4. Update `install.sh` for upgrade awareness Already tracked in #77 — graceful stop, state capture, auto-restart. ## Files to Change | File | Action | |------|--------| | `scripts/configure.sh` | Add deprecation notice, simplify to dev-only build setup | | `scripts/install.sh` | Keep as-is (upgrade awareness in #77) | | `scripts/uninstall.sh` | Keep as-is | | `Makefile` | Update `configure` target description | | `docs/setup.md` | Update to recommend `install.sh` for end users, `make configure` for developers only | | `hero_skills/tools/modules/` | New `install_hero` nushell module (separate repo/issue) | ## Related - #68 — Install script base issue - #77 — Upgrade-aware install script - #76 — UI version display - Kristof's request: nushell scripts to download hero_proc, hero_router, hero_proxy
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_compute#78
No description provided.