Il comando opencode serve avvia un server HTTP headless che espone un endpoint OpenAPI utilizzabile da un client opencode.
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
Flag Descrizione Predefinito --portPorta su cui ascoltare 4096--hostnameHostname su cui ascoltare 127.0.0.1--mdnsAbilita la scoperta mDNS false--mdns-domainNome di dominio personalizzato mDNS opencode.local--corsOrigin browser aggiuntive da permettere []
--cors puo essere passato piu volte:
opencode serve --cors http://localhost:5173 --cors https://app.example.com
Imposta OPENCODE_SERVER_PASSWORD per proteggere il server con HTTP basic auth. Lo username predefinito e opencode, oppure imposta OPENCODE_SERVER_USERNAME per sovrascriverlo. Questo vale sia per opencode serve sia per opencode web.
OPENCODE_SERVER_PASSWORD = your-password opencode serve
Quando esegui opencode avvia una TUI e un server. La TUI e il client che parla col server. Il server espone un endpoint con specifica OpenAPI 3.1. Questo endpoint viene anche usato per generare un SDK .
Questa architettura permette a opencode di supportare piu client e di essere usato in modo programmatico.
Puoi eseguire opencode serve per avviare un server standalone. Se la TUI di opencode e gia in esecuzione, opencode serve avviera un nuovo server.
Quando avvii la TUI assegna casualmente porta e hostname. In alternativa puoi passare i flag --hostname e --port e poi usare questi valori per connetterti al suo server.
L’endpoint /tui puo essere usato per pilotare la TUI tramite il server. Per esempio, puoi precompilare o eseguire un prompt. Questa configurazione e usata dai plugin IDE di OpenCode.
Il server pubblica una specifica OpenAPI 3.1 visualizzabile su:
http://<hostname>:<port>/doc
Per esempio, http://localhost:4096/doc. Usa la spec per generare client o ispezionare i tipi di request/response, oppure visualizzala in uno Swagger explorer.
Il server opencode espone le seguenti API.
Metodo Path Descrizione Response GET/global/healthStato di salute e versione { healthy: true, version: string }GET/global/eventEventi globali (stream SSE) Event stream
Metodo Path Descrizione Response GET/projectElenca tutti i progetti Project[]GET/project/currentProgetto corrente Project
Metodo Path Descrizione Response GET/pathPercorso corrente PathGET/vcsInfo VCS per il progetto corrente VcsInfo
Metodo Path Descrizione Response POST/instance/disposeRilascia l’istanza corrente boolean
Metodo Path Descrizione Response GET/configInfo sulla config ConfigPATCH/configAggiorna la config ConfigGET/config/providersElenca provider e modelli default { providers: Provider[] , default: { [key: string]: string } }
Metodo Path Descrizione Response GET/providerElenca tutti i provider { all: Provider[] , default: {...}, connected: string[] }GET/provider/authMetodi auth dei provider { [providerID: string]: ProviderAuthMethod[] }POST/provider/{id}/oauth/authorizeAutorizza un provider via OAuth ProviderAuthAuthorizationPOST/provider/{id}/oauth/callbackGestisce callback OAuth boolean
Metodo Path Descrizione Note GET/sessionElenca tutte le sessioni Returns Session[] POST/sessionCrea una nuova sessione body: { parentID?, title? }, returns Session GET/session/statusStato di tutte le sessioni Returns { [sessionID: string]: SessionStatus } GET/session/:idDettagli di sessione Returns Session DELETE/session/:idElimina una sessione e i suoi dati Returns boolean PATCH/session/:idAggiorna proprieta sessione body: { title? }, returns Session GET/session/:id/childrenSessioni figlie Returns Session[] GET/session/:id/todoTodo list della sessione Returns Todo[] POST/session/:id/initAnalizza app e crea AGENTS.md body: { messageID, providerID, modelID }, returns boolean POST/session/:id/forkFork di sessione su un messaggio body: { messageID? }, returns Session POST/session/:id/abortInterrompe una sessione in esecuzione Returns boolean POST/session/:id/shareCondivide una sessione Returns Session DELETE/session/:id/shareAnnulla condivisione Returns Session GET/session/:id/diffDiff della sessione query: messageID?, returns FileDiff[] POST/session/:id/summarizeRiassume la sessione body: { providerID, modelID }, returns boolean POST/session/:id/revertRipristina un messaggio body: { messageID, partID? }, returns boolean POST/session/:id/unrevertRipristina tutti i messaggi revertiti Returns boolean POST/session/:id/permissions/:permissionIDRisponde a una richiesta permessi body: { response, remember? }, returns boolean
Metodo Path Descrizione Note GET/session/:id/messageElenca messaggi in una sessione query: limit?, returns { info: Message , parts: Part[] }[] POST/session/:id/messageInvia un messaggio e attende risposta body: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, returns { info: Message , parts: Part[] } GET/session/:id/message/:messageIDDettagli messaggio Returns { info: Message , parts: Part[] } POST/session/:id/prompt_asyncInvia un messaggio in async (senza wait) body: same as /session/:id/message, returns 204 No Content POST/session/:id/commandEsegue un comando slash body: { messageID?, agent?, model?, command, arguments }, returns { info: Message , parts: Part[] } POST/session/:id/shellEsegue un comando shell body: { agent, model?, command }, returns { info: Message , parts: Part[] }
Metodo Path Descrizione Response GET/commandElenca i comandi Command[]
Metodo Path Descrizione Response GET/find?pattern=<pat>Cerca testo nei file Array of match objects with path, lines, line_number, absolute_offset, submatches GET/find/file?query=<q>Trova file e directory per nome string[] (paths)GET/find/symbol?query=<q>Trova simboli workspace Symbol[]GET/file?path=<path>Elenca file e directory FileNode[]GET/file/content?path=<p>Legge un file FileContentGET/file/statusStato dei file tracciati File[]
query (required) — stringa di ricerca (fuzzy match)
type (optional) — limita i risultati a "file" o "directory"
directory (optional) — sovrascrive la root del progetto per la ricerca
limit (optional) — massimo risultati (1–200)
dirs (optional) — flag legacy ("false" restituisce solo file)
Metodo Path Descrizione Response GET/experimental/tool/idsElenca tutti i tool ID ToolIDsGET/experimental/tool?provider=<p>&model=<m>Elenca tool con JSON schema per un modello ToolList
Metodo Path Descrizione Response GET/lspStato server LSP LSPStatus[]GET/formatterStato formatter FormatterStatus[]GET/mcpStato server MCP { [name: string]: MCPStatus }POST/mcpAggiunge server MCP runtime body: { name, config }, returns MCP status object
Metodo Path Descrizione Response GET/agentElenca tutti gli agenti Agent[]
Metodo Path Descrizione Response POST/logScrive una voce di log. Body: { service, level, message, extra? } boolean
Metodo Path Descrizione Response POST/tui/append-promptAggiunge testo al prompt booleanPOST/tui/open-helpApre il dialog help booleanPOST/tui/open-sessionsApre il selettore sessioni booleanPOST/tui/open-themesApre il selettore temi booleanPOST/tui/open-modelsApre il selettore modelli booleanPOST/tui/submit-promptInvia il prompt corrente booleanPOST/tui/clear-promptPulisce il prompt booleanPOST/tui/execute-commandEsegue un comando ({ command }) booleanPOST/tui/show-toastMostra toast ({ title?, message, variant }) booleanGET/tui/control/nextAttende la prossima richiesta di controllo Control request object POST/tui/control/responseRisponde a una richiesta di controllo ({ body }) boolean
Metodo Path Descrizione Response PUT/auth/:idImposta credenziali auth. Il body deve rispettare lo schema provider boolean
Metodo Path Descrizione Response GET/eventStream SSE. Primo evento server.connected, poi eventi bus Server-sent events stream
Metodo Path Descrizione Response GET/docSpecifica OpenAPI 3.1 Pagina HTML con spec OpenAPI