Der Befehl opencode serve fhrt einen kopflosen HTTP-Server aus, der einen OpenAPI-Endpunkt bereitstellt, den ein opencode-Client verwenden kann.
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
Flag Description Default --portPort fr den Listen 4096--hostnameHostname fr den Listen 127.0.0.1--mdnsmDNS-Entdeckung aktivieren false--corsZustzliche Browser-Originale zulassen []
--cors kann mehrfach bergeben werden:
opencode serve --cors http://localhost:5173 --cors https://app.example.com
Wenn Sie opencode ausfhren, wird ein TUI und ein Server gestartet. Das TUI ist der Client, der mit dem Server kommuniziert. Der Server stellt einen OpenAPI 3.1-Spezifikations-Endpunkt bereit. Dieser Endpunkt wird auch verwendet, um ein SDK zu generieren.
Diese Architektur ermglicht es opencode, mehrere Clients zu untersttzen und es Ihnen zu ermglichen, programmgesteuert mit opencode zu interagieren.
Sie knnen opencode serve ausfhren, um einen eigenstndigen Server zu starten. Wenn der opencode-TUI luft, wird opencode serve einen neuen Server starten.
Wenn Sie das TUI starten, wird zufllig ein Port und ein Hostname zugewiesen. Sie knnen stattdessen die --hostname und --port Flags bergeben. Verwenden Sie diese dann, um eine Verbindung mit seinem Server herzustellen.
Der /tui -Endpunkt kann verwendet werden, um das TUI ber den Server zu steuern. Sie knnen beispielsweise einen Prompt vorab ausfllen oder ausfhren. Dieses Setup wird von den OpenCode-IDE -Plugins verwendet.
Der Server verffentlicht eine OpenAPI 3.1-Spezifikation, die unter folgender Adresse angezeigt werden kann:
http://<hostname>:<port>/doc
Zum Beispiel http://localhost:4096/doc. Verwenden Sie die Spezifikation, um Clients zu generieren oder Anforderungs- und Antworttypen zu berprfen. Oder anzeigen Sie sie in einem Swagger-Explorer.
Der opencode-Server stellt die folgenden APIs bereit.
Method Path Description Response GET/global/healthServer-Status und Version abrufen { healthy: true, version: string }GET/global/eventGlobale Events abrufen (SSE-Stream) Event-Stream
Method Path Description Response GET/projectAlle Projekte auflisten Project[]GET/project/currentAktuelles Projekt abrufen Project
Method Path Description Response GET/pathAktuellen Pfad abrufen PathGET/vcsVCS-Informationen fr das aktuelle Projekt abrufen VcsInfo
Method Path Description Response POST/instance/disposeAktuelle Instanz entsorgen boolean
Method Path Description Response GET/configKonfigurations-Informationen abrufen ConfigPATCH/configKonfiguration aktualisieren ConfigGET/config/providersAnbieter und Standardmodelle auflisten { providers: Provider[] , default: { [key: string]: string } }
Method Path Description Response GET/providerAlle Anbieter auflisten { all: Provider[] , default: {...}, connected: string[] }GET/provider/authAnbieter-Authentifizierungsmethoden abrufen { [providerID: string]: ProviderAuthMethod[] }POST/provider/{id}/oauth/authorizeAnbieter mit OAuth autorisieren ProviderAuthAuthorizationPOST/provider/{id}/oauth/callbackOAuth-Callback fr einen Anbieter verarbeiten boolean
Method Path Description Notes GET/sessionAlle Sitzungen auflisten Gibt Session[] zurck POST/sessionNeue Sitzung erstellen body: { parentID?, title? }, gibt Session zurck GET/session/statusSitzungsstatus fr alle Sitzungen abrufen Gibt { [sessionID: string]: SessionStatus } zurck GET/session/:idSitzungsdetails abrufen Gibt Session zurck DELETE/session/:idSitzung und alle ihre Daten lschen Gibt boolean zurck PATCH/session/:idSitzungseigenschaften aktualisieren body: { title? }, gibt Session zurck GET/session/:id/childrenKindersitzungen einer Sitzung abrufen Gibt Session[] zurck GET/session/:id/todoTodo-Liste fr eine Sitzung abrufen Gibt Todo[] zurck POST/session/:id/initApp analysieren und AGENTS.md erstellen body: { messageID, providerID, modelID }, gibt boolean zurck POST/session/:id/forkVorhandene Sitzung bei einer Nachricht forken body: { messageID? }, gibt Session zurck POST/session/:id/abortLaufende Sitzung abbrechen Gibt boolean zurck POST/session/:id/shareSitzung teilen Gibt Session zurck DELETE/session/:id/shareFreigabe der Sitzung aufheben Gibt Session zurck GET/session/:id/diffDiff fr diese Sitzung abrufen query: messageID?, gibt FileDiff[] zurck POST/session/:id/summarizeSitzung zusammenfassen body: { providerID, modelID }, gibt boolean zurck POST/session/:id/revertNachricht zurcknehmen body: { messageID, partID? }, gibt boolean zurck POST/session/:id/unrevertAlle zurckgenommenen Nachrichten wiederherstellen Gibt boolean zurck POST/session/:id/permissions/:permissionIDAuf eine Berechtigungsanfrage antworten body: { response, remember? }, gibt boolean zurck
Method Path Description Notes GET/session/:id/messageNachrichten in einer Sitzung auflisten query: limit?, gibt { info: Message , parts: Part[] }[] zurck POST/session/:id/messageNachricht senden und auf Antwort warten body: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, gibt { info: Message , parts: Part[] } zurck GET/session/:id/message/:messageIDNachrichtendetails abrufen Gibt { info: Message , parts: Part[] } zurck POST/session/:id/prompt_asyncNachricht asynchron senden (kein Warten) body: gleich wie /session/:id/message, gibt 204 No Content zurck POST/session/:id/commandSlash-Befehl ausfhren body: { messageID?, agent?, model?, command, arguments }, gibt { info: Message , parts: Part[] } zurck POST/session/:id/shellShell-Befehl ausfhren body: { agent, model?, command }, gibt { info: Message , parts: Part[] } zurck
Method Path Description Response GET/commandAlle Befehle auflisten Command[]
Method Path Description Response GET/find?pattern=<pat>Text in Dateien suchen Array von bereinstimmungsobjekten mit path, lines, line_number, absolute_offset, submatches GET/find/file?query=<q>Dateien und Verzeichnisse nach Name finden string[] (Pfade)GET/find/symbol?query=<q>Arbeitsbereich-Symbole finden Symbol[]GET/file?path=<path>Dateien und Verzeichnisse auflisten FileNode[]GET/file/content?path=<p>Eine Datei lesen FileContentGET/file/statusStatus fr verfolgte Dateien abrufen File[]
query (erforderlich) - Suchzeichenkette (Fuzzy-Match)
type (optional) - Ergebnisse auf "file" oder "directory" beschrnken
directory (optional) - Stammverzeichnis fr die Suche berschreiben
limit (optional) - Max Ergebnisse (1-200)
dirs (optional) - veraltetes Flag ("false" gibt nur Dateien zurck)
Method Path Description Response GET/experimental/tool/idsAlle Tool-IDs auflisten ToolIDsGET/experimental/tool?provider=<p>&model=<m>Tools mit JSON-Schemas fr ein Modell auflisten ToolList
Method Path Description Response GET/lspLSP-Server-Status abrufen LSPStatus[]GET/formatterFormatter-Status abrufen FormatterStatus[]GET/mcpMCP-Server-Status abrufen { [name: string]: MCPStatus }POST/mcpMCP-Server dynamisch hinzufgen body: { name, config }, gibt MCP-Status-Objekt zurck
Method Path Description Response GET/agentAlle verfgbaren Agents auflisten Agent[]
Method Path Description Response POST/logLog-Eintrag schreiben. Body: { service, level, message, extra? } boolean
Method Path Description Response POST/tui/append-promptText an Prompt anhngen booleanPOST/tui/open-helpHilfe-Dialog ffnen booleanPOST/tui/open-sessionsSitzungs-Auswahl ffnen booleanPOST/tui/open-themesThemen-Auswahl ffnen booleanPOST/tui/open-modelsModellauswahl ffnen booleanPOST/tui/submit-promptAktuellen Prompt absenden booleanPOST/tui/clear-promptPrompt lschen booleanPOST/tui/execute-commandBefehl ausfhren ({ command }) booleanPOST/tui/show-toastToast anzeigen ({ title?, message, variant }) booleanGET/tui/control/nextAuf nchste Steueranfrage warten Steueranfrage-Objekt POST/tui/control/responseAuf Steueranfrage antworten ({ body }) boolean
Method Path Description Response PUT/auth/:idAuthentifizierungs-Anmeldedaten festlegen. Body muss zum Anbieter-Schema passen boolean
Method Path Description Response GET/eventServer-Sent-Events-Stream. Erstes Event ist server.connected, dann Bus-Events Server-Sent-Events-Stream
Method Path Description Response GET/docOpenAPI 3.1 Spezifikation HTML-Seite mit OpenAPI-Spezifikation