Find a file
Sprite 6fdfe1b014 refactor: Extract ENV_TEMP pattern to provider-specific inject functions
Completed ENV_TEMP pattern extraction across remaining providers:

1. Modal: gptme.sh (1 script) - uses inject_env_vars_local
2. GCP: all 10 agent scripts - uses inject_env_vars_ssh
3. Fly.io: all 11 agent scripts - uses new inject_env_vars_fly
   - Added inject_env_vars_fly() to fly/lib/common.sh
   - Handles both .bashrc and .zshrc (Fly-specific requirement)
4. Sprite: amazonq, cline, gemini (3 scripts) - uses inject_env_vars_sprite

Total scripts converted in this commit: 25
Total scripts converted in Round 25 Task #1: 78 scripts

Each conversion replaces 11-15 lines of temp file management with a single
function call that handles creation, permissions, content generation, upload,
sourcing, and cleanup.

The only remaining ENV_TEMP patterns are DOTENV_TEMP in nanoclaw scripts,
which are agent-specific .env files and should remain as-is.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 04:15:02 +00:00
.claude Add guardrails: CLAUDE.md rules, hooks, pre-commit validation (#33) 2026-02-07 20:02:19 -08:00
.githooks Add guardrails: CLAUDE.md rules, hooks, pre-commit validation (#33) 2026-02-07 20:02:19 -08:00
.github/workflows ci: add shellcheck linting infrastructure 2026-02-08 01:08:34 +00:00
aws-lightsail refactor: Extract ENV_TEMP pattern to inject_env_vars_ssh (SSH providers) 2026-02-08 04:11:15 +00:00
cli refactor: Add trap-based cleanup for temp files in library code 2026-02-08 03:31:47 +00:00
digitalocean refactor: Extract ENV_TEMP pattern to inject_env_vars_ssh (SSH providers) 2026-02-08 04:11:15 +00:00
docs docs: add Round 6 refactoring summary 2026-02-08 00:55:36 +00:00
e2b refactor: Extract ENV_TEMP pattern to inject_env_vars_local (E2B) 2026-02-08 04:06:33 +00:00
fly refactor: Extract ENV_TEMP pattern to provider-specific inject functions 2026-02-08 04:15:02 +00:00
gcp refactor: Extract ENV_TEMP pattern to provider-specific inject functions 2026-02-08 04:15:02 +00:00
hetzner refactor: Extract ENV_TEMP pattern to inject_env_vars_ssh (SSH providers) 2026-02-08 04:11:15 +00:00
lambda refactor: Extract ENV_TEMP pattern to inject_env_vars_ssh (SSH providers) 2026-02-08 04:11:15 +00:00
linode refactor: Extract ENV_TEMP pattern to inject_env_vars_ssh (SSH providers) 2026-02-08 04:11:15 +00:00
modal refactor: Extract ENV_TEMP pattern to provider-specific inject functions 2026-02-08 04:15:02 +00:00
shared refactor: Extract ENV_TEMP pattern to inject_env_vars_local (Modal) 2026-02-08 04:04:01 +00:00
sprite refactor: Extract ENV_TEMP pattern to provider-specific inject functions 2026-02-08 04:15:02 +00:00
test refactor: Add default case to script-specific assertions 2026-02-08 03:56:29 +00:00
vultr refactor: Extract ENV_TEMP pattern to inject_env_vars_ssh (SSH providers) 2026-02-08 04:11:15 +00:00
.shellcheckrc ci: add shellcheck linting infrastructure 2026-02-08 01:08:34 +00:00
AUTONOMOUS_REFACTORING_COMPLETE.md Autonomous refactoring: 5 rounds, ~1,400 lines eliminated, production-ready 2026-02-08 00:06:46 +00:00
CLAUDE.md Add guardrails: CLAUDE.md rules, hooks, pre-commit validation (#33) 2026-02-07 20:02:19 -08:00
improve.sh refactor: add -e flag to improve.sh error handling 2026-02-08 03:21:18 +00:00
manifest.json Add guardrails: CLAUDE.md rules, hooks, pre-commit validation (#33) 2026-02-07 20:02:19 -08:00
README.md Update tagline 2026-02-08 04:13:17 +00:00
REFACTORING_SUMMARY.md Autonomous refactoring: 5 rounds, ~1,400 lines eliminated, production-ready 2026-02-08 00:06:46 +00:00

Spawn

Launch any agent on any cloud, powered by OpenRouter.

Install

curl -fsSL https://openrouter.ai/lab/spawn/cli/install.sh | bash

Usage

spawn                         # Interactive picker
spawn <agent> <cloud>         # Launch directly
spawn list                    # Show the full matrix

Examples

spawn claude sprite           # Claude Code on Sprite
spawn aider hetzner           # Aider on Hetzner Cloud
spawn goose digitalocean      # Goose on DigitalOcean
spawn codex vultr             # Codex CLI on Vultr

Commands

Command Description
spawn Interactive agent + cloud picker
spawn <agent> <cloud> Launch agent on cloud directly
spawn <agent> Show available clouds for an agent
spawn list Full agent x cloud matrix
spawn agents List all agents
spawn clouds List all cloud providers

Without the CLI

Every combination also works as a one-liner:

bash <(curl -fsSL https://openrouter.ai/lab/spawn/{cloud}/{agent}.sh)

Non-Interactive

Skip all prompts with environment variables:

OPENROUTER_API_KEY=sk-or-v1-xxxxx \
  spawn claude sprite

Each cloud has its own env vars for auth — see the cloud's README.

Matrix

Sprite Hetzner DigitalOcean Vultr Linode Lambda Lightsail GCP E2B Modal Fly.io
Claude Code
OpenClaw
NanoClaw
Aider
Goose
Codex CLI
Interpreter
Gemini CLI
Amazon Q
Cline
gptme

Development

git clone https://github.com/OpenRouterTeam/spawn.git
cd spawn
git config core.hooksPath .githooks