Il comando opencode serve esegue un server HTTP headless che espone un endpoint OpenAPI usato dai client OpenCode.
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
Flag Descrizione Default --portPorta di ascolto 4096--hostnameHostname di ascolto 127.0.0.1--mdnsAbilita il discovery mDNS false--corsOrigini addizionali per CORS []
--cors può essere specificato più volte:
opencode serve --cors http://localhost:5173 --cors https://app.example.com
Quando esegui opencode, vengono avviati sia il TUI che un server. Il TUI è il client che parla con il server. Il server espone un endpoint con specifica OpenAPI 3.1, usato anche per generare l’SDK .
Questa architettura permette di avere più client e di controllare OpenCode da script, app o integrazioni esterne.
Puoi eseguire opencode serve per avviare un server standalone. Se il TUI è già in esecuzione, opencode serve avvierà un nuovo server.
All’avvio il TUI sceglie un hostname e una porta casuali. In alternativa puoi specificarli con i flag --hostname e --port (vedi CLI ); altri client potranno quindi collegarsi a quel server.
L’endpoint /tui consente di pilotare il TUI attraverso il server: ad esempio pre‑compilare o inviare un prompt. Questo è il meccanismo usato dai plugin IDE .
Il server pubblica una specifica OpenAPI 3.1 accessibile a:
http://<hostname>:<port>/doc
Ad esempio: http://localhost:4096/doc. Puoi usarla per generare client, ispezionare tipi di request/response o visualizzarla con Swagger.
Il server OpenCode espone le API seguenti.
Metodo Path Descrizione Risposta GET/global/healthStato e versione del server { healthy: true, version: string }GET/global/eventEventi globali (stream SSE) Stream di eventi
Metodo Path Descrizione Risposta GET/projectElenco di tutti i progetti Project[]GET/project/currentProgetto corrente Project
Metodo Path Descrizione Risposta GET/pathPath corrente PathGET/vcsInfo VCS per il progetto corrente VcsInfo
Metodo Path Descrizione Risposta POST/instance/disposeChiudere l’istanza corrente boolean
Metodo Path Descrizione Risposta GET/configOttenere la configurazione ConfigPATCH/configAggiornare la configurazione ConfigGET/config/providersElenco provider e modelli di default { providers: Provider[] , default: { [key: string]: string } }
Metodo Path Descrizione Risposta GET/providerElenco di tutti i provider { all: Provider[] , default: {...}, connected: string[] }GET/provider/authMetodi di autenticazione per provider { [providerID: string]: ProviderAuthMethod[] }POST/provider/{id}/oauth/authorizeAvviare OAuth per un provider ProviderAuthAuthorizationPOST/provider/{id}/oauth/callbackCallback OAuth boolean
Metodo Path Descrizione Note GET/sessionElenco di tutte le sessioni Restituisce Session[] POST/sessionCreare una nuova sessione body: { parentID?, title? } → Session GET/session/statusStato di tutte le sessioni { [sessionID: string]: SessionStatus }GET/session/:idDettagli di una sessione SessionDELETE/session/:idEliminare una sessione e i suoi dati booleanPATCH/session/:idAggiornare le proprietà di una sessione body: { title? } → Session GET/session/:id/childrenElenco delle sotto‑sessioni Session[]GET/session/:id/todoLista TODO per una sessione Todo[]POST/session/:id/initAnalizzare il repo e generare AGENTS.md body: { messageID, providerID, modelID } → boolean POST/session/:id/forkFork di una sessione a un certo messaggio body: { messageID? } → Session POST/session/:id/abortAnnullare una sessione in esecuzione booleanPOST/session/:id/shareCondividere una sessione SessionDELETE/session/:id/shareInterrompere la condivisione di una sessione SessionGET/session/:id/diffOttenere il diff della sessione query: messageID? → FileDiff[] POST/session/:id/summarizeRiassumere la sessione body: { providerID, modelID } → boolean POST/session/:id/revertRevert di un messaggio body: { messageID, partID? } → boolean POST/session/:id/unrevertRipristinare messaggi revertiti booleanPOST/session/:id/permissions/:permissionIDRispondere a una richiesta di permesso body: { response, remember? } → boolean
Metodo Path Descrizione Note GET/session/:id/messageElenco messaggi di una sessione query: limit? → { info: Message , parts: Part[] }[] POST/session/:id/messageInviare un messaggio e attendere risposta body: { messageID?, model?, agent?, noReply?, system?, tools?, parts } → { info, parts } GET/session/:id/message/:messageIDDettagli di un messaggio { info: Message , parts: Part[] }POST/session/:id/prompt_asyncInviare un messaggio async (senza attesa) body come /session/:id/message, risposta 204 No Content POST/session/:id/commandEseguire un comando slash body: { messageID?, agent?, model?, command, arguments } → { info, parts } POST/session/:id/shellEseguire un comando di shell body: { agent, model?, command } → { info, parts }
Metodo Path Descrizione Risposta GET/commandElenco di tutti i comandi Command[]
Metodo Path Descrizione Risposta GET/find?pattern=<pat>Ricerca di testo nei file Array di match con path, lines, line_number, absolute_offset, submatches GET/find/file?query=<q>Ricerca file e directory per nome string[] (path)GET/find/symbol?query=<q>Ricerca simboli nel workspace Symbol[]GET/file?path=<path>Elenco file e directory FileNode[]GET/file/content?path=<p>Lettura di un file FileContentGET/file/statusStato dei file tracciati File[]
query (obbligatorio): stringa di ricerca (fuzzy)
type (opzionale): limitare a "file" o "directory"
directory (opzionale): root alternativa per la ricerca
limit (opzionale): numero massimo di risultati (1–200)
dirs (opzionale): flag legacy ("false" restituisce solo file)
Metodo Path Descrizione Risposta GET/experimental/tool/idsElenco di tutti gli ID tool ToolIDsGET/experimental/tool?provider=<p>&model=<m>Elenco tool con schema JSON per un modello ToolList
Metodo Path Descrizione Risposta GET/lspStato dei server LSP LSPStatus[]GET/formatterStato dei formatter FormatterStatus[]GET/mcpStato dei server MCP { [name: string]: MCPStatus }POST/mcpAggiungere un server MCP body: { name, config } → oggetto stato MCP
Metodo Path Descrizione Risposta GET/agentElenco di tutti gli agent Agent[]
Metodo Path Descrizione Risposta POST/logScrivere una voce di log ({ service, level, message, extra? }) boolean
Metodo Path Descrizione Risposta POST/tui/append-promptAggiungere testo al prompt booleanPOST/tui/open-helpAprire la finestra di help booleanPOST/tui/open-sessionsAprire il selettore di sessioni booleanPOST/tui/open-themesAprire il selettore di temi booleanPOST/tui/open-modelsAprire il selettore di modelli booleanPOST/tui/submit-promptInviare il prompt corrente booleanPOST/tui/clear-promptSvuotare il prompt booleanPOST/tui/execute-commandEseguire un comando ({ command }) booleanPOST/tui/show-toastMostrare un toast ({ title?, message, variant }) booleanGET/tui/control/nextAttendere la prossima richiesta di controllo Oggetto di controllo POST/tui/control/responseRispondere a una richiesta di controllo ({ body }) boolean
Metodo Path Descrizione Risposta PUT/auth/:idImpostare le credenziali per un provider (body secondo schema) boolean
Metodo Path Descrizione Risposta GET/eventStream SSE; primo evento server.connected, poi eventi del message bus Stream eventi SSE
Metodo Path Descrizione Risposta GET/docSpecifica OpenAPI 3.1 Pagina HTML con la specifica