Abrís la terminal, el navegador y la app de escritorio y las tres hablan con el mismo proceso en segundo plano: así arranca OpenCode 2.0, la actualización con la que Anomaly rediseña el servicio, la API y la forma en que los agentes usan herramientas tras acumular datos de millones de usos diarios.
El cambio no es menor: antes, ese modelo cliente/servidor existía pero quedaba oculto detrás de un uso avanzado opcional.
TL;DR
- OpenCode convierte el servidor en un único proceso que comparten TUI, web y app de escritorio.- El paquete @opencode/codemode deja escribir JavaScript para encadenar llamadas MCP en un solo round trip.- Todos los servidores MCP quedan en code mode por defecto, así que agregar miles no infla el contexto.- Suma subagentes y comandos de shell en segundo plano, incluso con un modelo distinto al principal.- La API se reescribió desde cero tras admitir Anomaly que la anterior creció mal con el uso real.
Qué es OpenCode
OpenCode es un agente de programación de código abierto creado por Anomaly que corre en terminal, navegador y escritorio. Funciona como cliente de un servicio local que ejecuta sesiones de codificación asistidas por modelos de lenguaje, y la actualización OpenCode 2.0 lo convirtió en un sistema cliente/servidor por defecto.
Antes de esta versión, el modelo cliente/servidor existía pero era opcional: la mayoría de los usuarios abría cada interfaz como un programa aislado, sin compartir sesiones ni contexto entre ellas. El cambio de fondo no es una función nueva, sino activar por defecto algo que ya estaba en el código desde el inicio del proyecto.
Antes de la 2.0, el modelo cliente/servidor de OpenCode era opcional y lo usaban sobre todo power users.
Qué pasó: OpenCode 2.0 cambia el modelo de servicio
Anomaly publicó OpenCode 2.0 como lo que su propio equipo describe como una revisión mayor del proyecto, construida sobre la experiencia de millones de usuarios diarios. El cambio más visible es que el servidor, que desde el inicio funcionaba bajo un modelo cliente/servidor, ahora arranca automáticamente como un único proceso en segundo plano en la máquina del usuario.
Cuando abrís la TUI, el cliente web o la app de escritorio, los tres se conectan a ese mismo proceso central en lugar de levantar instancias separadas. Si usás el paquete programático @opencode/client para armar tus propios scripts, estos detectan el servicio local automáticamente, algo útil para tareas programadas que antes requerían gestionar la conexión a mano. También se puede invocar vía CLI con comandos opencode api, o exponer el proceso a otras aplicaciones con /pair u opencode pair.
En paralelo, el CLI de Anomaly reescribió la API desde cero. Anomaly admite que la versión anterior creció sin plan mientras el equipo y la comunidad entendían qué necesitaban los agentes, y que terminó siendo difícil de usar; la nueva versión revisó los casos de uso reales para cubrir prácticamente cualquier operación necesaria, incluyendo que el propio agente llame a su API para moverse a un worktree de git al empezar una tarea nueva.
Contexto e historia
El modelo cliente/servidor no es nuevo: estaba en OpenCode desde sus primeras versiones, pero quedaba como una opción para usuarios avanzados que querían correr el proceso por separado y conectar varias interfaces a mano. La mayoría de la base de usuarios nunca lo activaba, así que cada sesión vivía aislada dentro de la terminal o el navegador que la abrió.
Ese diseño generaba una fricción conocida en herramientas de agentes de código: si cerrabas la terminal perdías el hilo de la sesión, y coordinar un mismo trabajo entre distintas interfaces significaba repetir contexto. La integración con servidores de Model Context Protocol (MCP) sufría un problema parecido: cada herramienta agregada se sumaba a la lista de funciones visibles del modelo, así que conectar demasiadas inflaba el contexto antes de escribir una sola línea de código.
La herramienta de Anomaly ataca ambos problemas a la vez: unifica el backend para que las sesiones sobrevivan a cerrar cualquier cliente en particular, y cambia cómo se exponen las herramientas MCP para que agregar más no cueste más contexto.
Detalles técnicos: cómo funciona el servicio único y code mode
El cambio de fondo es sencillo de describir pero tiene consecuencias prácticas: en lugar de que cada interfaz (TUI, web, desktop) levante su propio proceso, la primera que se abre crea el servicio y las siguientes lo reutilizan. El paquete @opencode/client incluye un método de descubrimiento que busca ese proceso local antes de intentar crear uno nuevo:
import { OpenCode } from "@opencode/client"
import { Service } from "@opencode/client/service"
const endpoint = await Service.ensure()
const client = OpenCode.make({
baseUrl: endpoint.url,
headers: Service.headers(endpoint),
})
const session = await client.session.create({
location: { directory: process.cwd() },
})
await client.session.prompt({
sessionID: session.id,
text: "Revisa los cambios pendientes en este repo",
})
Service.ensure() localiza el proceso activo (o lo levanta si no existe) y devuelve la URL y las cabeceras necesarias para hablarle, sin que el script sepa de antemano si hay cero, uno o varios clientes abiertos. La llamada a session.create devuelve un objeto con un identificador con el formato ses_7c41e09a, el mismo que usa la lista de sesiones dentro de la TUI: si abrís esa sesión desde otra interfaz, es literalmente la misma, no una copia.
El segundo cambio importante es code mode, distribuido en el paquete @opencode/codemode. Es un intérprete de JavaScript minimalista, sin la complejidad de una VM de Node.js ni de embeber un motor como QuickJS, que convierte servidores MCP y endpoints OpenAPI en funciones que un agente puede llamar desde un script. En vez de pedirle al modelo una herramienta a la vez (listar issues, después crear cada ticket uno por uno), el agente escribe un script que encadena varias llamadas y devuelve el resultado final en un solo turno. En el CLI de Anomaly todos los servidores MCP quedan en code mode por defecto, así que agregar cientos de integraciones no multiplica el contexto que el modelo tiene que leer en cada turno.
AspectoAntesAhoraServicio backendProceso opcional, usado sobre todo por power usersArranca automático como único proceso para TUI, web y desktopAPICreció sin plan mientras se entendía qué necesitan los agentesReescrita desde cero según los casos de uso de millones de usuarios diariosServidores MCPCada herramienta se llamaba una por una, sumando turnosCode mode las convierte en funciones que un script encadena en un round tripTrabajo largoBloqueaba al agente principal mientras corríaSubagentes y shell en segundo plano no bloquean al agente principal
El tercer cambio son las tareas en segundo plano: la herramienta de Anomaly suma subagentes que el agente principal puede delegar sin detenerse, incluso con un modelo distinto al que lleva la conversación principal, y comandos de shell que corren de forma asíncrona. Así, un bun test o un bun run build largo no bloquea al agente mientras seguís dándole instrucciones; el usuario también puede mandar manualmente ese trabajo a segundo plano para liberar la conversación principal.
Code mode convierte cada servidor MCP agregado en funciones que un script puede combinar en una sola ejecución.
sequenceDiagram
participant T as TUI
participant W as Web
participant D as Desktop
participant S as Servicio OpenCode
T->>S: conecta a la sesion local
W->>S: conecta a la misma sesion
D->>S: conecta a la misma sesion
S-->>T: estado compartido
Note over T,W,D: las tres interfaces ven las mismas sesiones
Para confirmar que el servicio corre como proceso único alcanza con revisar los comandos opencode api que expone la propia CLI: si una sesión creada desde la TUI aparece también al conectar desde un script con @opencode/client, es la misma sesión y no una nueva, señal de que las interfaces efectivamente comparten backend.
💭 Clave: code mode no reemplaza al modelo: solo le da un lugar donde escribir el pegamento entre herramientas sin gastar un turno de conversación por cada llamada.
Impacto y análisis
La apuesta de OpenCode 2.0 es económica tanto como técnica: cada llamada a herramienta dentro de un turno de un modelo de lenguaje cuesta tokens, y agregar decenas de servidores MCP a un agente solía significar pagar ese costo en cada turno aunque no se usaran todas las herramientas. Code mode traslada ese costo a un script que corre una sola vez, lo que en la práctica baja cuántos turnos necesita un agente para tareas como auditar issues en varios repositorios o sincronizar tickets entre sistemas distintos.
El servicio único también cambia la forma de trabajar con agentes de código: una sesión deja de depender de que la terminal donde la abriste siga abierta. Eso habilita flujos donde alguien arranca una tarea desde el celular con la app de escritorio corriendo en su computadora, o donde un cron dispara un script que usa la misma sesión que el desarrollador dejó a medio terminar.
El lado honesto del cambio: unificar todo en un solo proceso local también concentra el riesgo ahí. Si ese proceso se cae o queda ocupado con una tarea pesada, las tres interfaces se quedan sin servicio al mismo tiempo, algo que antes, con procesos separados, no pasaba.
Qué sigue
Anomaly confirmó que ya trabaja en aplicaciones nativas que aprovechan este mismo flujo de conexión remota, el comando /pair para vincular clientes externos a una sesión, aunque todavía no dio fecha de lanzamiento. El resto del rumbo del proyecto depende de cómo code mode se comporte con integraciones MCP más grandes en producción, algo que por ahora solo se puede medir proyecto por proyecto.
📖 Resumen en Telegram: Ver resumen
Probalo vos: instalá OpenCode, abrí la TUI y el cliente web al mismo tiempo, y fijate si ambos muestran la misma sesión activa sin que tengas que autenticarte de nuevo.
Preguntas frecuentes
¿Qué es code mode en OpenCode 2.0?
Es un intérprete de JavaScript minimalista del paquete @opencode/codemode que convierte servidores MCP y endpoints OpenAPI en funciones invocables desde un script, para que el agente encadene varias llamadas en una sola ejecución en lugar de pedir una herramienta por turno.
¿Cómo se conectan la TUI, la web y la app de escritorio de OpenCode?
Las tres se conectan al mismo proceso de servicio que corre en segundo plano en la máquina: la primera interfaz que se abre lo levanta y las siguientes lo reutilizan automáticamente.
¿Qué son los subagentes en segundo plano de OpenCode?
Son procesos que el agente principal puede delegar sin detener la conversación, incluso usando un modelo distinto al que lleva el hilo principal; se pueden lanzar automáticamente o a mano con un atajo de teclado.
¿Hace falta configurar algo para activar el servicio único de OpenCode?
No: a partir de la 2.0 el proceso arranca por defecto. Quienes ya lo usaban manualmente, o quienes quieren exponerlo a otra máquina, siguen pudiendo controlarlo con comandos como opencode api o /pair.
¿El agente de código abierto rompe compatibilidad con la versión anterior?
La API se reescribió desde cero, así que integraciones que dependían de endpoints viejos necesitan revisión; Anomaly diseñó la nueva versión para cubrir los casos de uso ya existentes, pero cualquier script que hablaba directo con la API anterior debería probarse contra la nueva antes de depender de ella en producción.
¿Dónde se puede probar el CLI de Anomaly?
El anuncio oficial de OpenCode se publicó en el blog de Anomaly, junto con el repositorio del proyecto donde se documentan los paquetes @opencode/client y @opencode/codemode.
Referencias
- Anomaly: anuncio oficial de OpenCode 2.0 con el detalle de cada cambio.- GitHub: repositorio del proyecto OpenCode, con los paquetes @opencode/client y @opencode/codemode.- Model Context Protocol: especificación del protocolo que code mode convierte en funciones invocables.
📱 ¿Te gusta este contenido? Únete a nuestro canal de Telegram @programacion donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.
Top comments (0)