OpenCode 2.0: un solo servicio corre TUI, web y escritorio
@programacionLo esencial
- OpenCode 2.0 corre como un único proceso en segundo plano compartido por TUI, web y escritorio.
- El cliente @opencode/client descubre el servicio local solo y funciona sin configurar nada a mano.
- El paquete @opencode/codemode deja que el agente escriba un script que llama varias herramientas MCP en una sola ronda.
- Los subagentes y comandos de shell en segundo plano se activan con ctrl+b sin bloquear la sesión activa.
- Todos los servidores MCP quedan en code mode por defecto, pensado para sumar miles sin inflar el contexto.
De herramienta de power users a servicio por defecto
OpenCode nació con un modelo cliente/servidor, pero hasta la versión 1 ese servidor era opcional: solo lo activaban usuarios avanzados que sabían exponerlo a mano. OpenCode 2.0 da vuelta esa lógica: el servicio arranca solo como proceso único cada vez que abrís el TUI, la interfaz web o la app de escritorio.
Esto importa porque las tres interfaces dejan de ser copias aisladas: si abrís una sesión desde la terminal y después la revisás desde el navegador, ambas hablan con el mismo proceso y ven el mismo estado. Según detalla la nota oficial de OpenCode 2.0, esto habilita flujos como tareas programadas que se conectan al servicio sin que haya una ventana abierta.
La API rehecha desde cero
La API anterior crecía a los parches a medida que el equipo entendía qué necesitaban los agentes. En 2.0 la reescribieron completa después de revisar los casos de uso reales de sus usuarios. El resultado es una API que el propio OpenCode usa internamente, por ejemplo para mover una sesión activa a un worktree de git nuevo cuando arranca una tarea distinta.
El paquete oficial para consumirla es @opencode/client, con clientes para JavaScript vanilla y para Effect. Un script típico para crear una sesión y mandarle un prompt se ve así:
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 y corre el linter",
})Service.ensure() descubre el proceso local sin que tengas que pasarle un puerto a mano, así que el mismo script corre igual en tu laptop que en un cron de CI.
Code mode: scripts que encadenan herramientas MCP
Los modelos actuales son buenos escribiendo código, y OpenCode 2.0 apuesta por eso con @opencode/codemode, un intérprete de JavaScript minimalista que corre nativo sin levantar una VM de Node.js ni algo tan pesado como QuickJS.
El paquete convierte cada servidor MCP (o cada endpoint OpenAPI) en funciones que el agente puede llamar desde un script. En vez de pedir una herramienta, esperar la respuesta y pedir la siguiente, el agente escribe un script que encadena varias llamadas en una sola ronda:
const { issues } = await tools.github.list_issues({
owner: "mi-org",
repo: "api-pagos",
labels: ["bug"],
state: "OPEN",
})
const creados = await Promise.all(
issues.map(({ title }) => tools.linear.save_issue({ team: "PAY", title }))
)
return creados.map(issue => issue.identifier)Ese script lista issues abiertos en GitHub y los crea en Linear en un solo viaje de ida y vuelta, en lugar de una llamada por cada issue. Todos los servidores MCP en 2.0 quedan en code mode por defecto, lo que permite sumar decenas de integraciones sin que cada una infle el contexto que ve el modelo.
Tareas en segundo plano: subagentes y shells asíncronos
La segunda pieza grande es la ejecución en segundo plano. El agente principal puede delegar trabajo a un subagente (incluso con un modelo distinto) mientras sigue atendiendo tu siguiente prompt, algo que antes requería abrir otra sesión y perder el contexto de la primera.
También se puede invocar un comando de shell de forma asíncrona: si un build o una suite de tests tarda minutos, no bloquea la conversación. OpenCode te avisa cuando termina. El atajo ctrl+b manda cualquier tarea en curso a segundo plano sin perder su salida.
Cómo probarlo
Para instalar OpenCode según tu sistema:
# macOS / Linux
curl -fsSL https://opencode.ai/install | bash
# Windows (PowerShell)
irm https://opencode.ai/install.ps1 | iex
# Cualquier plataforma con Node.js
npm install -g opencode-ai@latestUna vez instalado, el comando opencode levanta el TUI y, con eso, el servicio de fondo. Para conectar otra máquina o aplicación al mismo servicio, OpenCode expone opencode pair y comandos opencode api para scripting directo desde la CLI.
Qué no resuelve
El modelo de proceso único tiene una contrapartida: si ese servicio se cae o se reinicia, TUI, web y escritorio pierden la conexión al mismo tiempo, porque los tres dependen de un solo backend local. Para equipos que corrían OpenCode sin ese servicio activo, migrar implica confiar en un proceso de fondo que antes era opcional.
Code mode tampoco es gratis en todos los casos: ejecutar scripts generados por el modelo sin sandbox exige confiar en que las herramientas MCP conectadas no hagan nada destructivo, así que conviene revisar permisos antes de sumar servidores con acceso de escritura.
Conclusión
OpenCode 2.0 no agrega una función aislada: cambia la arquitectura base para que la herramienta se comporte como un servicio persistente en vez de un proceso que se abre y cierra con cada ventana. Esa base es la que permite el resto, desde subagentes en paralelo hasta scripts que componen miles de herramientas MCP sin saturar el contexto.
📖 Versión extendida con más detalle: https://elsolitario.org/2026/10/15/opencode-20-servicio-unificado-y-code-mode/?utm_source=telegraph&utm_medium=instant_view&utm_campaign=programacion