Conectar OpenCode al gateway con mis llaves

Tus llaves de proveedor en una bóveda de machine-home, una sola conexión local para OpenCode, y rotación en 429 que nunca ves.

Prompt#

Mete mi llave de OpenAI en orch y apunta OpenCode al gateway.

Qué hace el Chair#

Nada — esta te toca a ti. No hay herramienta MCP: los comandos escriben una bóveda de llaves y la configuración de otra aplicación, así que se corren una vez desde una terminal humana.

CLI#

orch gateway keys add openai            # pide la llave, la prueba, y recién ahí la guarda
orch gateway keys add openai sk-…       # o pásala en línea
orch gateway keys list                  # hints y tier solamente, nunca la llave
orch gateway keys remove openai sk-…abcd

orch gateway                            # arranca el gateway primero
orch gateway connect opencode           # escribe la config propia de OpenCode, automático
orch gateway status                     # vivo/cooldown, posición del anillo, rotaciones

Los demás agentes imprimen un pegado de una sola vez en vez de quedar cableados: orch gateway connect commandcode, orch gateway connect openai, orch gateway connect claude. orch gateway presets lista las URLs upstream que orch ya conoce.

Respuesta esperada#

keys add imprime openai sk-…abcd: ok, added to the rotation ring, o probe failed, not saved (…) — y no guarda nada cuando la prueba falla. connect opencode imprime Created o Updated OpenCode config → <path>, nombra el proveedor (OrcheMax, modelo por defecto orchemax/auto si no tenías ninguno), y te dice que reinicies OpenCode. También deja ORCH_GATEWAY_KEY listo para este workspace.

Trampas#

  • Varias llaves por proveedor es una función. Llaves separadas por coma son un anillo de rotación; el gateway lo avanza solo ante 429s y cooldowns, así que el agente nunca ve un rate limit. orch gateway status muestra en qué parte del anillo vas.
  • Una llave nunca se imprime de vuelta. add, list y remove muestran solo hints (sk-…abcd), que además es como se identifica una en remove.
  • add prueba antes de guardar. Una llave mal tipeada o muerta se rechaza en el prompt, no en la primera petición.
  • OpenCode es el único cableado automáticamente. Los demás imprimen el env para que lo pegues una vez — deliberado: orch no reescribe archivos de configuración que no son suyos.
  • Reinicia OpenCode después de conectar. La configuración se lee al arrancar.
  • Claude Code es la excepción a propósito. Mantiene su propio login de plan (agents.auth.claude: account) y no enruta nada por la bóveda. El gateway responde 403 a cualquier petición que lleve un bearer OAuth de Anthropic (sk-ant-oat…) o la cabecera anthropic-beta: oauth-2025-04-20 — los términos de Anthropic prohíben que un tercero intermedie esas credenciales. Una API key de Anthropic es la única credencial de Anthropic que el carril passthrough sí lleva.
  • Las llaves viven en el keys.env de machine-home, no en orch.yaml — una bóveda para todos los workspaces de la máquina, y nada con forma de llave en tu repo.