feat(harness): automated installers for opencode, pi, agy #23

Merged
pti merged 2 commits from feat-harness-installers into main 2026-07-07 18:35:04 +02:00
Owner

wraptool harness install <name> now works for three more CLI harnesses.

Recipes (verified against each tool's docs + npm registry)

  • opencodenpm i -g opencode-ai (registry bin opencode, v1.17.15, native).
  • pinpm i -g @earendil-works/pi-coding-agent (registry bin pi, v0.80.3; node runtime — manifest has node).
  • agy → Antigravity has no npm package; it's a Go binary whose official installer drops to ~/.local/bin. Recipe runs Google's installer (curl … | bash) and relocates the binary into the pool. Best-effort (runs a remote install script; side-effects on host ~/.local/bin).

npm recipes factored into npmInstall(pkg) (also used by claude), all via guix shell node -- npm … --prefix {prefix} so the binary lands in pool/bin.

Notes

  • harness list now shows opencode/pi/agy as no (installable).
  • gemini left manual — Antigravity superseded the Gemini CLI (Google retired it), so no installer.
  • Recipes not executed in CI (large downloads / Google's script); they're per-docs like the existing claude recipe. Build/vet/test/golangci-lint clean.

🤖 Generated with Claude Code

`wraptool harness install <name>` now works for three more CLI harnesses. ## Recipes (verified against each tool's docs + npm registry) - **opencode** → `npm i -g opencode-ai` (registry bin `opencode`, v1.17.15, native). - **pi** → `npm i -g @earendil-works/pi-coding-agent` (registry bin `pi`, v0.80.3; node runtime — manifest has node). - **agy** → Antigravity has **no npm package**; it's a Go binary whose official installer drops to `~/.local/bin`. Recipe runs Google's installer (`curl … | bash`) and relocates the binary into the pool. **Best-effort** (runs a remote install script; side-effects on host `~/.local/bin`). npm recipes factored into `npmInstall(pkg)` (also used by claude), all via `guix shell node -- npm … --prefix {prefix}` so the binary lands in `pool/bin`. ## Notes - `harness list` now shows opencode/pi/agy as `no (installable)`. - **gemini** left manual — Antigravity superseded the Gemini CLI (Google retired it), so no installer. - Recipes not executed in CI (large downloads / Google's script); they're per-docs like the existing claude recipe. Build/vet/test/golangci-lint clean. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(harness): automated installers for opencode, pi, agy
All checks were successful
Lint / lint (pull_request) Successful in 13s
01dac1ab09
Add Install recipes so `wraptool harness install <name>` works for three more
CLI harnesses:
- opencode -> npm i -g opencode-ai (bin opencode)
- pi       -> npm i -g @earendil-works/pi-coding-agent (bin pi)
- agy      -> Antigravity has no npm package; run its official installer
             (curl https://antigravity.google/cli/install.sh | bash) and relocate
             the ~/.local/bin/agy binary into the pool. Best-effort.

npm recipes factored into an npmInstall(pkg) helper (also used by claude).
`harness list` now shows opencode/pi/agy as "no (installable)". gemini has no
recipe (Antigravity superseded the Gemini CLI). Recipes are per each tool's
docs; the npm ones use `guix shell node -- npm ... --prefix {prefix}`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(harness): run npm installers under -F container (glibc detect-libc)
All checks were successful
Lint / lint (pull_request) Successful in 12s
74ed65d241
On the bare Guix host, npm's detect-libc mis-reads glibc as musl, so
platform-split native CLIs (opencode, claude) fail to install with EBADPLATFORM
(it grabs the musl optional-deps). Run the npm install inside a Guix container
with --emulate-fhs so a glibc FHS is present and the correct platform binary is
selected; --share persists the result into the pool.

Verified: `wraptool harness install opencode` now succeeds end-to-end (glibc
opencode binary linked into pool/bin), where the bare `guix shell node -- npm`
recipe failed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
pti merged commit 5cc597101a into main 2026-07-07 18:35:04 +02:00
pti deleted branch feat-harness-installers 2026-07-07 18:35:04 +02:00
Sign in to join this conversation.
No reviewers
No labels
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
pti/wraptool!23
No description provided.