O comando opencode serve executa um servidor HTTP sem cabeça que expõe um endpoint OpenAPI que um cliente opencode pode usar.
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
Flag Descrição Padrão --portPorta para escutar 4096--hostnameNome do host para escutar 127.0.0.1--mdnsHabilitar descoberta mDNS false--mdns-domainNome de domínio personalizado para o serviço mDNS opencode.local--corsOrigens adicionais de navegador a permitir []
--cors pode ser passado várias vezes:
opencode serve --cors http://localhost:5173 --cors https://app.example.com
Defina OPENCODE_SERVER_PASSWORD para proteger o servidor com autenticação básica HTTP. O nome de usuário padrão é opencode, ou defina OPENCODE_SERVER_USERNAME para substituí-lo. Isso se aplica tanto ao opencode serve quanto ao opencode web.
OPENCODE_SERVER_PASSWORD = your-password opencode serve
Quando você executa opencode, ele inicia um TUI e um servidor. Onde o TUI é o cliente que se comunica com o servidor. O servidor expõe um endpoint de especificação OpenAPI 3.1. Este endpoint também é usado para gerar um SDK .
Essa arquitetura permite que o opencode suporte múltiplos clientes e permite que você interaja com o opencode programaticamente.
Você pode executar opencode serve para iniciar um servidor autônomo. Se você tiver o TUI do opencode em execução, opencode serve iniciará um novo servidor.
Quando você inicia o TUI, ele atribui aleatoriamente uma porta e um nome de host. Você pode passar os flags --hostname e --port. Em seguida, use isso para se conectar ao seu servidor.
O endpoint /tui pode ser usado para controlar o TUI através do servidor. Por exemplo, você pode preencher ou executar um prompt. Essa configuração é usada pelos plugins do opencode IDE .
O servidor publica uma especificação OpenAPI 3.1 que pode ser visualizada em:
http://<hostname>:<port>/doc
Por exemplo, http://localhost:4096/doc. Use a especificação para gerar clientes ou inspecionar tipos de requisição e resposta. Ou visualize em um explorador Swagger.
O servidor opencode expõe as seguintes APIs.
Método Caminho Descrição Resposta GET/global/healthObter saúde e versão do servidor { healthy: true, version: string }GET/global/eventObter eventos globais (fluxo SSE) Fluxo de eventos
Método Caminho Descrição Resposta GET/projectListar todos os projetos Project[]GET/project/currentObter o projeto atual Project
Método Caminho Descrição Resposta GET/pathObter o caminho atual PathGET/vcsObter informações do VCS para o projeto atual VcsInfo
Método Caminho Descrição Resposta POST/instance/disposeDescartar a instância atual boolean
Método Caminho Descrição Resposta GET/configObter informações de configuração ConfigPATCH/configAtualizar configuração ConfigGET/config/providersListar provedores e modelos padrão { providers: Provider[] , default: { [key: string]: string } }
Método Caminho Descrição Resposta GET/providerListar todos os provedores { all: Provider[] , default: {...}, connected: string[] }GET/provider/authObter métodos de autenticação do provedor { [providerID: string]: ProviderAuthMethod[] }POST/provider/{id}/oauth/authorizeAutorizar um provedor usando OAuth ProviderAuthAuthorizationPOST/provider/{id}/oauth/callbackLidar com o callback OAuth para um provedor boolean
Método Caminho Descrição Notas GET/sessionListar todas as sessões Retorna Session[] POST/sessionCriar uma nova sessão corpo: { parentID?, title? }, retorna Session GET/session/statusObter status da sessão para todas as sessões Retorna { [sessionID: string]: SessionStatus } GET/session/:idObter detalhes da sessão Retorna Session DELETE/session/:idDeletar uma sessão e todos os seus dados Retorna boolean PATCH/session/:idAtualizar propriedades da sessão corpo: { title? }, retorna Session GET/session/:id/childrenObter as sessões filhas de uma sessão Retorna Session[] GET/session/:id/todoObter a lista de tarefas para uma sessão Retorna Todo[] POST/session/:id/initAnalisar o app e criar AGENTS.md corpo: { messageID, providerID, modelID }, retorna boolean POST/session/:id/forkFazer um fork de uma sessão existente em uma mensagem corpo: { messageID? }, retorna Session POST/session/:id/abortAbortar uma sessão em execução Retorna boolean POST/session/:id/shareCompartilhar uma sessão Retorna Session DELETE/session/:id/shareDescompartilhar uma sessão Retorna Session GET/session/:id/diffObter a diferença para esta sessão query: messageID?, retorna FileDiff[] POST/session/:id/summarizeResumir a sessão corpo: { providerID, modelID }, retorna boolean POST/session/:id/revertReverter uma mensagem corpo: { messageID, partID? }, retorna boolean POST/session/:id/unrevertRestaurar todas as mensagens revertidas Retorna boolean POST/session/:id/permissions/:permissionIDResponder a um pedido de permissão corpo: { response, remember? }, retorna boolean
Método Caminho Descrição Notas GET/session/:id/messageListar mensagens em uma sessão query: limit?, retorna { info: Message , parts: Part[] }[] POST/session/:id/messageEnviar uma mensagem e aguardar resposta corpo: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, retorna { info: Message , parts: Part[] } GET/session/:id/message/:messageIDObter detalhes da mensagem Retorna { info: Message , parts: Part[] } POST/session/:id/prompt_asyncEnviar uma mensagem assíncrona (sem espera) corpo: igual a /session/:id/message, retorna 204 No Content POST/session/:id/commandExecutar um comando de barra corpo: { messageID?, agent?, model?, command, arguments }, retorna { info: Message , parts: Part[] } POST/session/:id/shellExecutar um comando shell corpo: { agent, model?, command }, retorna { info: Message , parts: Part[] }
Método Caminho Descrição Resposta GET/commandListar todos os comandos Command[]
Método Caminho Descrição Resposta GET/find?pattern=<pat>Pesquisar texto em arquivos Array de objetos de correspondência com path, lines, line_number, absolute_offset, submatches GET/find/file?query=<q>Encontrar arquivos e diretórios por nome string[] (caminhos)GET/find/symbol?query=<q>Encontrar símbolos do workspace Symbol[]GET/file?path=<path>Listar arquivos e diretórios FileNode[]GET/file/content?path=<p>Ler um arquivo FileContentGET/file/statusObter status para arquivos rastreados File[]
query (obrigatório) — string de pesquisa (correspondência difusa)
type (opcional) — limitar resultados a "file" ou "directory"
directory (opcional) — substituir a raiz do projeto para a pesquisa
limit (opcional) — resultados máximos (1–200)
dirs (opcional) — flag legada ("false" retorna apenas arquivos)
Método Caminho Descrição Resposta GET/experimental/tool/idsListar todos os IDs de ferramentas ToolIDsGET/experimental/tool?provider=<p>&model=<m>Listar ferramentas com esquemas JSON para um modelo ToolList
Método Caminho Descrição Resposta GET/lspObter status do servidor LSP LSPStatus[]GET/formatterObter status do formatador FormatterStatus[]GET/mcpObter status do servidor MCP { [name: string]: MCPStatus }POST/mcpAdicionar servidor MCP dinamicamente corpo: { name, config }, retorna objeto de status MCP
Método Caminho Descrição Resposta GET/agentListar todos os agentes disponíveis Agent[]
Método Caminho Descrição Resposta POST/logEscrever entrada de log. Corpo: { service, level, message, extra? } boolean
Método Caminho Descrição Resposta POST/tui/append-promptAnexar texto ao prompt booleanPOST/tui/open-helpAbrir o diálogo de ajuda booleanPOST/tui/open-sessionsAbrir o seletor de sessões booleanPOST/tui/open-themesAbrir o seletor de temas booleanPOST/tui/open-modelsAbrir o seletor de modelos booleanPOST/tui/submit-promptEnviar o prompt atual booleanPOST/tui/clear-promptLimpar o prompt booleanPOST/tui/execute-commandExecutar um comando ({ command }) booleanPOST/tui/show-toastMostrar toast ({ title?, message, variant }) booleanGET/tui/control/nextAguardar o próximo pedido de controle Objeto de pedido de controle POST/tui/control/responseResponder a um pedido de controle ({ body }) boolean
Método Caminho Descrição Resposta PUT/auth/:idDefinir credenciais de autenticação. O corpo deve corresponder ao esquema do provedor boolean
Método Caminho Descrição Resposta GET/eventFluxo de eventos enviados pelo servidor. O primeiro evento é server.connected, depois eventos de bus Fluxo de eventos enviados pelo servidor
Método Caminho Descrição Resposta GET/docEspecificação OpenAPI 3.1 Página HTML com a especificação OpenAPI