Launch any AI agent on any cloud with a single command. Coding agents, research agents, self-hosted AI tools — Spawn deploys them all. All models powered by OpenRouter. (ALPHA software, use at your own risk!)
6 agents. 7 clouds. 42 working combinations. Zero config.
macOS / Linux — and Windows users inside a WSL2 terminal (Ubuntu, Debian, etc.):
curl -fsSL https://openrouter.ai/labs/spawn/cli/install.sh | bashWindows PowerShell (outside WSL):
irm https://openrouter.ai/labs/spawn/cli/install.ps1 | iexspawn # Interactive picker
spawn <agent> <cloud> # Launch directly
spawn matrix # Show the full agent x cloud matrixspawn # Interactive picker
spawn claude sprite # Claude Code on Sprite
spawn codex hetzner # Codex CLI on Hetzner
spawn claude sprite --prompt "Fix bugs" # Non-interactive with prompt
spawn codex sprite -p "Add tests" # Short form
spawn claude # Show clouds available for Claude
spawn delete # Delete a running server
spawn delete -c hetzner # Delete a server on Hetzner| Command | Description |
|---|---|
spawn |
Interactive agent + cloud picker |
spawn <agent> <cloud> |
Launch agent on cloud directly |
spawn <agent> <cloud> --dry-run |
Preview without provisioning |
spawn <agent> <cloud> -p "text" |
Non-interactive with prompt |
spawn <agent> <cloud> --prompt-file f.txt |
Prompt from file |
spawn <agent> <cloud> --debug |
Show all commands being executed |
spawn <agent> |
Show available clouds for an agent |
spawn <cloud> |
Show available agents for a cloud |
spawn matrix |
Full agent x cloud matrix |
spawn list |
Browse and rerun previous spawns |
spawn list <filter> |
Filter history by agent or cloud name |
spawn list -a <agent> |
Filter history by agent |
spawn list -c <cloud> |
Filter history by cloud |
spawn list --clear |
Clear all spawn history |
spawn last |
Instantly rerun the most recent spawn |
spawn agents |
List all agents with descriptions |
spawn clouds |
List all cloud providers |
spawn update |
Check for CLI updates |
spawn delete |
Interactively select and destroy a cloud server |
spawn delete -a <agent> |
Filter servers to delete by agent |
spawn delete -c <cloud> |
Filter servers to delete by cloud |
spawn help |
Show help message |
spawn version |
Show version |
Every combination works as a one-liner — no install required:
bash <(curl -fsSL https://openrouter.ai/labs/spawn/{cloud}/{agent}.sh)Skip prompts by providing environment variables:
# OpenRouter API key (required for all agents)
export OPENROUTER_API_KEY=sk-or-v1-xxxxx
# Cloud-specific credentials (varies by provider)
# Note: Sprite uses `sprite login` for authentication
export HCLOUD_TOKEN=... # For Hetzner
export DO_API_TOKEN=... # For DigitalOcean
# Run non-interactively
spawn claude hetznerYou can also use inline environment variables:
OPENROUTER_API_KEY=sk-or-v1-xxxxx spawn claude spriteGet your OpenRouter API key at: https://openrouter.ai/settings/keys
For cloud-specific auth, see each cloud's README in this repository.
If spawn fails to install, try these steps:
-
Check bun version: spawn requires bun >= 1.2.0
bun --version bun upgrade # if needed -
Manual installation: If auto-install fails, install bun first
curl -fsSL https://bun.sh/install | bash source ~/.bashrc # or ~/.zshrc for zsh curl -fsSL https://openrouter.ai/labs/spawn/cli/install.sh | bash
-
PATH issues: If
spawncommand not found after install# Add to your shell config (~/.bashrc or ~/.zshrc) export PATH="$HOME/.local/bin:$PATH"
If an agent fails to install or launch on a cloud:
-
Check credentials: Ensure cloud provider credentials are set
# Example for Hetzner export HCLOUD_TOKEN=your-token-here spawn claude hetzner
-
Try a different cloud: Some clouds may have temporary issues
spawn <agent> # Interactive picker to choose another cloud
-
Use --dry-run: Preview what spawn will do before provisioning
spawn claude hetzner --dry-run
-
Check cloud status: Visit your cloud provider's status page
- Many failures are transient (network timeouts, package mirror issues)
- Retrying often succeeds
- View command history:
spawn listshows all previous launches - Rerun last session:
spawn lastorspawn rerun - Check version:
spawn versionshows CLI version and cache status - Update spawn:
spawn updatechecks for the latest version - Report bugs: Open an issue at https://github.com/OpenRouterTeam/spawn/issues
| Local Machine | Hetzner Cloud | AWS Lightsail | Daytona | DigitalOcean | GCP Compute Engine | Sprite | |
|---|---|---|---|---|---|---|---|
| Claude Code | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| OpenClaw | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ZeroClaw | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Codex CLI | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| OpenCode | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Kilo Code | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Each cell in the matrix is a self-contained bash script that:
- Provisions a server on the cloud provider
- Installs the agent
- Injects your OpenRouter API key so every agent uses the same billing
- Drops you into an interactive session
Scripts work standalone (bash <(curl ...)) or through the CLI.
git clone https://github.com/OpenRouterTeam/spawn.git
cd spawn
git config core.hooksPath .githookssh/{cloud}/{agent}.sh # Agent deployment script (thin bash → bun wrapper)
packages/cli/ # TypeScript CLI — all provisioning logic (bun)
manifest.json # Source of truth for the matrix
- Add cloud-specific TypeScript module in
packages/cli/src/{cloud}/ - Add to
manifest.json - Implement agent scripts
- See CLAUDE.md for full contributor guide
- Add to
manifest.json - Implement on 1+ cloud by adapting an existing agent script
- Must support OpenRouter via env var injection
The easiest way to contribute is by testing and reporting issues. You don't need to write code.
Pick any agent + cloud combination from the matrix and try it out:
spawn claude hetzner # or any combinationIf something breaks, hangs, or behaves unexpectedly, open an issue using the bug report template. Include:
- The exact command you ran
- The cloud provider and agent
- What happened vs. what you expected
- Any error output
Want to see a specific cloud provider or agent supported? Use the dedicated templates:
Requests with real-world use cases get prioritized.
Cloud provider APIs change frequently. If you hit authentication failures, expired tokens, or permission errors on a provider that previously worked, please report it — these are high-priority fixes.
See CLAUDE.md for the full contributor guide covering shell script rules, testing, and the shared library pattern.