agents/agents.json
Rama main · réplica de lectura del repositorio original.
{
"schema_version": "1",
"agents": [
{
"schema_version": "1",
"id": "aider",
"display_name": "Aider",
"vendor": "OpenAI / Anthropic",
"homepage": "https://aider.chat/docs/llms/openai-compat.html",
"binary_names": [
"aider"
],
"args": [],
"install": "python -m pip install aider-chat",
"wire_protocol": "openai-chat",
"injection": {
"method": "env",
"env": {
"OPENAI_API_BASE": "{{cave_base_url}}/openai/v1"
}
},
"attribution": {
"header": "x-cave-agent"
},
"tested_agent_version": "0.86.2",
"injection_completeness": "declarative",
"fallback": "generic-env",
"maintainer": null
},
{
"schema_version": "1",
"id": "claude",
"display_name": "Claude Code",
"vendor": "Anthropic",
"homepage": "https://code.claude.com/docs",
"binary_names": [
"claude"
],
"args": [],
"install": "npm i -g @anthropic-ai/claude-code",
"wire_protocol": "anthropic-messages",
"injection": {
"method": "env",
"env": {
"ANTHROPIC_BASE_URL": "{{cave_base_url}}",
"ANTHROPIC_AUTH_TOKEN": "{{cave_api_key}}"
}
},
"skills": {
"format": "skill-md",
"user_dirs": [
"~/.claude/skills"
],
"project_dirs": [
".claude/skills"
]
},
"command_hook": {
"method": "claude-pretooluse"
},
"memory_hook": {
"method": "claude-userpromptsubmit"
},
"attribution": {
"header": "x-cave-agent"
},
"tested_agent_version": "2.1.318",
"injection_completeness": "builder-assisted",
"last_verified_at": "2026-11-06",
"verified_by": "CI pinned-binary probe (claude 2.1.318, agent-conformance pinned-upstream-binary lane on ubuntu-latest with Node 24.16.0, agents/probe-installed.mjs: --version and --help both exit 0); route probe last run on 2.1.308, not re-run on 2.1.318, from a scratch HOME and CLAUDE_CONFIG_DIR with onboarding pre-accepted in ~/.claude.json: ANTHROPIC_BASE_URL redirection observed reaching POST /v1/messages?beta=true under the injected base URL, the injected ANTHROPIC_AUTH_TOKEN (a dummy value) arriving as Authorization: Bearer with no x-api-key, and the run completed (exit 0, stop_reason end_turn). The unauthenticated HEAD /api/hello reachability preflight first recorded on 2.1.306 is still sent to the same injected base URL before the turn, now with a Bun/1.4.4 user-agent rather than the CLI's own -- a mount that answers /v1/messages but rejects HEAD on an unknown path is worth checking against this. The turn itself is a streaming request (stream: true) carrying anthropic-beta: claude-code-20250219 and user-agent claude-cli/2.1.308 (external, sdk-cli)",
"fallback": "generic-env",
"maintainer": null
},
{
"schema_version": "1",
"id": "codex",
"display_name": "OpenAI Codex CLI",
"vendor": "OpenAI",
"homepage": "https://developers.openai.com/codex",
"binary_names": [
"codex"
],
"args": [],
"install": "npm i -g @openai/codex",
"wire_protocol": "openai-responses",
"injection": {
"method": "env",
"env": {}
},
"skills": {
"format": "skill-md",
"user_dirs": [
"~/.codex/skills"
],
"project_dirs": []
},
"command_hook": {
"method": "codex-pretooluse",
"file": "~/.codex/AGENTS.md"
},
"attribution": {
"header": "x-cave-agent"
},
"tested_agent_version": "0.166.0",
"injection_completeness": "code-only",
"last_verified_at": "2026-11-02",
"verified_by": "Windows x64 route probes (@openai/codex 0.166.0, Node 24.16.0; --version and --help exit 0): actual caveman wrap codex exec from two scratch homes sent POST /w/codex/v1/responses with dummy bearer auth, model gpt-5.5 from config.toml (no CLI model override), stream true; scripted SSE replies consumed, both exit 0. Attribution uses /w/codex; X-Cave-Agent header absent. API-key path with proxy/MCP/shrink/browse disabled; no subscription, compression, live-provider or task-quality verification",
"fallback": "generic-env",
"maintainer": null
},
{
"schema_version": "1",
"id": "gemini",
"display_name": "Gemini CLI",
"vendor": "Google",
"homepage": "https://github.com/google-gemini/gemini-cli",
"binary_names": [
"gemini"
],
"args": [],
"install": "npm i -g @google/gemini-cli",
"wire_protocol": "gemini-generatecontent",
"injection": {
"method": "env",
"env": {
"GOOGLE_GEMINI_BASE_URL": "{{cave_base_url}}",
"GOOGLE_VERTEX_BASE_URL": "{{cave_base_url}}/vertex"
}
},
"command_hook": {
"method": "gemini-beforetool"
},
"attribution": {
"header": "x-cave-agent"
},
"tested_agent_version": "0.67.0",
"injection_completeness": "declarative",
"last_verified_at": "2026-11-06",
"verified_by": "CI pinned-binary probe (gemini 0.67.0, agent-conformance pinned-upstream-binary lane on ubuntu-latest with Node 24.16.0, agents/probe-installed.mjs: --version and --help both exit 0); route probe last run on 0.65.0, not re-run on 0.67.0, from a scratch HOME with GEMINI_CLI_TRUST_WORKSPACE=true and security.auth.selectedType gemini-api-key in its settings: GOOGLE_GEMINI_BASE_URL redirection observed reaching POST /v1beta/models/{model}:generateContent (model-router classifier) and POST /v1beta/models/{model}:streamGenerateContent?alt=sse (the turn) under the injected base URL, carrying the key as x-goog-api-key, and the run completed (exit 0). The classifier's own call was answered by a generic stub rather than a schema-valid classifier response, so it exhausted its retries and fell back to the default model; the route and auth header are what this probe observed, not the classifier's verdict. NOT observed: an env-only launch -- with no selectedType, 0.65.0 (like 0.64.0 and 0.63.0) derives the gateway auth type from GOOGLE_GEMINI_BASE_URL and exits 41 \"Invalid auth method selected.\" before sending any request (re-confirmed on 0.65.0: zero requests reached the recorder)",
"fallback": "generic-env",
"maintainer": null
},
{
"schema_version": "1",
"id": "hermes",
"display_name": "Hermes Agent",
"vendor": "Nous Research",
"homepage": "https://hermes-agent.nousresearch.com/docs/",
"binary_names": [
"hermes"
],
"args": [
"--provider",
"custom"
],
"install": "curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash",
"wire_protocol": "openai-chat",
"injection": {
"method": "env",
"env": {
"CUSTOM_BASE_URL": "{{cave_base_url}}/v1",
"CUSTOM_API_KEY": "{{cave_api_key}}"
}
},
"command_hook": {
"method": "hermes-plugin"
},
"attribution": {
"header": "x-cave-agent"
},
"tested_agent_version": "0.23.0",
"injection_completeness": "builder-assisted",
"last_verified_at": "2026-11-06",
"verified_by": "CI pinned-binary probe (hermes 0.23.0 = release tag v0.23.0 at 2bd378ed, installed with uv sync --frozen from that tag's uv.lock on Python 3.14, agent-conformance pinned-upstream-binary lane on ubuntu-latest, agents/probe-installed.mjs: --version and --help both exit 0). Both install details are required, not incidental: from 0.22 hermes gates every core dependency on python_version >= '3.14', so a 3.12 install carries none of them and --help fails importing ruamel (the 0.22.7 drift report, #1236), and pip cannot resolve it at all (Pillow==13.0.0 against browser-harness's pillow==12.3.0, settled only by the project's [tool.uv] override-dependencies). Launchability only: the hermes-plugin hook, the native config write and a routed model request were not exercised on 0.23.0",
"fallback": "generic-env",
"maintainer": null
},
{
"schema_version": "1",
"id": "kilo",
"display_name": "Kilo Code",
"vendor": "Kilo Code",
"homepage": "https://kilo.ai/docs/code-with-ai/platforms/cli",
"binary_names": [
"kilo",
"kilocode"
],
"args": [],
"install": "npm install -g @kilocode/cli@7.8.27",
"wire_protocol": "openai-chat",
"injection": {
"method": "config-env-content",
"env_var": "KILO_CONFIG_CONTENT",
"config_content": {
"local": {
"provider": {
"caveman": {
"npm": "@ai-sdk/openai-compatible",
"name": "Caveman Local Proxy",
"options": {
"baseURL": "{{cave_base_url}}/v1",
"apiKey": "{env:OPENAI_API_KEY}",
"headers": {
"X-Cave-Agent": "kilo"
}
},
"models": {
"gpt-5.5": {
"name": "GPT-5.5 (via Caveman)",
"tool_call": true,
"limit": {
"context": 1050000,
"output": 32768
}
},
"gpt-5.4-mini": {
"name": "GPT-5.4 mini (via Caveman)",
"tool_call": true,
"limit": {
"context": 400000,
"output": 16384
}
}
}
}
},
"model": "caveman/gpt-5.5",
"enabled_providers": [
"caveman"
]
},
"managed": {
"provider": {
"caveman": {
"npm": "@ai-sdk/openai-compatible",
"name": "Caveman Gateway",
"options": {
"baseURL": "{{cave_base_url}}/v1",
"apiKey": "{env:CAVE_API_KEY}",
"headers": {
"x-cave-upstream-key": "{{cave_optional_openai_key_env}}",
"X-Cave-Agent": "kilo"
}
},
"models": {
"gpt-5.5": {
"name": "GPT-5.5 (via Caveman)",
"tool_call": true,
"limit": {
"context": 1050000,
"output": 32768
}
},
"gpt-5.4-mini": {
"name": "GPT-5.4 mini (via Caveman)",
"tool_call": true,
"limit": {
"context": 400000,
"output": 16384
}
}
}
}
},
"model": "caveman/gpt-5.5",
"enabled_providers": [
"caveman"
]
}
}
},
"attribution": {
"header": "X-Cave-Agent"
},
"tested_agent_version": "7.8.27",
"injection_completeness": "declarative",
"last_verified_at": "2026-11-06",
"verified_by": "CI pinned-binary probe (kilo 7.8.27, agent-conformance pinned-upstream-binary lane on ubuntu-latest with Node 24.16.0, agents/probe-installed.mjs: --version and --help both exit 0); two route probes last run on 7.8.18 (PR #1416), not re-run on 7.8.27, from separate scratch homes and different loopback ports: this profile's own KILO_CONFIG_CONTENT local overlay made `kilo run --pure --format json` send POST /v1/chat/completions at the injected baseURL carrying X-Cave-Agent: kilo and the dummy OPENAI_API_KEY as Authorization: Bearer (model gpt-5.5, stream: true), receive the scripted SSE reply, and complete (exit 0). The model came from the profile, without a CLI model override. The overlay was rendered from the profile by hand rather than through the CLI's buildWrapEnv, so its base-config merge was not exercised; external plugins were disabled with --pure. No live provider or compression was tested",
"fallback": "generic-env",
"maintainer": null
},
{
"schema_version": "1",
"id": "openclaw",
"display_name": "OpenClaw",
"vendor": "OpenClaw",
"homepage": "https://github.com/openclaw/openclaw#readme",
"binary_names": [
"openclaw"
],
"args": [
"chat"
],
"install": "npm i -g openclaw",
"wire_protocol": "openai-chat",
"injection": {
"method": "config-file",
"env_var": "OPENCLAW_CONFIG_PATH",
"base_config": {
"path": "~/.openclaw/openclaw.json",
"env_var": "OPENCLAW_CONFIG_PATH",
"state_dir": {
"env_var": "OPENCLAW_STATE_DIR",
"filename": "openclaw.json"
}
},
"config_overlay": {
"local": {
"mcp": {
"servers": {
"caveman": {
"command": "caveman-mcp",
"args": []
}
}
}
},
"managed": {
"mcp": {
"servers": {
"caveman": {
"command": "caveman-mcp",
"args": []
}
}
}
}
}
},
"command_hook": {
"method": "openclaw-plugin"
},
"attribution": {
"header": "x-cave-agent"
},
"tested_agent_version": "2026.11.1",
"injection_completeness": "builder-assisted",
"last_verified_at": "2026-11-06",
"verified_by": "CI pinned-binary probe (openclaw 2026.11.1, agent-conformance pinned-upstream-binary lane on ubuntu-latest with Node 24.16.0, agents/probe-installed.mjs: --version and --help both exit 0); config check last run on 2026.10.5, not re-run on 2026.11.1: `openclaw config validate` accepts this profile's injection.config_overlay.local passed as OPENCLAW_CONFIG_PATH (exit 0, \"Config valid\"), and a malformed control file is rejected (exit 1, JSON5 parse error). 2026.10.5 and 2026.11.1 both declare engines.node \">=24.16.0 <25 || >=26.1.0\", so neither will install on Node 22 or 25 at all -- the conformance lane's pinned 24.16.0 sits exactly on that floor. NOT observed: the ~/.openclaw/workspace SOUL.md and workspace-skill bootstrap, or any model request -- both need a live credentialed session",
"fallback": "generic-env",
"maintainer": null
},
{
"schema_version": "1",
"id": "opencode",
"display_name": "opencode",
"vendor": "sst",
"homepage": "https://opencode.ai/docs/config",
"binary_names": [
"opencode",
"opencode2"
],
"args": [],
"install": "npm i -g opencode-ai",
"wire_protocol": "openai-chat",
"injection": {
"method": "config-env-content",
"env_var": "OPENCODE_CONFIG_CONTENT",
"config_content": {
"local": {
"$schema": "https://opencode.ai/config.json",
"provider": {
"openai": {
"options": {
"baseURL": "{{cave_base_url}}/v1",
"headers": {
"X-Cave-Agent": "opencode"
}
}
},
"anthropic": {
"options": {
"baseURL": "{{cave_base_url}}/v1",
"headers": {
"X-Cave-Agent": "opencode"
}
}
},
"opencode-go": {
"options": {
"baseURL": "{{cave_base_url}}/compat/opencode-go/v1",
"headers": {
"X-Cave-Agent": "opencode"
}
}
}
}
},
"managed": {
"$schema": "https://opencode.ai/config.json",
"provider": {
"caveman": {
"npm": "@ai-sdk/openai-compatible",
"name": "Caveman Gateway",
"options": {
"baseURL": "{{cave_base_url}}/v1",
"apiKey": "{env:CAVE_API_KEY}",
"headers": {
"x-cave-upstream-key": "{env:OPENAI_API_KEY}",
"X-Cave-Agent": "opencode"
}
},
"models": {
"gpt-5.5": {
"name": "GPT-5.5 (via Caveman)",
"limit": {
"context": 1050000,
"output": 32768
}
},
"gpt-5.4-mini": {
"name": "GPT-5.4 mini (via Caveman)",
"limit": {
"context": 400000,
"output": 16384
}
}
}
}
},
"model": "caveman/gpt-5.5"
}
}
},
"command_hook": {
"method": "opencode-plugin"
},
"attribution": {
"header": "X-Cave-Agent"
},
"tested_agent_version": "1.19.5",
"injection_completeness": "declarative",
"last_verified_at": "2026-11-06",
"verified_by": "CI pinned-binary probe (opencode 1.19.5, agent-conformance pinned-upstream-binary lane on ubuntu-latest with Node 24.16.0, agents/probe-installed.mjs: --version and --help both exit 0); route probe last run on 1.19.4, not re-run on 1.19.5: this profile's own config_content.local overlay loaded and POST /v1/responses reached the injected baseURL twice (title model and turn), each carrying X-Cave-Agent: opencode, run completed (exit 0)",
"fallback": "generic-env",
"maintainer": null
},
{
"schema_version": "1",
"id": "pi",
"display_name": "Pi",
"vendor": "pi.dev",
"homepage": "https://pi.dev/",
"binary_names": [
"pi"
],
"args": [],
"install": "npm install -g --ignore-scripts @earendil-works/pi-coding-agent",
"wire_protocol": "openai-chat",
"injection": {
"method": "native-extension",
"host": "pi",
"asset": "caveman-pi-extension",
"loader_flag": "--extension"
},
"command_hook": {
"method": "pi-extension"
},
"tested_agent_version": "1.0.4",
"injection_completeness": "builder-assisted",
"last_verified_at": "2026-10-06",
"verified_by": "local pinned-binary probe (pi 1.0.4, agents/probe-installed.mjs); packages/pi-extension suite against pi-coding-agent 1.0.4",
"fallback": "none",
"maintainer": null
},
{
"schema_version": "1",
"id": "qwen",
"display_name": "Qwen Code",
"vendor": "QwenLM",
"homepage": "https://github.com/QwenLM/qwen-code",
"binary_names": [
"qwen"
],
"args": [
"--extensions=none"
],
"install": "npm i -g @qwen-code/qwen-code@0.26.8",
"wire_protocol": "openai-chat",
"injection": {
"method": "config-file",
"env_var": "QWEN_CODE_SYSTEM_SETTINGS_PATH",
"base_config": {
"path": "~/.qwen/system-settings.json",
"env_var": "QWEN_CODE_SYSTEM_SETTINGS_PATH",
"platform_default": "qwen-system-settings"
},
"config_overlay": {
"local": {
"providerProtocol": {},
"modelProviders": {
"openai": [
{
"id": "gpt-5.5",
"name": "GPT-5.5 (via Caveman)",
"envKey": "OPENAI_API_KEY",
"baseUrl": "{{cave_base_url}}/v1",
"generationConfig": {
"customHeaders": {
"X-Cave-Agent": "qwen"
}
}
},
{
"id": "gpt-5.4-mini",
"name": "GPT-5.4 mini (via Caveman)",
"envKey": "OPENAI_API_KEY",
"baseUrl": "{{cave_base_url}}/v1",
"generationConfig": {
"customHeaders": {
"X-Cave-Agent": "qwen"
}
}
}
]
},
"security": {
"auth": {
"selectedType": "openai",
"enforcedType": "openai"
}
},
"model": {
"name": "gpt-5.5",
"baseUrl": "{{cave_base_url}}/v1"
},
"modelFallbacks": "",
"fastModel": "",
"advisorModel": "",
"visionModel": "",
"compactionModel": "",
"imageModel": "",
"voiceModel": "",
"disableAllHooks": true,
"tools": {
"webSearch": {
"enabled": false,
"model": ""
},
"workflowsEnabled": false,
"disabled": [
"agent",
"skill",
"web_search",
"create_sub_session",
"workflow"
]
},
"agents": {
"builtin": {
"exploreModel": "inherit"
},
"allowedGrades": []
},
"permissions": {
"deny": [
"Agent",
"Skill",
"WebSearch",
"CreateSubSession",
"Workflow"
]
},
"skills": {
"disabledLevels": [
"project",
"user",
"extension",
"bundled"
]
},
"experimental": {
"liveVoice": {
"enabled": false,
"apiKey": "",
"model": ""
}
},
"slashCommands": {
"disabled": [
"auth",
"connect",
"login",
"model",
"arena",
"agents",
"workflows",
"settings",
"config",
"permissions",
"skills",
"voice",
"extensions",
"reload-plugins",
"hooks",
"mcp",
"resume",
"continue",
"import-config"
]
}
},
"managed": {
"providerProtocol": {},
"modelProviders": {
"openai": [
{
"id": "gpt-5.5",
"name": "GPT-5.5 (via Caveman)",
"envKey": "CAVE_API_KEY",
"baseUrl": "{{cave_base_url}}/v1",
"generationConfig": {
"customHeaders": {
"x-cave-upstream-key": "{{cave_optional_openai_key_env}}",
"X-Cave-Agent": "qwen"
}
}
},
{
"id": "gpt-5.4-mini",
"name": "GPT-5.4 mini (via Caveman)",
"envKey": "CAVE_API_KEY",
"baseUrl": "{{cave_base_url}}/v1",
"generationConfig": {
"customHeaders": {
"x-cave-upstream-key": "{{cave_optional_openai_key_env}}",
"X-Cave-Agent": "qwen"
}
}
}
]
},
"security": {
"auth": {
"selectedType": "openai",
"enforcedType": "openai"
}
},
"model": {
"name": "gpt-5.5",
"baseUrl": "{{cave_base_url}}/v1"
},
"modelFallbacks": "",
"fastModel": "",
"advisorModel": "",
"visionModel": "",
"compactionModel": "",
"imageModel": "",
"voiceModel": "",
"disableAllHooks": true,
"tools": {
"webSearch": {
"enabled": false,
"model": ""
},
"workflowsEnabled": false,
"disabled": [
"agent",
"skill",
"web_search",
"create_sub_session",
"workflow"
]
},
"agents": {
"builtin": {
"exploreModel": "inherit"
},
"allowedGrades": []
},
"permissions": {
"deny": [
"Agent",
"Skill",
"WebSearch",
"CreateSubSession",
"Workflow"
]
},
"skills": {
"disabledLevels": [
"project",
"user",
"extension",
"bundled"
]
},
"experimental": {
"liveVoice": {
"enabled": false,
"apiKey": "",
"model": ""
}
},
"slashCommands": {
"disabled": [
"auth",
"connect",
"login",
"model",
"arena",
"agents",
"workflows",
"settings",
"config",
"permissions",
"skills",
"voice",
"extensions",
"reload-plugins",
"hooks",
"mcp",
"resume",
"continue",
"import-config"
]
}
}
}
},
"attribution": {
"header": "X-Cave-Agent"
},
"tested_agent_version": "0.26.8",
"injection_completeness": "declarative",
"last_verified_at": "2026-11-06",
"verified_by": "CI pinned-binary probe (@qwen-code/qwen-code 0.26.8, agent-conformance pinned-upstream-binary lane on ubuntu-latest with Node 24.16.0, agents/probe-installed.mjs: --version and --help both exit 0); route check last run on 0.25.3, not re-run on 0.26.8: this profile's own config_overlay.local, rendered into the file named by QWEN_CODE_SYSTEM_SETTINGS_PATH with ENABLE_WEB_SEARCH=0 and QWEN_CODE_DISABLE_WORKFLOWS=1 as buildWrapEnv sets them, made `qwen --extensions=none -p` send POST /w/qwen/v1/chat/completions (X-Cave-Agent: qwen, model gpt-5.5) to a loopback recorder, and the run completed (exit 0). The overlay was rendered from the profile by hand rather than through the CLI's buildWrapEnv, so its base-config merge was not exercised",
"fallback": "generic-env",
"maintainer": null
}
]
}