Go Zen — entra en un estado de flujo zen para programar. Goes Env — cambio de entorno fluido.
Conmutador de entornos multi-CLI para Claude Code, Codex y OpenCode con conmutación automática por fallos en el proxy de API.
- Soporte multi-CLI — Compatible con Claude Code, Codex y OpenCode, configurable por proyecto
- Gestión multi-configuración — Gestiona todas las configuraciones de API en
~/.zen/zen.json - Daemon unificado — Un único proceso
zendaloja tanto el servidor proxy como la interfaz web - Conmutación por fallos del proxy — Proxy HTTP integrado que cambia automáticamente a proveedores de respaldo cuando el principal no está disponible
- Enrutamiento por escenarios — Enrutamiento inteligente basado en características de la solicitud (thinking, image, longContext, etc.)
- Vinculación de proyectos — Vincula directorios a perfiles y CLIs específicos para configuración automática por proyecto
- Variables de entorno — Configura variables de entorno específicas por CLI a nivel de proveedor
- Interfaz web de gestión — Gestión visual desde el navegador con acceso protegido por contraseña
- Seguridad web — Contraseña de acceso autogenerada, autenticación basada en sesiones, cifrado RSA para transporte de tokens
- Sincronización de configuración — Sincroniza proveedores, perfiles y ajustes entre dispositivos vía WebDAV, S3, GitHub Gist o GitHub Repo con cifrado AES-256-GCM
- Verificación de actualizaciones — Verificación automática no bloqueante de nuevas versiones al iniciar (caché de 24h)
- Autoactualización — Actualización con un solo comando vía
zen upgradecon coincidencia de versiones semver (compatible con versiones preliminares) - Autocompletado de Shell — Compatible con zsh / bash / fish
- Seguimiento de uso — Rastrea el uso de tokens y costos por proveedor, modelo y proyecto
- Control de presupuesto — Establece límites de gasto diarios/semanales/mensuales con acciones de advertencia/degradación/bloqueo
- Monitoreo de salud de proveedores — Verificaciones de salud en tiempo real con seguimiento de latencia y tasa de errores
- Balanceo de carga inteligente — Múltiples estrategias: conmutación por fallos, round-robin, menor latencia, menor costo
- Webhooks — Notificaciones para alertas de presupuesto, cambios de estado de proveedores y resúmenes diarios (Slack/Discord/Genérico)
- Compresión de contexto — Compresión automática del contexto cuando el conteo de tokens excede el umbral
- Pipeline de middleware — Middleware enchufable para transformación de solicitudes/respuestas
- Infraestructura de agentes — Soporte integrado para flujos de trabajo basados en agentes con gestión de sesiones
- Bot Gateway — Monitorea y controla sesiones de Claude Code remotamente vía Telegram, Discord, Slack, Lark o Facebook Messenger
curl -fsSL https://raw.githubusercontent.com/dopejs/gozen/main/install.sh | shDesinstalar:
curl -fsSL https://raw.githubusercontent.com/dopejs/gozen/main/uninstall.sh | sh# Añadir el primer proveedor
zen config add provider
# Iniciar (usando el perfil predeterminado)
zen
# Usar un perfil específico
zen -p work
# Usar un CLI específico
zen --cli codex| Comando | Descripción |
|---|---|
zen |
Iniciar CLI (usando vinculación de proyecto o configuración predeterminada) |
zen -p <profile> |
Iniciar con un perfil específico |
zen -p |
Seleccionar perfil interactivamente |
zen --cli <cli> |
Usar un CLI específico (claude/codex/opencode) |
zen -y / zen --yes |
Aprobar automáticamente permisos CLI (claude --permission-mode bypassPermissions, codex -a never) |
zen -- <flags> |
Pasar flags adicionales directamente al cliente CLI |
zen use <provider> |
Usar directamente un proveedor específico (sin proxy) |
zen pick |
Seleccionar interactivamente un proveedor para iniciar |
zen list |
Listar todos los proveedores y perfiles |
zen config |
Mostrar subcomandos de configuración |
zen config add provider |
Añadir un nuevo proveedor |
zen config add profile |
Añadir un nuevo perfil |
zen config default-client |
Establecer el cliente CLI predeterminado |
zen config default-profile |
Establecer el perfil predeterminado |
zen config reset-password |
Restablecer la contraseña de acceso a la interfaz web |
zen config sync |
Obtener configuración del backend de sincronización remoto |
zen daemon start |
Iniciar el daemon zend |
zen daemon stop |
Detener el daemon |
zen daemon restart |
Reiniciar el daemon |
zen daemon status |
Mostrar estado del daemon |
zen daemon enable |
Instalar el daemon como servicio del sistema |
zen daemon disable |
Desinstalar el servicio del sistema |
zen bind <profile> |
Vincular el directorio actual a un perfil |
zen bind --cli <cli> |
Vincular el directorio actual a un CLI específico |
zen unbind |
Eliminar la vinculación del directorio actual |
zen status |
Mostrar el estado de vinculación del directorio actual |
zen web |
Abrir la interfaz web de gestión en el navegador |
zen upgrade |
Actualizar a la última versión |
zen version |
Mostrar versión |
En v3.0, GoZen utiliza un proceso daemon unificado (zend) que aloja tanto el proxy HTTP como la interfaz web:
- Servidor proxy ejecutándose en el puerto
19841(configurable víaproxy_port) - Interfaz web ejecutándose en el puerto
19840(configurable víaweb_port) - El daemon se inicia automáticamente al ejecutar
zenozen web - Los cambios de configuración se recargan en caliente mediante monitoreo de archivos
- El auto-push de sincronización (con antirrebote de 2s) y el auto-pull son gestionados por el daemon
# Gestión manual del daemon
zen daemon start # Iniciar el daemon
zen daemon stop # Detener el daemon
zen daemon restart # Reiniciar el daemon
zen daemon status # Ver estado del daemon
# Servicio del sistema (inicio automático al arrancar)
zen daemon enable # Instalar como servicio del sistema
zen daemon disable # Eliminar servicio del sistemazen es compatible con tres CLIs de asistentes de programación con IA:
| CLI | Descripción | Formato de API |
|---|---|---|
claude |
Claude Code (predeterminado) | Anthropic Messages API |
codex |
OpenAI Codex CLI | OpenAI Chat Completions API |
opencode |
OpenCode | Anthropic / OpenAI |
zen config default-client
# Vía Web UI
zen web # Página de Settingscd ~/work/project
zen bind --cli codex # Usar Codex para este directoriozen --cli opencode # Usar OpenCode para esta sesiónUn perfil es una lista ordenada de proveedores utilizada para conmutación por fallos.
{
"profiles": {
"default": {
"providers": ["anthropic-main", "anthropic-backup"]
},
"work": {
"providers": ["company-api"],
"routing": {
"think": {"providers": [{"name": "thinking-api"}]}
}
}
}
}# Usar perfil predeterminado
zen
# Usar un perfil específico
zen -p work
# Selección interactiva
zen -pVincula directorios a perfiles y/o CLIs específicos para configuración automática por proyecto.
cd ~/work/company-project
# Vincular perfil
zen bind work-profile
# Vincular CLI
zen bind --cli codex
# Vincular ambos
zen bind work-profile --cli codex
# Ver estado
zen status
# Eliminar vinculación
zen unbindPrioridad: Argumentos de línea de comandos > Vinculación de proyecto > Predeterminado global
# Abrir en el navegador (inicia el daemon automáticamente si es necesario)
zen webFuncionalidades de la interfaz web:
- Gestión de proveedores y perfiles
- Gestión de vinculaciones de proyectos
- Configuración global (cliente predeterminado, perfil predeterminado, puertos)
- Configuración de sincronización
- Visor de registros de solicitudes con actualización automática
- Autocompletado del campo de modelo
Al iniciar el daemon por primera vez, se genera automáticamente una contraseña de acceso. Las solicitudes no locales (fuera de 127.0.0.1/::1) requieren inicio de sesión.
- Autenticación basada en sesiones con expiración configurable
- Protección contra fuerza bruta con retroceso exponencial
- Cifrado RSA para transporte de tokens sensibles (las claves API se cifran en el navegador antes de enviar)
- El acceso local (127.0.0.1) no requiere autenticación
# Restablecer la contraseña de la interfaz web
zen config reset-password
# Cambiar contraseña vía Web UI
zen web # Settings → Change PasswordSincroniza proveedores, perfiles, perfil predeterminado y cliente predeterminado entre dispositivos. Los tokens de autenticación se cifran con AES-256-GCM (derivación de clave PBKDF2-SHA256) antes de subir.
Backends compatibles:
- WebDAV — Cualquier servidor WebDAV (ej. Nextcloud, ownCloud)
- S3 — AWS S3 o almacenamiento compatible con S3 (ej. MinIO, Cloudflare R2)
- GitHub Gist — Gist privado (requiere PAT con alcance
gist) - GitHub Repo — Archivo en repositorio vía Contents API (requiere PAT con alcance
repo)
zen web # Settings → Config Synczen config sync- Fusión por marca de tiempo por entidad: la modificación más reciente gana
- Las entidades eliminadas usan lápidas (expiran después de 30 días)
- Escalares (perfil/cliente predeterminado): la marca de tiempo más reciente gana
Cada proveedor puede tener variables de entorno específicas por CLI:
{
"providers": {
"my-provider": {
"base_url": "https://api.example.com",
"auth_token": "sk-xxx",
"claude_env_vars": {
"CLAUDE_CODE_MAX_OUTPUT_TOKENS": "64000",
"MAX_THINKING_TOKENS": "50000"
},
"codex_env_vars": {
"CODEX_SOME_VAR": "value"
},
"opencode_env_vars": {
"OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX": "64000"
}
}
}
}| Variable | Descripción |
|---|---|
CLAUDE_CODE_MAX_OUTPUT_TOKENS |
Tokens de salida máximos |
MAX_THINKING_TOKENS |
Presupuesto de pensamiento extendido |
ANTHROPIC_MAX_CONTEXT_WINDOW |
Ventana de contexto máxima |
BASH_DEFAULT_TIMEOUT_MS |
Tiempo de espera predeterminado de Bash |
Enruta automáticamente las solicitudes a diferentes proveedores según las características de la solicitud:
| Escenario | Condición de activación |
|---|---|
think |
Modo thinking activado |
image |
Contiene contenido de imagen |
longContext |
El contenido supera el umbral |
webSearch |
Usa la herramienta web_search |
background |
Usa el modelo Haiku |
Mecanismo de fallback: Si todos los proveedores en la configuración del escenario fallan, se recurre automáticamente a los proveedores predeterminados del perfil.
Ejemplo de configuración:
{
"profiles": {
"smart": {
"providers": ["main-api"],
"long_context_threshold": 60000,
"routing": {
"think": {
"providers": [{"name": "thinking-api", "model": "claude-opus-4-5"}]
},
"longContext": {
"providers": [{"name": "long-context-api"}]
}
}
}
}
}Rastrea el uso de API y establece límites de gasto:
{
"pricing": {
"claude-sonnet-4-20250514": {"input_per_million": 3.0, "output_per_million": 15.0},
"claude-opus-4-20250514": {"input_per_million": 15.0, "output_per_million": 75.0}
},
"budgets": {
"daily": {"amount": 10.0, "action": "warn"},
"monthly": {"amount": 100.0, "action": "block"},
"per_project": true
}
}Acciones de presupuesto: warn (registrar advertencia), downgrade (cambiar a modelo más barato), block (rechazar solicitudes).
Verificaciones de salud automáticas con seguimiento de métricas:
{
"health_check": {
"enabled": true,
"interval_secs": 60,
"timeout_secs": 10
}
}Ver salud de proveedores vía Web UI o API: GET /api/v1/health/providers
Configura la estrategia de balanceo de carga por perfil:
{
"profiles": {
"balanced": {
"providers": ["provider-a", "provider-b", "provider-c"],
"strategy": "least-latency"
}
}
}Estrategias:
failover— Probar proveedores en orden (predeterminado)round-robin— Distribuir solicitudes uniformementeleast-latency— Enrutar al proveedor más rápidoleast-cost— Enrutar al proveedor más barato para el modelo
Recibe notificaciones sobre eventos importantes:
{
"webhooks": [
{
"name": "slack-alerts",
"url": "https://hooks.slack.com/services/xxx",
"events": ["budget_warning", "budget_exceeded", "provider_down", "provider_up"],
"enabled": true
}
]
}Eventos: budget_warning, budget_exceeded, provider_down, provider_up, failover, daily_summary
Comprime automáticamente el contexto cuando excede un umbral:
{
"compression": {
"enabled": true,
"threshold_tokens": 100000,
"target_ratio": 0.5
}
}Transforma solicitudes y respuestas con middleware enchufable:
{
"middleware": {
"enabled": true,
"middlewares": [
{"name": "context-injection", "enabled": true, "config": {"inject_cursorrules": true}},
{"name": "rate-limiter", "enabled": true, "config": {"requests_per_minute": 60}}
]
}
}Middleware integrado: context-injection, request-logger, rate-limiter, compression
Monitorea y controla tus sesiones de Claude Code remotamente a través de plataformas de chat. El bot se conecta a los procesos zen en ejecución vía IPC y te permite:
- Ver procesos conectados y su estado
- Enviar tareas a procesos específicos
- Recibir notificaciones de aprobaciones, errores y finalizaciones
- Controlar tareas (pausar/reanudar/cancelar)
| Plataforma | Configuración requerida |
|---|---|
| Telegram | Token de BotFather |
| Discord | Token de aplicación Bot |
| Slack | Tokens de Bot + App (Socket Mode) |
| Lark/Feishu | App ID + Secret |
| Facebook Messenger | Token de página + Token de verificación |
| Comando | Descripción |
|---|---|
list |
Listar todos los procesos conectados |
status [nombre] |
Mostrar estado del proceso |
bind <nombre> |
Vincular a un proceso para comandos subsiguientes |
pause/resume/cancel [nombre] |
Controlar tareas |
<nombre> <tarea> |
Enviar una tarea a un proceso |
help |
Mostrar comandos disponibles |
El bot también entiende consultas en lenguaje natural como "muéstrame el estado de gozen".
{
"bot": {
"enabled": true,
"socket_path": "/tmp/zen-bot.sock",
"platforms": {
"telegram": {
"enabled": true,
"token": "123456:ABC-DEF...",
"allowed_users": ["tu_usuario"]
}
},
"interaction": {
"require_mention": true,
"mention_keywords": ["@zen", "/zen"],
"direct_message_mode": "always",
"channel_mode": "mention"
},
"aliases": {
"api": "/ruta/al/proyecto-api",
"web": "/ruta/al/proyecto-web"
}
}
}Consulta la documentación de Bot Gateway para guías detalladas de configuración de plataformas.
| Archivo | Descripción |
|---|---|
~/.zen/zen.json |
Archivo de configuración principal |
~/.zen/zend.log |
Registro del daemon |
~/.zen/zend.pid |
Archivo PID del daemon |
~/.zen/logs.db |
Base de datos de registros de solicitudes (SQLite) |
{
"version": 8,
"default_profile": "default",
"default_client": "claude",
"proxy_port": 19841,
"web_port": 19840,
"providers": {
"anthropic": {
"base_url": "https://api.anthropic.com",
"auth_token": "sk-ant-xxx",
"model": "claude-sonnet-4-5",
"claude_env_vars": {
"CLAUDE_CODE_MAX_OUTPUT_TOKENS": "64000"
}
}
},
"profiles": {
"default": {
"providers": ["anthropic"]
}
},
"project_bindings": {
"/path/to/project": {
"profile": "work",
"client": "codex"
}
}
}# Última versión
zen upgrade
# Versión específica
zen upgrade 3.0
zen upgrade 3.0.0
# Versión preliminar
zen upgrade 3.0.0-alpha.1GoZen migra automáticamente las configuraciones de versiones anteriores:
~/.opencc/opencc.json→~/.zen/zen.json(desde OpenCC v1.x)~/.cc_envs/→~/.zen/zen.json(desde formato legado)
# Compilar
go build -o zen .
# Probar
go test ./...Publicación: Empuja un tag y GitHub Actions compilará automáticamente.
git tag v3.0.0
git push origin v3.0.0MIT