🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Cuando OmniRoute se ejecuta dentro de Docker, el flujo estándar "Importar desde el llavero de Zed" falla
porque el contenedor no puede acceder al daemon del llavero del sistema operativo anfitrión (libsecret en Linux,
Keychain en macOS y Credential Manager en Windows), y los directorios de configuración de Zed del
sistema de archivos anfitrión no son visibles dentro del contenedor de forma predeterminada.
Dentro de un contenedor se producen dos problemas que impiden la importación:
- Aislamiento del sistema de archivos —
isZedInstalled()busca~/.config/zed(Linux),~/Library/Application Support/Zed(macOS) o la ruta equivalente de Windows. Estas rutas se encuentran en el sistema anfitrión y no están disponibles a menos que se monten explícitamente como volúmenes. - Aislamiento de IPC — Incluso cuando el directorio de configuración está montado, el módulo nativo
keytarse comunica con el servicio de llavero del sistema operativo mediante un socket Unix o una sesión de D-Bus. Ninguno de ellos se conecta con el contenedor de forma predeterminada, por lo que las lecturas de credenciales siempre fallan.
OmniRoute detecta el entorno Docker mediante dos heurísticas:
- La presencia de
/.dockerenv(escrito por el daemon de Docker al iniciar el contenedor). - La aparición de la cadena
dockeren/proc/1/cgroup(cgroup v1 de Linux).
Cuando se activa cualquiera de estas heurísticas, la ruta de importación devuelve HTTP 422 con
zedDockerEnvironment: true y un mensaje que le dirige a la pestaña Importación manual de tokens.
- Abra Panel de control → Proveedores → Zed.
- El panel Importación manual de tokens aparece debajo de la tarjeta de importación desde el llavero. Cuando OmniRoute detecta Docker, este panel se expande automáticamente después del primer intento fallido de importación desde el llavero.
- Seleccione el proveedor en el menú desplegable (OpenAI, Anthropic, Google, Mistral, xAI, OpenRouter o DeepSeek).
- Pegue la clave de API en el campo de contraseña.
- Haga clic en Importar.
La clave se guarda como una nueva conexión de proveedor con el nombre
Zed Manual Import (<provider>).
Zed almacena las claves de los proveedores de IA en el llavero del sistema operativo con nombres de servicio como
zed-openai, ai.zed.openai, zed-anthropic, etc. Para recuperarlas y realizar una importación
manual, consulte:
Linux
~/.config/zed/settings.json
La sección language_models contiene las configuraciones de los proveedores. Las claves guardadas en el
llavero mediante la interfaz de Zed no aparecen como texto sin formato en settings.json; recupérelas mediante
un visor de llaveros como GNOME Keyring / Seahorse o ejecutando:
secret-tool lookup service zed-openai account api-keymacOS
~/Library/Application Support/Zed/settings.json
Las entradas del llavero pueden encontrarse en Keychain Access.app buscando zed.
Opcionalmente, puede montar el directorio de configuración de Zed en el contenedor en modo de solo lectura. Esto no soluciona el problema del llavero, pero puede resultar útil para futuras funcionalidades que lean valores no secretos de la configuración de Zed (p. ej., preferencias de modelos).
# Fragmento de docker-compose.yml
services:
omniroute:
image: omniroute:latest
volumes:
# Sistema anfitrión Linux
- "${HOME}/.config/zed:/host-zed-config:ro"
# Sistema anfitrión macOS (descomente esta opción en su lugar)
# - "${HOME}/Library/Application Support/Zed:/host-zed-config:ro"
environment:
# Futuro: ZED_CONFIG_PATH=/host-zed-config
PORT: "20128"Nota: todavía no se ha implementado la posibilidad de sobrescribir la ruta mediante la variable de entorno ZED_CONFIG_PATH. Este
fragmento se proporciona como referencia para cuando se añada dicha funcionalidad.
También se puede llamar directamente al endpoint de importación manual:
POST /api/providers/zed/manual-import
Content-Type: application/json
Authorization: Bearer <oma_live_or_manage_scoped_api_key>
{
"provider": "openai",
"token": "sk-...",
"label": "Mi clave de OpenAI de Zed" // opcional
}
Si la operación se realiza correctamente, devuelve:
{ "success": true, "connectionId": "...", "provider": "openai" }| Síntoma | Causa | Solución |
|---|---|---|
422 + zedDockerEnvironment: true |
Se está ejecutando dentro de Docker | Use la pestaña Importación manual de tokens |
404 + zedInstalled: false |
Zed no está instalado en el sistema anfitrión | Instale Zed o use la importación manual |
| 403 + acceso al llavero denegado | El sistema operativo denegó el acceso al llavero | Conceda permiso en el aviso del sistema operativo |
| 404 + servicio de llavero no disponible | Falta libsecret en Linux |
Instale libsecret-1-dev |