shll
Part of HexoKit — see all projects there.
One command to install, update, and shell-wire every tool in the HexoKit toolkit (run-kit, rk-desktop, fab-kit, wt, idea, tu, hop). shll doesn't replace the per-tool CLIs — it composes them.
Install
From a clean machine to a fully wired toolkit:
curl -fsSL https://hexokit.com/install | sh # install shll + HexoKit (run-kit), then auto-wire shell + agent harnesses
shll install # the rest of the toolkit: rk-desktop, fab-kit, wt, idea, tu, hop
exec $SHELL # reload so the shell integration takes effectInstall a subset by naming tools after sh -s --:
curl -fsSL https://hexokit.com/install | sh -s -- hop wtThe script preflights what the install needs — git (the Xcode Command Line Tools on macOS), curl, and tmux — and reports every miss at once with its per-platform fix command. On minimal Ubuntu/Debian images (which ship without curl), run sudo apt-get install -y curl first. When Homebrew is absent the script bootstraps it headlessly (official installer, NONINTERACTIVE=1) and prints the brew shellenv line to keep in your rc file; an existing Homebrew is used as-is (≥ 6.0.4 required — on 6.0.0–6.0.3, run brew update first). It's idempotent — safe to re-run, and a no-op for anything already installed.
One pitfall worth knowing: if the download itself fails, curl -fsSL … | sh still exits 0 — sh runs the empty input happily — so an &&-chained next step proceeds as if the install worked. Check curl's stderr, or command -v shll after; details in the install guide.
shll install ends by wiring the machine automatically: it runs the equivalent of shll setup shell (the rc-file eval line, sentinel-managed and idempotent) and shll setup agent --yes (one thin shll-toolkit Agent Skill at the harnesses' global skill paths — ~/.agents/skills/ always, ~/.claude/skills/ when the claude CLI is on PATH — plus run-kit's dashboard hooks). Both steps are best-effort — a failure warns and prints the step's manual nudge, and never fails the install. Opt out with --no-shell-setup (dotfile-manager users) and/or --no-agent-setup (no agent wiring), which ride the bootstrap's argument passthrough: curl -fsSL https://hexokit.com/install | sh -s -- --no-agent-setup.
Everything else — the manual brew bootstrap, from-source builds, shell-wiring detail, and tap-trust troubleshooting — lives in the install guide on hexokit.com.
Why shll?
- One-shot install — shll install records per-formula Homebrew trust and then runs brew install sahil87/tap/<formula for every roster tool you don't already have. Idempotent and safe to re-run.
- One-line shell integration — shll setup shell appends a single eval line to your rc file that wires up hop, wt, and any future toolkit shell-init in one block. No more managing four eval lines.
- One update for everything — shll update runs brew update once, then upgrades every installed roster tool in sequence. Skips ones you don't have. Skips itself if it wasn't installed via brew.
- Paste-friendly version dump — shll version prints one row per tool, ideal for bug reports.
- At-a-glance roster — shll list shows every managed tool with its install status, a one-line description, and its repo (plus --json for scripting).
- One-command health check — shll doctor verifies each tool is installed, runnable, and shell-wired, with an actionable fix on every problem line.
Per-tool CLIs continue to work standalone — shll wraps them, it does not replace them.
Commands
shll install — bootstrap missing tools
shll install # trust + install every missing roster tool, then wire shell + agent harnesses
shll install hop wt # install only a named subset
shll install --no-trust # skip the per-formula trust step
shll install --no-shell-setup # skip the automatic rc-file wiring
shll install --no-agent-setup # skip the automatic agent-harness wiring
shll install --dry-run # preview the brew install plan, change nothing