Português
Documentação
Servidor

Servidor

Interaja com o servidor opencode via HTTP.

O comando opencode serve executa um servidor HTTP headless que expoe um endpoint OpenAPI que um cliente opencode pode usar.


Uso

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

Opcoes

FlagDescricaoPadrao
--portPorta para escutar4096
--hostnameHostname para escutar127.0.0.1
--mdnsHabilitar descoberta mDNSfalse
--mdns-domainNome de dominio personalizado para servico mDNSopencode.local
--corsOrigens de navegador adicionais permitidas[]

--cors pode ser passado multiplas vezes:

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

Autenticacao

Defina OPENCODE_SERVER_PASSWORD para proteger o servidor com autenticacao HTTP basica. O nome de usuario padrao e opencode, ou defina OPENCODE_SERVER_USERNAME para altera-lo. Isso se aplica tanto a opencode serve quanto a opencode web.

OPENCODE_SERVER_PASSWORD=your-password opencode serve

Como funciona

Quando voce executa opencode, ele inicia uma TUI e um servidor. A TUI e o cliente que se comunica com o servidor. O servidor expoe um endpoint de especificacao OpenAPI 3.1. Este endpoint tambem e usado para gerar um SDK.

Dica: Use o servidor opencode para interagir com opencode programaticamente.

Esta arquitetura permite que opencode suporte multiplos clientes e permite que voce interaja com opencode programaticamente.

Voce pode executar opencode serve para iniciar um servidor independente. Se voce ja tem a TUI do opencode em execucao, opencode serve iniciara um novo servidor.


Conectar a um servidor existente

Quando voce inicia a TUI, ela atribui aleatoriamente uma porta e hostname. Voce pode passar os flags --hostname e --port. Entao use isso para conectar ao servidor.

O endpoint /tui pode ser usado para controlar a TUI atraves do servidor. Por exemplo, voce pode preencher ou executar um prompt. Esta configuracao e usada pelos plugins de IDE do OpenCode.


Especificacao

O servidor publica uma especificacao OpenAPI 3.1 que pode ser visualizada em:

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

Por exemplo, http://localhost:4096/doc. Use a especificacao para gerar clientes ou inspecionar tipos de requisicao e resposta. Ou visualize em um explorador Swagger.


APIs

O servidor opencode expoe as seguintes APIs.


Global

MetodoCaminhoDescricaoResposta
GET/global/healthObter saude do servidor e versao{ healthy: true, version: string }
GET/global/eventObter eventos globais (stream SSE)Stream de eventos

Projeto

MetodoCaminhoDescricaoResposta
GET/projectListar todos os projetosProject[]
GET/project/currentObter o projeto atualProject

Caminho e VCS

MetodoCaminhoDescricaoResposta
GET/pathObter o caminho atualPath
GET/vcsObter info VCS do projeto atualVcsInfo

Instancia

MetodoCaminhoDescricaoResposta
POST/instance/disposeDescartar a instancia atualboolean

Configuracao

MetodoCaminhoDescricaoResposta
GET/configObter info de configuracaoConfig
PATCH/configAtualizar configuracaoConfig
GET/config/providersListar provedores e modelos padrao{ providers: Provider[], default: { [key: string]: string } }

Provedor

MetodoCaminhoDescricaoResposta
GET/providerListar todos os provedores{ all: Provider[], default: {...}, connected: string[] }
GET/provider/authObter metodos de autenticacao do provedor{ [providerID: string]: ProviderAuthMethod[] }
POST/provider/{id}/oauth/authorizeAutorizar provedor usando OAuthProviderAuthAuthorization
POST/provider/{id}/oauth/callbackTratar callback OAuth do provedorboolean

Sessoes

MetodoCaminhoDescricaoNotas
GET/sessionListar todas as sessoesRetorna Session[]
POST/sessionCriar nova sessaobody: { parentID?, title? }, retorna Session
GET/session/statusObter status de todas as sessoesRetorna { [sessionID: string]: SessionStatus }
GET/session/:idObter detalhes da sessaoRetorna Session
DELETE/session/:idExcluir sessao e todos os dadosRetorna boolean
PATCH/session/:idAtualizar propriedades da sessaobody: { title? }, retorna Session
GET/session/:id/childrenObter sessoes filhasRetorna Session[]
GET/session/:id/todoObter lista de tarefas da sessaoRetorna Todo[]
POST/session/:id/initAnalisar app e criar AGENTS.mdbody: { messageID, providerID, modelID }, retorna boolean
POST/session/:id/forkBifurcar sessao existente em uma mensagembody: { messageID? }, retorna Session
POST/session/:id/abortAbortar sessao em execucaoRetorna boolean
POST/session/:id/shareCompartilhar sessaoRetorna Session
DELETE/session/:id/shareParar de compartilhar sessaoRetorna Session
GET/session/:id/diffObter diff desta sessaoquery: messageID?, retorna FileDiff[]
POST/session/:id/summarizeResumir a sessaobody: { providerID, modelID }, retorna boolean
POST/session/:id/revertReverter uma mensagembody: { messageID, partID? }, retorna boolean
POST/session/:id/unrevertRestaurar todas as mensagens revertidasRetorna boolean
POST/session/:id/permissions/:permissionIDResponder a solicitacao de permissaobody: { response, remember? }, retorna boolean

Mensagens

MetodoCaminhoDescricaoNotas
GET/session/:id/messageListar mensagens na sessaoquery: limit?, retorna { info: Message, parts: Part[] }[]
POST/session/:id/messageEnviar mensagem e aguardar respostabody: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, retorna { info: Message, parts: Part[] }
GET/session/:id/message/:messageIDObter detalhes da mensagemRetorna { info: Message, parts: Part[] }
POST/session/:id/prompt_asyncEnviar mensagem assincronamente (sem esperar)body: igual a /session/:id/message, retorna 204 No Content
POST/session/:id/commandExecutar comando slashbody: { messageID?, agent?, model?, command, arguments }, retorna { info: Message, parts: Part[] }
POST/session/:id/shellExecutar comando shellbody: { agent, model?, command }, retorna { info: Message, parts: Part[] }

Comandos

MetodoCaminhoDescricaoResposta
GET/commandListar todos os comandosCommand[]

Arquivos

MetodoCaminhoDescricaoResposta
GET/find?pattern=<pat>Buscar texto em arquivosArray de objetos de correspondencia com path, lines, line_number, absolute_offset, submatches
GET/find/file?query=<q>Encontrar arquivos e diretorios por nomestring[] (caminhos)
GET/find/symbol?query=<q>Encontrar simbolos do workspaceSymbol[]
GET/file?path=<path>Listar arquivos e diretoriosFileNode[]
GET/file/content?path=<p>Ler um arquivoFileContent
GET/file/statusObter status de arquivos rastreadosFile[]

Parametros de consulta de /find/file

  • query (obrigatorio) — string de busca (correspondencia difusa)
  • type (opcional) — limitar resultados a "file" ou "directory"
  • directory (opcional) — sobrescrever raiz do projeto para busca
  • limit (opcional) — max resultados (1–200)
  • dirs (opcional) — flag legado ("false" retorna apenas arquivos)

Ferramentas (Experimental)

MetodoCaminhoDescricaoResposta
GET/experimental/tool/idsListar todos os IDs de ferramentasToolIDs
GET/experimental/tool?provider=<p>&model=<m>Listar ferramentas com schemas JSON para modeloToolList

LSP, Formatadores e MCP

MetodoCaminhoDescricaoResposta
GET/lspObter status do servidor LSPLSPStatus[]
GET/formatterObter status do formatadorFormatterStatus[]
GET/mcpObter status do servidor MCP{ [name: string]: MCPStatus }
POST/mcpAdicionar servidor MCP dinamicamentebody: { name, config }, retorna objeto de status MCP

Agentes

MetodoCaminhoDescricaoResposta
GET/agentListar todos os agentes disponiveisAgent[]

Logging

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

TUI

MetodoCaminhoDescricaoResposta
POST/tui/append-promptAdicionar texto ao promptboolean
POST/tui/open-helpAbrir dialogo de ajudaboolean
POST/tui/open-sessionsAbrir seletor de sessoesboolean
POST/tui/open-themesAbrir seletor de temasboolean
POST/tui/open-modelsAbrir seletor de modelosboolean
POST/tui/submit-promptEnviar o prompt atualboolean
POST/tui/clear-promptLimpar o promptboolean
POST/tui/execute-commandExecutar comando ({ command })boolean
POST/tui/show-toastMostrar toast ({ title?, message, variant })boolean
GET/tui/control/nextAguardar proxima solicitacao de controleObjeto de solicitacao de controle
POST/tui/control/responseResponder a solicitacao de controle ({ body })boolean

Auth

MetodoCaminhoDescricaoResposta
PUT/auth/:idDefinir credenciais de autenticacao. Body deve corresponder ao schema do provedorboolean

Eventos

MetodoCaminhoDescricaoResposta
GET/eventStream de eventos enviados pelo servidor. Primeiro evento e server.connected, depois eventos do busStream de eventos enviados pelo servidor

Docs

MetodoCaminhoDescricaoResposta
GET/docEspecificacao OpenAPI 3.1Pagina HTML com especificacao OpenAPI