fix(e2e): double GCP cloud-init wait timeout to 10 minutes for Node install (#2713)

* chore: update agent GitHub star counts

* chore: update agent GitHub star counts

* chore: update agent GitHub star counts

* chore: update agent GitHub star counts

* chore: update agent GitHub star counts

* chore: update agent GitHub star counts

* chore: update agent GitHub star counts

* chore: update agent GitHub star counts

* chore: update agent GitHub star counts

* chore: update agent GitHub star counts

* chore: update agent GitHub star counts

* chore: update agent GitHub star counts

* chore: update agent GitHub star counts

* chore: update agent GitHub star counts

* chore: update agent GitHub star counts

* chore: update agent GitHub star counts

* fix(gcp): double cloud-init wait timeout to 120 attempts (10 min)

GCP startup scripts installing Node.js 22 via `n` from curl take longer
than 5 min on cold starts. The previous 60-attempt (5 min) poll timed
out with "Startup script may not have completed, continuing..." and
proceeded to run `npm install -g @kilocode/cli` before npm was available,
causing `npm: command not found` errors.

Increase `maxAttempts` from 60 to 120 (10 min) in `waitForCloudInit` to
give the Node install enough time to complete on GCP cold starts.

Confirmed by E2E run: GCP kilocode failed with npm not found after all 60
poll attempts exhausted; all other GCP agents passed (they don't need Node).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: spawn-qa-bot <qa@openrouter.ai>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
A 2026-03-17 11:51:41 -07:00 committed by GitHub
parent 34785a9a63
commit 0e5bfd830b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 94 additions and 34 deletions

View file

@ -28,19 +28,26 @@
}
},
"icon": "https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/assets/agents/claude.png",
"featured_cloud": ["digitalocean", "sprite"],
"featured_cloud": [
"digitalocean",
"sprite"
],
"creator": "Anthropic",
"repo": "anthropics/claude-code",
"license": "Proprietary",
"created": "2025-02",
"added": "2025-06",
"github_stars": 73410,
"stars_updated": "2026-03-04",
"github_stars": 79093,
"stars_updated": "2026-03-17",
"language": "Shell",
"runtime": "node",
"category": "cli",
"tagline": "Anthropic's AI coding agent — plan, build, and ship code across your entire codebase",
"tags": ["coding", "terminal", "agentic"]
"tags": [
"coding",
"terminal",
"agentic"
]
},
"openclaw": {
"name": "OpenClaw",
@ -61,19 +68,26 @@
}
},
"icon": "https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/assets/agents/openclaw.png",
"featured_cloud": ["digitalocean", "sprite"],
"featured_cloud": [
"digitalocean",
"sprite"
],
"creator": "OpenClaw",
"repo": "openclaw/openclaw",
"license": "MIT",
"created": "2025-11",
"added": "2025-11",
"github_stars": 256970,
"stars_updated": "2026-03-04",
"github_stars": 319742,
"stars_updated": "2026-03-17",
"language": "TypeScript",
"runtime": "bun",
"category": "tui",
"tagline": "Your personal AI — any channel, any model, from the terminal",
"tags": ["coding", "tui", "gateway"]
"tags": [
"coding",
"tui",
"gateway"
]
},
"zeroclaw": {
"name": "ZeroClaw",
@ -99,19 +113,27 @@
},
"notes": "Rust-based agent framework built by Harvard/MIT/Sundai.Club communities. Natively supports OpenRouter via OPENROUTER_API_KEY + ZEROCLAW_PROVIDER=openrouter. Requires compilation from source (~5-10 min).",
"icon": "https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/assets/agents/zeroclaw.png",
"featured_cloud": ["digitalocean", "sprite"],
"featured_cloud": [
"digitalocean",
"sprite"
],
"creator": "Sundai.Club",
"repo": "zeroclaw-labs/zeroclaw",
"license": "Apache-2.0",
"created": "2026-02",
"added": "2025-12",
"github_stars": 21867,
"stars_updated": "2026-03-04",
"github_stars": 27636,
"stars_updated": "2026-03-17",
"language": "Rust",
"runtime": "binary",
"category": "cli",
"tagline": "Fast, small, fully autonomous AI infrastructure — deploy anywhere, swap anything",
"tags": ["coding", "terminal", "rust", "autonomous"]
"tags": [
"coding",
"terminal",
"rust",
"autonomous"
]
},
"codex": {
"name": "Codex CLI",
@ -126,19 +148,26 @@
},
"notes": "Works with OpenRouter via OPENAI_BASE_URL override pointing to openrouter.ai/api/v1",
"icon": "https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/assets/agents/codex.png",
"featured_cloud": ["digitalocean", "sprite"],
"featured_cloud": [
"digitalocean",
"sprite"
],
"creator": "OpenAI",
"repo": "openai/codex",
"license": "Apache-2.0",
"created": "2025-04",
"added": "2025-07",
"github_stars": 62925,
"stars_updated": "2026-03-04",
"github_stars": 65879,
"stars_updated": "2026-03-17",
"language": "Rust",
"runtime": "binary",
"category": "cli",
"tagline": "OpenAI's lightweight coding agent for the terminal",
"tags": ["coding", "terminal", "openai"]
"tags": [
"coding",
"terminal",
"openai"
]
},
"opencode": {
"name": "OpenCode",
@ -151,19 +180,26 @@
},
"notes": "Natively supports OpenRouter via OPENROUTER_API_KEY env var. Go-based TUI using Bubble Tea.",
"icon": "https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/assets/agents/opencode.png",
"featured_cloud": ["digitalocean", "sprite"],
"featured_cloud": [
"digitalocean",
"sprite"
],
"creator": "SST",
"repo": "sst/opencode",
"license": "MIT",
"created": "2025-04",
"added": "2025-08",
"github_stars": 115408,
"stars_updated": "2026-03-04",
"github_stars": 123981,
"stars_updated": "2026-03-17",
"language": "TypeScript",
"runtime": "go",
"category": "tui",
"tagline": "The open-source AI coding agent",
"tags": ["coding", "tui", "go"]
"tags": [
"coding",
"tui",
"go"
]
},
"kilocode": {
"name": "Kilo Code",
@ -178,19 +214,27 @@
},
"notes": "Natively supports OpenRouter as a provider via KILO_PROVIDER_TYPE=openrouter. CLI installable via npm as @kilocode/cli, invocable as 'kilocode' or 'kilo'.",
"icon": "https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/assets/agents/kilocode.png",
"featured_cloud": ["digitalocean", "sprite"],
"featured_cloud": [
"digitalocean",
"sprite"
],
"creator": "Kilo-Org",
"repo": "Kilo-Org/kilocode",
"license": "MIT",
"created": "2025-03",
"added": "2025-09",
"github_stars": 16172,
"stars_updated": "2026-03-04",
"github_stars": 16813,
"stars_updated": "2026-03-17",
"language": "TypeScript",
"runtime": "node",
"category": "cli",
"tagline": "All-in-one AI coding platform — 100+ providers, one CLI",
"tags": ["coding", "terminal", "agentic", "engineering"]
"tags": [
"coding",
"terminal",
"agentic",
"engineering"
]
},
"hermes": {
"name": "Hermes Agent",
@ -205,19 +249,27 @@
},
"notes": "Natively supports OpenRouter via OPENROUTER_API_KEY. Also works via OPENAI_BASE_URL + OPENAI_API_KEY for OpenAI-compatible mode. Installs Python 3.11 via uv.",
"icon": "https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/assets/agents/hermes.png",
"featured_cloud": ["digitalocean", "sprite"],
"featured_cloud": [
"digitalocean",
"sprite"
],
"creator": "Nous Research",
"repo": "NousResearch/hermes-agent",
"license": "MIT",
"created": "2025-06",
"added": "2026-02",
"github_stars": 1617,
"stars_updated": "2026-03-04",
"github_stars": 8365,
"stars_updated": "2026-03-17",
"language": "Python",
"runtime": "python",
"category": "cli",
"tagline": "Persistent AI agent with memory, tools, and multi-platform messaging",
"tags": ["agent", "messaging", "memory", "tools"]
"tags": [
"agent",
"messaging",
"memory",
"tools"
]
},
"junie": {
"name": "Junie",
@ -231,19 +283,27 @@
},
"notes": "Natively supports OpenRouter via JUNIE_OPENROUTER_API_KEY. Subagent tasks may require GPT-4.1 Mini, GPT-4.1, or GPT-5 models to be enabled on your OpenRouter account.",
"icon": "https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/assets/agents/junie.png",
"featured_cloud": ["digitalocean", "sprite"],
"featured_cloud": [
"digitalocean",
"sprite"
],
"creator": "JetBrains",
"repo": "JetBrains/junie",
"license": "Proprietary",
"created": "2026-03",
"added": "2026-03",
"github_stars": 5000,
"stars_updated": "2026-03-07",
"github_stars": 107,
"stars_updated": "2026-03-17",
"language": "TypeScript",
"runtime": "node",
"category": "cli",
"tagline": "JetBrains' AI coding agent — BYOK with OpenRouter, IDE-quality intelligence in the terminal",
"tags": ["coding", "terminal", "jetbrains", "byok"]
"tags": [
"coding",
"terminal",
"jetbrains",
"byok"
]
}
},
"clouds": {

View file

@ -1,6 +1,6 @@
{
"name": "@openrouter/spawn",
"version": "0.20.9",
"version": "0.20.10",
"type": "module",
"bin": {
"spawn": "cli.js"

View file

@ -899,7 +899,7 @@ async function waitForSsh(maxAttempts = 36): Promise<void> {
});
}
export async function waitForCloudInit(maxAttempts = 60): Promise<void> {
export async function waitForCloudInit(maxAttempts = 120): Promise<void> {
await waitForSsh();
logStep("Waiting for startup script completion...");