spawn/hetzner
A bcb59eb925
fix: stop sourcing rc files in launch command — fnm env destroys PATH (#1261)
Root cause: the launch command did `source ~/.bashrc; source ~/.zshrc; claude`.
The .zshrc contains `eval "$(fnm env)"` which outputs PATH with literal
"$PATH" in quotes instead of expanding it, destroying the entire PATH.

Confirmed via debugging:
- `ssh -t ... 'export PATH=...; which claude'` → works (/root/.bun/bin/claude)
- `ssh -t ... 'export PATH=...; source ~/.zshrc; which claude'` → "command not found"
- `source ~/.zshrc; echo $PATH` → `"/run/user/0/fnm_multishells/...":"$PATH"` (broken)

Fix:
- Remove `source ~/.bashrc` and `source ~/.zshrc` from ALL launch commands
- ssh -t creates a pseudo-terminal, so bash auto-sources .bashrc for env vars
- Explicit PATH export is all we need for finding the claude binary
- Remove fnm eval snippet from _finalize_claude_install (it poisoned rc files)
- Also: clean up stale ~/.bash_profile, fix cloud-init PATH, move node
  install after bun attempt

Co-authored-by: lab <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-16 01:06:55 -08:00
..
lib refactor: reduce complexity in OAuth and Hetzner validation functions (#1132) 2026-02-14 17:43:05 -05:00
aider.sh feat: wire shared/github-auth.sh into all agent flows (#1216) 2026-02-15 23:00:53 -08:00
amazonq.sh feat: wire shared/github-auth.sh into all agent flows (#1216) 2026-02-15 23:00:53 -08:00
claude.sh fix: stop sourcing rc files in launch command — fnm env destroys PATH (#1261) 2026-02-16 01:06:55 -08:00
cline.sh feat: wire shared/github-auth.sh into all agent flows (#1216) 2026-02-15 23:00:53 -08:00
codex.sh feat: wire shared/github-auth.sh into all agent flows (#1216) 2026-02-15 23:00:53 -08:00
continue.sh feat: wire shared/github-auth.sh into all agent flows (#1216) 2026-02-15 23:00:53 -08:00
gemini.sh feat: wire shared/github-auth.sh into all agent flows (#1216) 2026-02-15 23:00:53 -08:00
goose.sh feat: wire shared/github-auth.sh into all agent flows (#1216) 2026-02-15 23:00:53 -08:00
gptme.sh feat: wire shared/github-auth.sh into all agent flows (#1216) 2026-02-15 23:00:53 -08:00
interpreter.sh feat: wire shared/github-auth.sh into all agent flows (#1216) 2026-02-15 23:00:53 -08:00
kilocode.sh feat: wire shared/github-auth.sh into all agent flows (#1216) 2026-02-15 23:00:53 -08:00
nanoclaw.sh feat: wire shared/github-auth.sh into all agent flows (#1216) 2026-02-15 23:00:53 -08:00
openclaw.sh feat: wire shared/github-auth.sh into all agent flows (#1216) 2026-02-15 23:00:53 -08:00
opencode.sh feat: wire shared/github-auth.sh into all agent flows (#1216) 2026-02-15 23:00:53 -08:00
plandex.sh feat: wire shared/github-auth.sh into all agent flows (#1216) 2026-02-15 23:00:53 -08:00
README.md refactor: replace Python with jq in Hetzner lib, fix /lab → /labs URLs (#827) 2026-02-12 23:14:11 -08:00

Hetzner Cloud

Hetzner Cloud servers via REST API. Hetzner Cloud

Agents

Claude Code

bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/claude.sh)

OpenClaw

bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/openclaw.sh)

NanoClaw

bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/nanoclaw.sh)

Aider

bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/aider.sh)

Goose

bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/goose.sh)

Codex CLI

bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/codex.sh)

Open Interpreter

bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/interpreter.sh)

Gemini CLI

bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/gemini.sh)

Amazon Q CLI

bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/amazonq.sh)

Cline

bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/cline.sh)

gptme

bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/gptme.sh)

OpenCode

bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/opencode.sh)

Plandex

bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/plandex.sh)

Kilo Code

bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/kilocode.sh)

Continue

bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/continue.sh)

Non-Interactive Mode

HETZNER_SERVER_NAME=dev-mk1 \
HCLOUD_TOKEN=your-token \
OPENROUTER_API_KEY=sk-or-v1-xxxxx \
  bash <(curl -fsSL https://openrouter.ai/labs/spawn/hetzner/claude.sh)