El comando opencode serve ejecuta un servidor HTTP sin cabeza que expone un punto final OpenAPI que un cliente opencode puede usar.
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
Bandera Descripción Predeterminado --portPuerto para escuchar 4096--hostnameNombre de host para escuchar 127.0.0.1--mdnsHabilitar el descubrimiento de mDNS false--mdns-domainNombre de dominio personalizado para el servicio mDNS opencode.local--corsOrígenes de navegador adicionales para permitir []
--cors se puede pasar varias veces:
opencode serve --cors http://localhost:5173 --cors https://app.example.com
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.
OPENCODE_SERVER_PASSWORD = your-password opencode serve
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.
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 .
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.
El servidor opencode expone las siguientes API.
Método Camino Descripción Respuesta 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
Método Camino Descripción Respuesta GET/projectListar todos los proyectos Project[]GET/project/currentObtener el proyecto actual Project
Método Camino Descripción Respuesta GET/pathObtener la ruta actual PathGET/vcsObtenga información de VCS para el proyecto actual VcsInfo
Método Camino Descripción Respuesta POST/instance/disposeEliminar la instancia actual boolean
Método Camino Descripción Respuesta GET/configObtener información de configuración ConfigPATCH/configActualizar configuración ConfigGET/config/providersLista de proveedores y modelos predeterminados { providers: Proveedor[] , default: { [key: string]: string } }
Método Camino Descripción Respuesta 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 OAuth ProviderAuthAuthorizationPOST/provider/{id}/oauth/callbackManejar la devolución de llamada OAuth para un proveedor boolean
Método Camino Descripción Notas GET/sessionListar todas las sesiones Devuelve Session[] POST/sessionCrear una nueva sesión cuerpo: { parentID?, title? }, devuelve Session GET/session/statusObtener el estado de la sesión para todas las sesiones Devuelve { [sessionID: string]: SessionStatus } GET/session/:idObtener detalles de la sesión Devuelve Session DELETE/session/:idEliminar una sesión y todos sus datos Devuelve boolean PATCH/session/:idActualizar propiedades de sesión cuerpo: { title? }, devuelve Session GET/session/:id/childrenObtener las sesiones secundarias de una sesión Devuelve Session[] GET/session/:id/todoObtener la lista de tareas pendientes para una sesión Devuelve Todo[] POST/session/:id/initAnalizar aplicación y crear AGENTS.md cuerpo: { messageID, providerID, modelID }, devuelve boolean POST/session/:id/forkBifurca una sesión existente en un mensaje cuerpo: { messageID? }, devuelve Session POST/session/:id/abortCancelar una sesión en ejecución Devuelve boolean POST/session/:id/shareCompartir una sesión Devuelve Session DELETE/session/:id/shareDejar de compartir una sesión Devuelve Session GET/session/:id/diffObtenga la diferencia para esta sesión consulta: messageID?, devuelve FileDiff[] POST/session/:id/summarizeResumir la sesión cuerpo: { providerID, modelID }, devuelve boolean POST/session/:id/revertRevertir un mensaje cuerpo: { messageID, partID? }, devuelve boolean POST/session/:id/unrevertRestaurar todos los mensajes revertidos Devuelve boolean POST/session/:id/permissions/:permissionIDResponder a una solicitud de permiso cuerpo: { response, remember? }, devuelve boolean
Método Camino Descripción Notas GET/session/:id/messageListar mensajes en una sesión consulta: limit?, devuelve { info: Mensaje , parts: Parte[] }[] POST/session/:id/messageEnvía un mensaje y espera respuesta cuerpo: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, devuelve { info: Mensaje , parts: Parte[] } GET/session/:id/message/:messageIDObtener detalles del mensaje Devuelve { 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 diagonal cuerpo: { messageID?, agent?, model?, command, arguments }, devuelve { info: Mensaje , parts: Parte[] } POST/session/:id/shellEjecute un comando de shell cuerpo: { agent, model?, command }, devuelve { info: Mensaje , parts: Parte[] }
Método Camino Descripción Respuesta GET/commandListar todos los comandos Command[]
Método Camino Descripción Respuesta GET/find?pattern=<pat>Buscar texto en archivos Matriz de objetos coincidentes con path, lines, line_number, absolute_offset, submatches GET/find/file?query=<q>Buscar archivos y directorios por nombre string[] (caminos)GET/find/symbol?query=<q>Buscar símbolos del espacio de trabajo Symbol[]GET/file?path=<path>Listar archivos y directorios FileNode[]GET/file/content?path=<p>Leer un archivo FileContentGET/file/statusObtener el estado de los archivos rastreados File[]
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)
Método Camino Descripción Respuesta GET/experimental/tool/idsListar todos los ID de herramientas ToolIDsGET/experimental/tool?provider=<p>&model=<m>Listar herramientas con esquemas JSON para un modelo ToolList
Método Camino Descripción Respuesta GET/lspObtener el estado del servidor LSP LSPStatus[]GET/formatterObtener estado del formateador FormatterStatus[]GET/mcpObtener el estado del servidor MCP { [name: string]: MCPStatus }POST/mcpAgregue el servidor MCP dinámicamente cuerpo: { name, config }, devuelve MCP objeto de estado
Método Camino Descripción Respuesta GET/agentListar todos los agentes disponibles Agent[]
Método Camino Descripción Respuesta POST/logEscribir entrada de registro. Cuerpo: { service, level, message, extra? } boolean
Método Camino Descripción Respuesta POST/tui/append-promptAgregar texto al mensaje booleanPOST/tui/open-helpAbra el cuadro de diálogo de ayuda booleanPOST/tui/open-sessionsAbrir el selector de sesiones booleanPOST/tui/open-themesAbra el selector de temas booleanPOST/tui/open-modelsAbrir el selector de modelo booleanPOST/tui/submit-promptEnviar el mensaje actual booleanPOST/tui/clear-promptBorrar el mensaje booleanPOST/tui/execute-commandEjecutar un comando ({ command }) booleanPOST/tui/show-toastMostrar brindis ({ title?, message, variant }) booleanGET/tui/control/nextEspere la próxima solicitud de control Objeto de solicitud de control POST/tui/control/responseResponder a una solicitud de control ({ body }) boolean
Método Camino Descripción Respuesta PUT/auth/:idEstablecer credenciales de autenticación. El cuerpo debe coincidir con el esquema del proveedor boolean
Método Camino Descripción Respuesta GET/eventTransmisión de eventos enviados por el servidor. El primer evento es server.connected, luego eventos de bus Transmisión de eventos enviados por el servidor
Método Camino Descripción Respuesta GET/docEspecificación OpenAPI 3.1 Página HTML con especificación OpenAPI