Saltearse al contenido

Servidor

Interactuar con el servidor opencode a través de HTTP.

El comando opencode serve ejecuta un servidor HTTP sin cabeza que expone un punto final OpenAPI que un cliente opencode puede usar.


Uso

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

Opciones

BanderaDescripciónPredeterminado
--portPuerto para escuchar4096
--hostnameNombre de host para escuchar127.0.0.1
--mdnsHabilitar el descubrimiento de mDNSfalse
--mdns-domainNombre de dominio personalizado para el servicio mDNSopencode.local
--corsOrígenes de navegador adicionales para permitir[]

--cors se puede pasar varias veces:

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

Autenticación

Configure OPENCODE_SERVER_PASSWORD para proteger el servidor con autenticación básica HTTP. El nombre de usuario predeterminado es opencode, o configure OPENCODE_SERVER_USERNAME para anularlo. Esto se aplica tanto a opencode serve como a opencode web.

Ventana de terminal
OPENCODE_SERVER_PASSWORD=your-password opencode serve

Cómo funciona

Cuando ejecuta opencode, inicia un TUI y un servidor. Donde el TUI es el Cliente que habla con el servidor. El servidor expone una especificación OpenAPI 3.1 punto final. Este punto final también se utiliza para generar un SDK.

Esta arquitectura permite que opencode admita múltiples clientes y le permite interactuar con opencode mediante programación.

Puede ejecutar opencode serve para iniciar un servidor independiente. Si tienes el opencode TUI ejecutándose, opencode serve iniciará un nuevo servidor.


Conectarse a un servidor existente

Cuando inicia el TUI, asigna aleatoriamente un puerto y un nombre de host. En su lugar, puede pasar --hostname y --port banderas. Luego use esto para conectarse a su servidor.

El punto final /tui se puede utilizar para conducir el TUI a través del servidor. Por ejemplo, puede completar previamente o ejecutar un mensaje. Esta configuración es utilizada por los complementos OpenCode IDE.


Especificaciones

El servidor publica una especificación OpenAPI 3.1 que se puede ver en:

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

Por ejemplo, http://localhost:4096/doc. Utilice la especificación para generar clientes o inspeccionar tipos de solicitudes y respuestas. O verlo en un explorador Swagger.


API

El servidor opencode expone las siguientes API.


Global

MétodoCaminoDescripciónRespuesta
GET/global/healthObtener el estado y la versión del servidor{ healthy: true, version: string }
GET/global/eventObtenga eventos globales (transmisión SSE)Flujo de eventos

Proyecto

MétodoCaminoDescripciónRespuesta
GET/projectListar todos los proyectosProject[]
GET/project/currentObtener el proyecto actualProject

Ruta y VCS

MétodoCaminoDescripciónRespuesta
GET/pathObtener la ruta actualPath
GET/vcsObtenga información de VCS para el proyecto actualVcsInfo

Instancia

MétodoCaminoDescripciónRespuesta
POST/instance/disposeEliminar la instancia actualboolean

Configuración

MétodoCaminoDescripciónRespuesta
GET/configObtener información de configuraciónConfig
PATCH/configActualizar configuraciónConfig
GET/config/providersLista de proveedores y modelos predeterminados{ providers: Proveedor[], default: { [key: string]: string } }

Proveedor

MétodoCaminoDescripciónRespuesta
GET/providerListar todos los proveedores{ all: Proveedor[], default: {...}, connected: string[] }
GET/provider/authObtener métodos de autenticación de proveedores{ [providerID: string]: ProviderAuthMethod[] }
POST/provider/{id}/oauth/authorizeAutorizar a un proveedor usando OAuthProviderAuthAuthorization
POST/provider/{id}/oauth/callbackManejar la devolución de llamada OAuth para un proveedorboolean

Sesiones

MétodoCaminoDescripciónNotas
GET/sessionListar todas las sesionesDevuelve Session[]
POST/sessionCrear una nueva sesióncuerpo: { parentID?, title? }, devuelve Session
GET/session/statusObtener el estado de la sesión para todas las sesionesDevuelve { [sessionID: string]: SessionStatus }
GET/session/:idObtener detalles de la sesiónDevuelve Session
DELETE/session/:idEliminar una sesión y todos sus datosDevuelve boolean
PATCH/session/:idActualizar propiedades de sesióncuerpo: { title? }, devuelve Session
GET/session/:id/childrenObtener las sesiones secundarias de una sesiónDevuelve Session[]
GET/session/:id/todoObtener la lista de tareas pendientes para una sesiónDevuelve Todo[]
POST/session/:id/initAnalizar aplicación y crear AGENTS.mdcuerpo: { messageID, providerID, modelID }, devuelve boolean
POST/session/:id/forkBifurca una sesión existente en un mensajecuerpo: { messageID? }, devuelve Session
POST/session/:id/abortCancelar una sesión en ejecuciónDevuelve boolean
POST/session/:id/shareCompartir una sesiónDevuelve Session
DELETE/session/:id/shareDejar de compartir una sesiónDevuelve Session
GET/session/:id/diffObtenga la diferencia para esta sesiónconsulta: messageID?, devuelve FileDiff[]
POST/session/:id/summarizeResumir la sesióncuerpo: { providerID, modelID }, devuelve boolean
POST/session/:id/revertRevertir un mensajecuerpo: { messageID, partID? }, devuelve boolean
POST/session/:id/unrevertRestaurar todos los mensajes revertidosDevuelve boolean
POST/session/:id/permissions/:permissionIDResponder a una solicitud de permisocuerpo: { response, remember? }, devuelve boolean

Mensajes

MétodoCaminoDescripciónNotas
GET/session/:id/messageListar mensajes en una sesiónconsulta: limit?, devuelve { info: Mensaje, parts: Parte[]}[]
POST/session/:id/messageEnvía un mensaje y espera respuestacuerpo: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, devuelve { info: Mensaje, parts: Parte[]}
GET/session/:id/message/:messageIDObtener detalles del mensajeDevuelve { info: Mensaje, parts: Parte[]}
POST/session/:id/prompt_asyncEnviar un mensaje de forma asincrónica (sin espera)cuerpo: igual que /session/:id/message, devuelve 204 No Content
POST/session/:id/commandEjecutar un comando de barra diagonalcuerpo: { messageID?, agent?, model?, command, arguments }, devuelve { info: Mensaje, parts: Parte[]}
POST/session/:id/shellEjecute un comando de shellcuerpo: { agent, model?, command }, devuelve { info: Mensaje, parts: Parte[]}

Comandos

MétodoCaminoDescripciónRespuesta
GET/commandListar todos los comandosCommand[]

Archivos

MétodoCaminoDescripciónRespuesta
GET/find?pattern=<pat>Buscar texto en archivosMatriz de objetos coincidentes con path, lines, line_number, absolute_offset, submatches
GET/find/file?query=<q>Buscar archivos y directorios por nombrestring[] (caminos)
GET/find/symbol?query=<q>Buscar símbolos del espacio de trabajoSymbol[]
GET/file?path=<path>Listar archivos y directoriosFileNode[]
GET/file/content?path=<p>Leer un archivoFileContent
GET/file/statusObtener el estado de los archivos rastreadosFile[]

/find/file parámetros de consulta

  • query (obligatorio) — cadena de búsqueda (coincidencia aproximada)
  • type (opcional): limita los resultados a "file" o "directory"
  • directory (opcional): anula la raíz del proyecto para la búsqueda.
  • limit (opcional) — resultados máximos (1–200)
  • dirs (opcional): indicador heredado ("false" devuelve solo archivos)

Herramientas (experimentales)

MétodoCaminoDescripciónRespuesta
GET/experimental/tool/idsListar todos los ID de herramientasToolIDs
GET/experimental/tool?provider=<p>&model=<m>Listar herramientas con esquemas JSON para un modeloToolList

LSP, formateadores y MCP

MétodoCaminoDescripciónRespuesta
GET/lspObtener el estado del servidor LSPLSPStatus[]
GET/formatterObtener estado del formateadorFormatterStatus[]
GET/mcpObtener el estado del servidor MCP{ [name: string]: MCPStatus }
POST/mcpAgregue el servidor MCP dinámicamentecuerpo: { name, config }, devuelve MCP objeto de estado

Agentes

MétodoCaminoDescripciónRespuesta
GET/agentListar todos los agentes disponiblesAgent[]

Registro

MétodoCaminoDescripciónRespuesta
POST/logEscribir entrada de registro. Cuerpo: { service, level, message, extra? }boolean

TUI

MétodoCaminoDescripciónRespuesta
POST/tui/append-promptAgregar texto al mensajeboolean
POST/tui/open-helpAbra el cuadro de diálogo de ayudaboolean
POST/tui/open-sessionsAbrir el selector de sesionesboolean
POST/tui/open-themesAbra el selector de temasboolean
POST/tui/open-modelsAbrir el selector de modeloboolean
POST/tui/submit-promptEnviar el mensaje actualboolean
POST/tui/clear-promptBorrar el mensajeboolean
POST/tui/execute-commandEjecutar un comando ({ command })boolean
POST/tui/show-toastMostrar brindis ({ title?, message, variant })boolean
GET/tui/control/nextEspere la próxima solicitud de controlObjeto de solicitud de control
POST/tui/control/responseResponder a una solicitud de control ({ body })boolean

Autenticación

MétodoCaminoDescripciónRespuesta
PUT/auth/:idEstablecer credenciales de autenticación. El cuerpo debe coincidir con el esquema del proveedorboolean

Eventos

MétodoCaminoDescripciónRespuesta
GET/eventTransmisión de eventos enviados por el servidor. El primer evento es server.connected, luego eventos de busTransmisión de eventos enviados por el servidor

Docs

MétodoCaminoDescripciónRespuesta
GET/docEspecificación OpenAPI 3.1Página HTML con especificación OpenAPI