spawn/upcloud
A cbcf79d376
refactor: Extract common API retry interval update logic to reduce duplication (#70)
- Add `_update_retry_interval()` helper in shared/common.sh to eliminate
  repeated backoff interval calculation and cap logic (was copied 10+ times
  across cloud provider API wrappers)
- Refactor generic_cloud_api() to use new helper, reducing from 83 to 70 lines
- Refactor scaleway_api() to use new helper, reducing from 66 to 53 lines
- Refactor upcloud_api() to use new helper, reducing from 65 to 52 lines

This reduces cyclomatic complexity by eliminating nested if statements for
interval updates and consolidates the retry backoff logic in one place,
making future maintenance easier and reducing bugs from copy-paste errors.

Agent: complexity-hunter

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-02-09 03:36:08 -08:00
..
lib refactor: Extract common API retry interval update logic to reduce duplication (#70) 2026-02-09 03:36:08 -08:00
aider.sh Add RunPod GPU cloud provider (#39) 2026-02-07 21:43:10 -08:00
amazonq.sh Add RunPod GPU cloud provider (#39) 2026-02-07 21:43:10 -08:00
claude.sh Add RunPod GPU cloud provider (#39) 2026-02-07 21:43:10 -08:00
cline.sh Add RunPod GPU cloud provider (#39) 2026-02-07 21:43:10 -08:00
codex.sh Add RunPod GPU cloud provider (#39) 2026-02-07 21:43:10 -08:00
gemini.sh Add RunPod GPU cloud provider (#39) 2026-02-07 21:43:10 -08:00
goose.sh Add RunPod GPU cloud provider (#39) 2026-02-07 21:43:10 -08:00
gptme.sh Add RunPod GPU cloud provider (#39) 2026-02-07 21:43:10 -08:00
interpreter.sh Add RunPod GPU cloud provider (#39) 2026-02-07 21:43:10 -08:00
nanoclaw.sh Add RunPod GPU cloud provider (#39) 2026-02-07 21:43:10 -08:00
openclaw.sh Add RunPod GPU cloud provider (#39) 2026-02-07 21:43:10 -08:00
opencode.sh fix: Use robust OpenCode install method across all clouds (#48) 2026-02-07 23:02:18 -08:00
plandex.sh Add RunPod GPU cloud provider (#39) 2026-02-07 21:43:10 -08:00
README.md Add RunPod GPU cloud provider (#39) 2026-02-07 21:43:10 -08:00

UpCloud

UpCloud cloud servers via REST API. UpCloud

Agents

Claude Code

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

OpenClaw

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

NanoClaw

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

Aider

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

Goose

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

Codex CLI

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

Open Interpreter

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

Gemini CLI

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

Amazon Q CLI

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

Cline

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

gptme

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

OpenCode

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

Plandex

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

Non-Interactive Mode

UPCLOUD_SERVER_NAME=dev-mk1 \
UPCLOUD_USERNAME=your-api-username \
UPCLOUD_PASSWORD=your-api-password \
OPENROUTER_API_KEY=sk-or-v1-xxxxx \
  bash <(curl -fsSL https://openrouter.ai/lab/spawn/upcloud/claude.sh)

Environment Variables

Variable Description Default
UPCLOUD_USERNAME UpCloud API username (prompted)
UPCLOUD_PASSWORD UpCloud API password (prompted)
UPCLOUD_SERVER_NAME Server name (prompted)
UPCLOUD_ZONE Datacenter zone de-fra1
UPCLOUD_PLAN Server plan 1xCPU-2GB
OPENROUTER_API_KEY OpenRouter API key (OAuth or prompted)