mirror of
https://github.com/OpenRouterTeam/spawn.git
synced 2026-05-09 11:10:10 +00:00
The README hero line and matrix table were stale -- showing 36 clouds and 514 combinations when the actual manifest has 38 clouds and 531 combinations. Adds missing Webdock and Alibaba Cloud columns and updates all agent rows to reflect current implementation status. Agent: ux-engineer Co-authored-by: A <6723574+louisgv@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
189 lines
10 KiB
Markdown
189 lines
10 KiB
Markdown
# Spawn
|
|
|
|
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](https://openrouter.ai). (ALPHA software, use at your own risk!)
|
|
|
|
**15 agents. 38 clouds. 531 combinations. Zero config.**
|
|
|
|
## Install
|
|
|
|
```bash
|
|
curl -fsSL https://openrouter.ai/labs/spawn/cli/install.sh | bash
|
|
```
|
|
|
|
Or install directly from GitHub:
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/cli/install.sh | bash
|
|
```
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
spawn # Interactive picker
|
|
spawn <agent> <cloud> # Launch directly
|
|
spawn matrix # Show the full agent x cloud matrix
|
|
```
|
|
|
|
### Examples
|
|
|
|
```bash
|
|
spawn # Interactive picker
|
|
spawn claude sprite # Claude Code on Sprite
|
|
spawn aider hetzner # Aider on Hetzner
|
|
spawn claude sprite --prompt "Fix bugs" # Non-interactive with prompt
|
|
spawn aider sprite -p "Add tests" # Short form
|
|
spawn claude # Show clouds available for Claude
|
|
```
|
|
|
|
### Commands
|
|
|
|
| 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>` | Show available clouds for an agent |
|
|
| `spawn matrix` | Full agent x cloud matrix |
|
|
| `spawn list` | Show previously launched spawns |
|
|
| `spawn agents` | List all agents |
|
|
| `spawn clouds` | List all cloud providers |
|
|
| `spawn update` | Check for CLI updates |
|
|
|
|
### Without the CLI
|
|
|
|
Every combination works as a one-liner — no install required:
|
|
|
|
```bash
|
|
bash <(curl -fsSL https://openrouter.ai/labs/spawn/{cloud}/{agent}.sh)
|
|
```
|
|
|
|
### Non-Interactive Mode
|
|
|
|
Skip prompts by providing environment variables:
|
|
|
|
```bash
|
|
# OpenRouter API key (required for all agents)
|
|
export OPENROUTER_API_KEY=sk-or-v1-xxxxx
|
|
|
|
# Cloud-specific credentials (varies by provider)
|
|
export SPRITE_API_KEY=... # For Sprite
|
|
export HCLOUD_TOKEN=... # For Hetzner
|
|
export DO_API_TOKEN=... # For DigitalOcean
|
|
|
|
# Run non-interactively
|
|
spawn claude sprite
|
|
```
|
|
|
|
You can also use inline environment variables:
|
|
|
|
```bash
|
|
OPENROUTER_API_KEY=sk-or-v1-xxxxx spawn claude sprite
|
|
```
|
|
|
|
Get your OpenRouter API key at: https://openrouter.ai/settings/keys
|
|
|
|
For cloud-specific auth, see each cloud's README in this repository.
|
|
|
|
## Matrix
|
|
|
|
| | [Sprite](sprite/) | [Hetzner Cloud](hetzner/) | [DigitalOcean](digitalocean/) | [Vultr](vultr/) | [Linode (Akamai)](linode/) | [AWS Lightsail](aws-lightsail/) | [GCP Compute Engine](gcp/) | [GitHub Codespaces](github-codespaces/) | [CodeSandbox](codesandbox/) | [E2B](e2b/) | [Modal](modal/) | [Fly.io](fly/) | [Civo](civo/) | [Scaleway](scaleway/) | [Daytona](daytona/) | [UpCloud](upcloud/) | [BinaryLane](binarylane/) | [Latitude.sh](latitude/) | [OVHcloud](ovh/) | [Kamatera](kamatera/) | [Cherry Servers](cherry/) | [Oracle Cloud Infrastructure](oracle/) | [Koyeb](koyeb/) | [Northflank](northflank/) | [Railway](railway/) | [Render](render/) | [IONOS Cloud](ionos/) | [Exoscale](exoscale/) | [Contabo](contabo/) | [Hostinger](hostinger/) | [Netcup](netcup/) | [Local Machine](local/) | [RamNode](ramnode/) | [Atlantic.Net](atlanticnet/) | [HOSTKEY](hostkey/) | [CloudSigma](cloudsigma/) | [Webdock](webdock/) | [Alibaba Cloud](alibabacloud/) |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| [**Claude Code**](https://claude.ai) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
|
|
| [**OpenClaw**](https://github.com/OpenRouterTeam/openclaw) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | |
|
|
| [**NanoClaw**](https://github.com/gavrielc/nanoclaw) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | |
|
|
| [**Aider**](https://github.com/paul-gauthier/aider) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
| [**Goose**](https://github.com/block/goose) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | |
|
|
| [**Codex CLI**](https://github.com/openai/codex) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | ✓ |
|
|
| [**Open Interpreter**](https://github.com/OpenInterpreter/open-interpreter) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | |
|
|
| [**Gemini CLI**](https://github.com/google-gemini/gemini-cli) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | ✓ |
|
|
| [**Amazon Q CLI**](https://aws.amazon.com/q/developer/) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | |
|
|
| [**Cline**](https://github.com/cline/cline) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | |
|
|
| [**gptme**](https://github.com/gptme/gptme) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | |
|
|
| [**OpenCode**](https://github.com/opencode-ai/opencode) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | |
|
|
| [**Plandex**](https://github.com/plandex-ai/plandex) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | |
|
|
| [**Kilo Code**](https://github.com/Kilo-Org/kilocode) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | |
|
|
| [**Continue**](https://github.com/continuedev/continue) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | |
|
|
### How it works
|
|
|
|
Each cell in the matrix is a self-contained bash script that:
|
|
|
|
1. Provisions a server on the cloud provider
|
|
2. Installs the agent
|
|
3. Injects your [OpenRouter](https://openrouter.ai) API key so every agent uses the same billing
|
|
4. Drops you into an interactive session
|
|
|
|
Scripts work standalone (`bash <(curl ...)`) or through the CLI.
|
|
|
|
## Development
|
|
|
|
```bash
|
|
git clone https://github.com/OpenRouterTeam/spawn.git
|
|
cd spawn
|
|
git config core.hooksPath .githooks
|
|
```
|
|
|
|
### Structure
|
|
|
|
```
|
|
{cloud}/lib/common.sh # Cloud provider primitives (provision, SSH, cleanup)
|
|
{cloud}/{agent}.sh # Agent deployment script
|
|
shared/common.sh # Shared utilities (OAuth, logging, SSH helpers)
|
|
cli/ # TypeScript CLI (bun)
|
|
manifest.json # Source of truth for the matrix
|
|
```
|
|
|
|
### Adding a new cloud
|
|
|
|
1. Create `{cloud}/lib/common.sh` with provisioning primitives
|
|
2. Add to `manifest.json`
|
|
3. Implement agent scripts using the cloud's primitives
|
|
4. See [CLAUDE.md](CLAUDE.md) for full contributor guide
|
|
|
|
### Adding a new agent
|
|
|
|
1. Add to `manifest.json`
|
|
2. Implement on 1+ cloud by adapting an existing agent script
|
|
3. Must support OpenRouter via env var injection
|
|
|
|
## Contributing
|
|
|
|
The easiest way to contribute is by testing and reporting issues. You don't need to write code.
|
|
|
|
### Test a cloud provider
|
|
|
|
Pick any agent + cloud combination from the matrix and try it out:
|
|
|
|
```bash
|
|
spawn claude hetzner # or any combination
|
|
```
|
|
|
|
If something breaks, hangs, or behaves unexpectedly, open an issue using the [bug report template](https://github.com/OpenRouterTeam/spawn/issues/new?template=bug_report.yml). Include:
|
|
|
|
- The exact command you ran
|
|
- The cloud provider and agent
|
|
- What happened vs. what you expected
|
|
- Any error output
|
|
|
|
### Request a cloud or agent
|
|
|
|
Want to see a specific cloud provider or agent supported? Use the dedicated templates:
|
|
|
|
- [Request a cloud provider](https://github.com/OpenRouterTeam/spawn/issues/new?template=cloud_request.yml)
|
|
- [Request an agent](https://github.com/OpenRouterTeam/spawn/issues/new?template=agent_request.yml)
|
|
- [Request a CLI feature](https://github.com/OpenRouterTeam/spawn/issues/new?template=cli_feature_request.yml)
|
|
|
|
Requests with real-world use cases get prioritized.
|
|
|
|
### Report auth or credential issues
|
|
|
|
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.
|
|
|
|
### Code contributions
|
|
|
|
See [CLAUDE.md](CLAUDE.md) for the full contributor guide covering shell script rules, testing, and the shared library pattern.
|
|
|
|
## License
|
|
|
|
[Apache 2.0](LICENSE)
|