mirror of
https://github.com/OpenRouterTeam/spawn.git
synced 2026-04-30 12:59:32 +00:00
Security: - Fix command injection in modal/lib/common.sh (run_server, upload_file, interactive_session) - Fix command injection in fly/lib/common.sh (run_server, upload_file, interactive_session) - All container providers now use printf '%q' for proper shell escaping Complexity: - Extract _api_should_retry_on_error() helper in shared/common.sh (-19 lines) - Refactor scaleway_api and upcloud_api to use shared retry helper (-24 lines) - Extract _save_fly_token() helper in fly/lib/common.sh (-11 lines) - Extract validateAndGetAgent() in commands.ts, reducing cmdRun/cmdAgentInfo duplication - Refactor cmdList column width calculation to use calculateColumnWidth() UX: - Add actionable next steps to error messages in shared/common.sh - Improve CLI bash fallback error messages with guidance (spawn.sh) - Add OAuth progress indicator during browser authentication wait - Show invalid model ID value and link to openrouter.ai/models - Add troubleshooting steps for agent installation failures Tests: - Update test assertions in test/run.sh to match refactored patterns - All tests passing: 74 TypeScript + 75 bash = 149 total, 0 failures Co-authored-by: A <6723574+louisgv@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| lib | ||
| aider.sh | ||
| amazonq.sh | ||
| claude.sh | ||
| cline.sh | ||
| codex.sh | ||
| gemini.sh | ||
| goose.sh | ||
| gptme.sh | ||
| interpreter.sh | ||
| nanoclaw.sh | ||
| openclaw.sh | ||
| opencode.sh | ||
| plandex.sh | ||
| README.md | ||
Modal
Modal sandboxed containers via Python SDK. Modal
No SSH — uses Modal Python SDK for exec. Sub-second cold starts. Requires pip install modal.
Agents
Claude Code
bash <(curl -fsSL https://openrouter.ai/lab/spawn/modal/claude.sh)
OpenClaw
bash <(curl -fsSL https://openrouter.ai/lab/spawn/modal/openclaw.sh)
NanoClaw
bash <(curl -fsSL https://openrouter.ai/lab/spawn/modal/nanoclaw.sh)
Aider
bash <(curl -fsSL https://openrouter.ai/lab/spawn/modal/aider.sh)
Goose
bash <(curl -fsSL https://openrouter.ai/lab/spawn/modal/goose.sh)
Codex CLI
bash <(curl -fsSL https://openrouter.ai/lab/spawn/modal/codex.sh)
Open Interpreter
bash <(curl -fsSL https://openrouter.ai/lab/spawn/modal/interpreter.sh)
Gemini CLI
bash <(curl -fsSL https://openrouter.ai/lab/spawn/modal/gemini.sh)
Amazon Q CLI
bash <(curl -fsSL https://openrouter.ai/lab/spawn/modal/amazonq.sh)
Cline
bash <(curl -fsSL https://openrouter.ai/lab/spawn/modal/cline.sh)
Non-Interactive Mode
MODAL_SANDBOX_NAME=dev-mk1 \
OPENROUTER_API_KEY=sk-or-v1-xxxxx \
bash <(curl -fsSL https://openrouter.ai/lab/spawn/modal/claude.sh)