feat: add local/hermes to complete the 7x7 matrix (#2091)

Fixes #2079 — local/hermes was the only remaining missing entry in the
cloud×agent matrix. All 49 entries are now implemented.

Agent: ux-engineer

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
A 2026-03-01 19:04:38 -08:00 committed by GitHub
parent 6dabe88016
commit b755c6966c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 33 additions and 2 deletions

View file

@ -429,7 +429,7 @@
"sprite/codex": "implemented",
"sprite/opencode": "implemented",
"sprite/kilocode": "implemented",
"local/hermes": "missing",
"local/hermes": "implemented",
"hetzner/hermes": "implemented",
"aws/hermes": "implemented",
"daytona/hermes": "implemented",

View file

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

View file

@ -14,6 +14,7 @@ spawn openclaw local
spawn zeroclaw local
spawn codex local
spawn kilocode local
spawn hermes local
```
Or run directly without the CLI:
@ -24,6 +25,7 @@ bash <(curl -fsSL https://openrouter.ai/labs/spawn/local/openclaw.sh)
bash <(curl -fsSL https://openrouter.ai/labs/spawn/local/zeroclaw.sh)
bash <(curl -fsSL https://openrouter.ai/labs/spawn/local/codex.sh)
bash <(curl -fsSL https://openrouter.ai/labs/spawn/local/kilocode.sh)
bash <(curl -fsSL https://openrouter.ai/labs/spawn/local/hermes.sh)
```
## Non-Interactive Mode

29
sh/local/hermes.sh Executable file
View file

@ -0,0 +1,29 @@
#!/bin/bash
set -eo pipefail
# Thin shim: ensures bun is available, runs bundled local.js (local or from GitHub release)
_ensure_bun() {
if command -v bun &>/dev/null; then return 0; fi
printf '\033[0;36mInstalling bun...\033[0m\n' >&2
curl -fsSL --show-error https://bun.sh/install | bash >/dev/null || { printf '\033[0;31mFailed to install bun\033[0m\n' >&2; exit 1; }
export PATH="$HOME/.bun/bin:$PATH"
command -v bun &>/dev/null || { printf '\033[0;31mbun not found after install\033[0m\n' >&2; exit 1; }
}
_ensure_bun
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" 2>/dev/null && pwd)"
# Local checkout — run from source
if [[ -n "$SCRIPT_DIR" && -f "$SCRIPT_DIR/../../packages/cli/src/local/main.ts" ]]; then
exec bun run "$SCRIPT_DIR/../../packages/cli/src/local/main.ts" hermes "$@"
fi
# Remote — download bundled local.js from GitHub release
LOCAL_JS=$(mktemp)
trap 'rm -f "$LOCAL_JS"' EXIT
curl -fsSL "https://github.com/OpenRouterTeam/spawn/releases/download/local-latest/local.js" -o "$LOCAL_JS" \
|| { printf '\033[0;31mFailed to download local.js\033[0m\n' >&2; exit 1; }
exec bun run "$LOCAL_JS" hermes "$@"