mirror of
https://github.com/OpenRouterTeam/spawn.git
synced 2026-05-10 04:09:40 +00:00
* feat: add QA upgrade — macOS compat linter, per-agent mock assertions
Layer 1: macOS compat linter (test/macos-compat.sh)
- 12 rules (MC001–MC012) catching bash 3.2 incompatibilities
- Detects: base64 -w0 file args, non-portable echo flags, source <(),
((var++)), read -d, nounset flag, sed -i, date %N, local -n,
declare -A, ${var,,}, and |&
- Added to CI lint.yml in warn-only mode for burn-in
- Integrated as Phase 0.5 in qa-dry-run.sh
Layer 2: Per-agent mock assertions
- test/fixtures/_shared_agent_assertions.sh with install checks
for all 15 agents (claude, openclaw, aider, goose, etc.)
- Integrated into test/mock.sh via _run_agent_assertions()
Also includes branch fixes:
- Fix base64 -w0 to use stdin redirect (aws, daytona, fly)
- Fix fly/openclaw to use npm install instead of broken curl|bash
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add E2E test harness and integrate into QA pipeline
Add test/e2e.sh — a full E2E test harness that provisions real servers,
installs agents, and verifies setup across all clouds. Features:
- Smoke test (one canary agent per cloud) and full matrix modes
- Credential auto-detection for 8 clouds
- Per-cloud preflight validation (sequential) then parallel agent tests
- Stale server cleanup, timing history, cross-cloud comparison
- Auto-fix and optimization phases via Claude agents
- macOS bash 3.2 compatible
Integrate E2E as Phase 5 in both qa-cycle.sh and qa-dry-run.sh:
- Runs after mock tests pass, gated on cloud credentials
- Phase 5b auto-fixes failures using per-agent worktree branches
- Parses results and includes in QA summary
Also fixes:
- shared/common.sh: honour SPAWN_NON_INTERACTIVE=1 in safe_read()
- aws/lib/common.sh: fix SSH key import (use cat instead of base64,
handle race condition on concurrent imports)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| lib | ||
| aider.sh | ||
| amazonq.sh | ||
| claude.sh | ||
| cline.sh | ||
| codex.sh | ||
| continue.sh | ||
| gemini.sh | ||
| goose.sh | ||
| gptme.sh | ||
| interpreter.sh | ||
| kilocode.sh | ||
| nanoclaw.sh | ||
| openclaw.sh | ||
| opencode.sh | ||
| plandex.sh | ||
| README.md | ||
AWS Lightsail
AWS Lightsail instances via AWS CLI. AWS Lightsail
Uses 'ubuntu' user instead of 'root'. Requires AWS CLI installed and configured.
Agents
Claude Code
bash <(curl -fsSL https://openrouter.ai/labs/spawn/aws/claude.sh)
OpenClaw
bash <(curl -fsSL https://openrouter.ai/labs/spawn/aws/openclaw.sh)
NanoClaw
bash <(curl -fsSL https://openrouter.ai/labs/spawn/aws/nanoclaw.sh)
Aider
bash <(curl -fsSL https://openrouter.ai/labs/spawn/aws/aider.sh)
Goose
bash <(curl -fsSL https://openrouter.ai/labs/spawn/aws/goose.sh)
Codex CLI
bash <(curl -fsSL https://openrouter.ai/labs/spawn/aws/codex.sh)
Open Interpreter
bash <(curl -fsSL https://openrouter.ai/labs/spawn/aws/interpreter.sh)
Gemini CLI
bash <(curl -fsSL https://openrouter.ai/labs/spawn/aws/gemini.sh)
Amazon Q CLI
bash <(curl -fsSL https://openrouter.ai/labs/spawn/aws/amazonq.sh)
Cline
bash <(curl -fsSL https://openrouter.ai/labs/spawn/aws/cline.sh)
gptme
bash <(curl -fsSL https://openrouter.ai/labs/spawn/aws/gptme.sh)
OpenCode
bash <(curl -fsSL https://openrouter.ai/labs/spawn/aws/opencode.sh)
Plandex
bash <(curl -fsSL https://openrouter.ai/labs/spawn/aws/plandex.sh)
Non-Interactive Mode
LIGHTSAIL_SERVER_NAME=dev-mk1 \
OPENROUTER_API_KEY=sk-or-v1-xxxxx \
bash <(curl -fsSL https://openrouter.ai/labs/spawn/aws/claude.sh)