Español
Documentación
Servidor

Servidor

Interactua con el servidor de opencode a traves de HTTP.

El comando opencode serve ejecuta un servidor HTTP headless que expone un endpoint OpenAPI que un cliente de opencode puede usar.


Uso

opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]

Opciones

FlagDescripcionPredeterminado
--portPuerto de escucha4096
--hostnameHostname de escucha127.0.0.1
--mdnsHabilitar descubrimiento mDNSfalse
--mdns-domainNombre de dominio personalizado para servicio mDNSopencode.local
--corsOrigenes de navegador adicionales permitidos[]

--cors puede pasarse multiples veces:

opencode serve --cors http://localhost:5173 --cors https://app.example.com

Autenticacion

Establece OPENCODE_SERVER_PASSWORD para proteger el servidor con autenticacion HTTP basica. El nombre de usuario predeterminado es opencode, o establece OPENCODE_SERVER_USERNAME para cambiarlo. Esto aplica tanto a opencode serve como a opencode web.

OPENCODE_SERVER_PASSWORD=your-password opencode serve

Como funciona

Cuando ejecutas opencode, inicia una TUI y un servidor. La TUI es el cliente que se comunica con el servidor. El servidor expone un endpoint de especificacion OpenAPI 3.1. Este endpoint tambien se usa para generar un SDK.

Consejo: Usa el servidor de opencode para interactuar con opencode programaticamente.

Esta arquitectura permite que opencode soporte multiples clientes y te permite interactuar con opencode programaticamente.

Puedes ejecutar opencode serve para iniciar un servidor independiente. Si ya tienes la TUI de opencode ejecutandose, opencode serve iniciara un nuevo servidor.


Conectar a un servidor existente

Cuando inicias la TUI, asigna aleatoriamente un puerto y hostname. En su lugar, puedes pasar los flags --hostname y --port. Luego usa esto para conectarte a su servidor.

El endpoint /tui puede usarse para controlar la TUI a traves del servidor. Por ejemplo, puedes prellenar o ejecutar un prompt. Esta configuracion es usada por los plugins de IDE de OpenCode.


Especificacion

El servidor publica una especificacion OpenAPI 3.1 que puede verse en:

http://<hostname>:<port>/doc

Por ejemplo, http://localhost:4096/doc. Usa la especificacion para generar clientes o inspeccionar tipos de solicitud y respuesta. O visualizala en un explorador Swagger.


APIs

El servidor de opencode expone las siguientes APIs.


Global

MetodoRutaDescripcionRespuesta
GET/global/healthObtener salud del servidor y version{ healthy: true, version: string }
GET/global/eventObtener eventos globales (stream SSE)Stream de eventos

Proyecto

MetodoRutaDescripcionRespuesta
GET/projectListar todos los proyectosProject[]
GET/project/currentObtener el proyecto actualProject

Ruta y VCS

MetodoRutaDescripcionRespuesta
GET/pathObtener la ruta actualPath
GET/vcsObtener info VCS del proyecto actualVcsInfo

Instancia

MetodoRutaDescripcionRespuesta
POST/instance/disposeEliminar la instancia actualboolean

Configuracion

MetodoRutaDescripcionRespuesta
GET/configObtener info de configuracionConfig
PATCH/configActualizar configuracionConfig
GET/config/providersListar proveedores y modelos predeterminados{ providers: Provider[], default: { [key: string]: string } }

Proveedor

MetodoRutaDescripcionRespuesta
GET/providerListar todos los proveedores{ all: Provider[], default: {...}, connected: string[] }
GET/provider/authObtener metodos de autenticacion del proveedor{ [providerID: string]: ProviderAuthMethod[] }
POST/provider/{id}/oauth/authorizeAutorizar proveedor usando OAuthProviderAuthAuthorization
POST/provider/{id}/oauth/callbackManejar callback OAuth del proveedorboolean

Sesiones

MetodoRutaDescripcionNotas
GET/sessionListar todas las sesionesDevuelve Session[]
POST/sessionCrear nueva sesionbody: { parentID?, title? }, devuelve Session
GET/session/statusObtener estado de todas las sesionesDevuelve { [sessionID: string]: SessionStatus }
GET/session/:idObtener detalles de sesionDevuelve Session
DELETE/session/:idEliminar sesion y todos sus datosDevuelve boolean
PATCH/session/:idActualizar propiedades de sesionbody: { title? }, devuelve Session
GET/session/:id/childrenObtener sesiones hijasDevuelve Session[]
GET/session/:id/todoObtener lista de tareas de la sesionDevuelve Todo[]
POST/session/:id/initAnalizar app y crear AGENTS.mdbody: { messageID, providerID, modelID }, devuelve boolean
POST/session/:id/forkBifurcar sesion existente en un mensajebody: { messageID? }, devuelve Session
POST/session/:id/abortAbortar sesion en ejecucionDevuelve boolean
POST/session/:id/shareCompartir sesionDevuelve Session
DELETE/session/:id/shareDejar de compartir sesionDevuelve Session
GET/session/:id/diffObtener diff de esta sesionquery: messageID?, devuelve FileDiff[]
POST/session/:id/summarizeResumir la sesionbody: { providerID, modelID }, devuelve boolean
POST/session/:id/revertRevertir un mensajebody: { messageID, partID? }, devuelve boolean
POST/session/:id/unrevertRestaurar todos los mensajes revertidosDevuelve boolean
POST/session/:id/permissions/:permissionIDResponder a solicitud de permisobody: { response, remember? }, devuelve boolean

Mensajes

MetodoRutaDescripcionNotas
GET/session/:id/messageListar mensajes en sesionquery: limit?, devuelve { info: Message, parts: Part[] }[]
POST/session/:id/messageEnviar mensaje y esperar respuestabody: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, devuelve { info: Message, parts: Part[] }
GET/session/:id/message/:messageIDObtener detalles del mensajeDevuelve { info: Message, parts: Part[] }
POST/session/:id/prompt_asyncEnviar mensaje asincronamente (sin esperar)body: igual que /session/:id/message, devuelve 204 No Content
POST/session/:id/commandEjecutar comando slashbody: { messageID?, agent?, model?, command, arguments }, devuelve { info: Message, parts: Part[] }
POST/session/:id/shellEjecutar comando shellbody: { agent, model?, command }, devuelve { info: Message, parts: Part[] }

Comandos

MetodoRutaDescripcionRespuesta
GET/commandListar todos los comandosCommand[]

Archivos

MetodoRutaDescripcionRespuesta
GET/find?pattern=<pat>Buscar texto en archivosArray de objetos de coincidencia con path, lines, line_number, absolute_offset, submatches
GET/find/file?query=<q>Buscar archivos y directorios por nombrestring[] (rutas)
GET/find/symbol?query=<q>Buscar simbolos del workspaceSymbol[]
GET/file?path=<path>Listar archivos y directoriosFileNode[]
GET/file/content?path=<p>Leer un archivoFileContent
GET/file/statusObtener estado de archivos rastreadosFile[]

Parametros de consulta de /find/file

  • query (requerido) — cadena de busqueda (coincidencia difusa)
  • type (opcional) — limitar resultados a "file" o "directory"
  • directory (opcional) — sobrescribir raiz del proyecto para busqueda
  • limit (opcional) — max resultados (1–200)
  • dirs (opcional) — flag legacy ("false" devuelve solo archivos)

Herramientas (Experimental)

MetodoRutaDescripcionRespuesta
GET/experimental/tool/idsListar todos los IDs de herramientasToolIDs
GET/experimental/tool?provider=<p>&model=<m>Listar herramientas con esquemas JSON para modeloToolList

LSP, Formateadores y MCP

MetodoRutaDescripcionRespuesta
GET/lspObtener estado del servidor LSPLSPStatus[]
GET/formatterObtener estado del formateadorFormatterStatus[]
GET/mcpObtener estado del servidor MCP{ [name: string]: MCPStatus }
POST/mcpAgregar servidor MCP dinamicamentebody: { name, config }, devuelve objeto de estado MCP

Agentes

MetodoRutaDescripcionRespuesta
GET/agentListar todos los agentes disponiblesAgent[]

Registro

MetodoRutaDescripcionRespuesta
POST/logEscribir entrada de log. Body: { service, level, message, extra? }boolean

TUI

MetodoRutaDescripcionRespuesta
POST/tui/append-promptAgregar texto al promptboolean
POST/tui/open-helpAbrir dialogo de ayudaboolean
POST/tui/open-sessionsAbrir selector de sesionesboolean
POST/tui/open-themesAbrir selector de temasboolean
POST/tui/open-modelsAbrir selector de modelosboolean
POST/tui/submit-promptEnviar el prompt actualboolean
POST/tui/clear-promptLimpiar el promptboolean
POST/tui/execute-commandEjecutar comando ({ command })boolean
POST/tui/show-toastMostrar toast ({ title?, message, variant })boolean
GET/tui/control/nextEsperar siguiente solicitud de controlObjeto de solicitud de control
POST/tui/control/responseResponder a solicitud de control ({ body })boolean

Auth

MetodoRutaDescripcionRespuesta
PUT/auth/:idEstablecer credenciales de autenticacion. Body debe coincidir con esquema del proveedorboolean

Eventos

MetodoRutaDescripcionRespuesta
GET/eventStream de eventos enviados por servidor. Primer evento es server.connected, luego eventos del busStream de eventos enviados por servidor

Docs

MetodoRutaDescripcionRespuesta
GET/docEspecificacion OpenAPI 3.1Pagina HTML con especificacion OpenAPI