Команда opencode serve запускает автономный HTTP-сервер, который предоставляет конечную точку OpenAPI, которую может использовать клиент с открытым кодом.
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
Флаг Описание По умолчанию --portPort to listen on 4096--hostnameHostname to listen on 127.0.0.1--mdnsEnable mDNS discovery false--mdns-domainCustom domain name for mDNS service opencode.local--corsAdditional browser origins to allow []
--cors можно передать несколько раз:
opencode serve --cors http://localhost:5173 --cors https://app.example.com
Установите OPENCODE_SERVER_PASSWORD, чтобы защитить сервер с помощью базовой аутентификации HTTP. Имя пользователя по умолчанию — opencode или установите OPENCODE_SERVER_USERNAME, чтобы переопределить его. Это относится как к opencode serve, так и к opencode web.
OPENCODE_SERVER_PASSWORD = your-password opencode serve
Когда вы запускаете opencode, он запускает TUI и сервер. Где находится TUI
клиент, который общается с сервером. Сервер предоставляет спецификацию OpenAPI 3.1.
конечная точка. Эта конечная точка также используется для создания файла SDK .
Эта архитектура позволяет открытому коду поддерживать несколько клиентов и позволяет программно взаимодействовать с открытым кодом.
Вы можете запустить opencode serve, чтобы запустить автономный сервер. Если у вас есть
TUI с открытым кодом запущен, opencode serve запустит новый сервер.
Когда вы запускаете TUI, он случайным образом назначает порт и имя хоста. Вместо этого вы можете передать --hostname и --port flags . Затем используйте это для подключения к его серверу.
Конечную точку /tui можно использовать для управления TUI через сервер. Например, вы можете предварительно заполнить или запустить подсказку. Эта настройка используется плагинами opencode IDE .
Сервер публикует спецификацию OpenAPI 3.1, которую можно просмотреть по адресу:
http://<hostname>:<port>/doc
For example, http://localhost:4096/doc. Use the spec to generate clients or inspect request and response types. Or view it in a Swagger explorer.
Сервер opencode предоставляет следующие API.
Метод Путь Описание Ответ GET/global/healthGet server health and version { healthy: true, version: string }GET/global/eventGet global events (SSE stream) Event stream
Метод Путь Описание Ответ GET/projectList all projects Project[]GET/project/currentGet the current project Project
Метод Путь Описание Ответ GET/pathGet the current path PathGET/vcsGet VCS info for the current project VcsInfo
Метод Путь Описание Ответ POST/instance/disposeDispose the current instance boolean
Метод Путь Описание Ответ GET/configGet config info ConfigPATCH/configUpdate config ConfigGET/config/providersList providers and default models { providers: Provider[] , default: { [key: string]: string } }
Метод Путь Описание Ответ GET/providerList all providers { all: Provider[] , default: {...}, connected: string[] }GET/provider/authGet provider authentication methods { [providerID: string]: ProviderAuthMethod[] }POST/provider/{id}/oauth/authorizeAuthorize a provider using OAuth ProviderAuthAuthorizationPOST/provider/{id}/oauth/callbackHandle OAuth callback for a provider boolean
Метод Путь Описание Примечания GET/sessionList all sessions Returns Session[] POST/sessionCreate a new session body: { parentID?, title? }, returns Session GET/session/statusGet session status for all sessions Returns { [sessionID: string]: SessionStatus } GET/session/:idGet session details Returns Session DELETE/session/:idDelete a session and all its data Returns boolean PATCH/session/:idUpdate session properties body: { title? }, returns Session GET/session/:id/childrenGet a session’s child sessions Returns Session[] GET/session/:id/todoGet the todo list for a session Returns Todo[] POST/session/:id/initAnalyze app and create AGENTS.md body: { messageID, providerID, modelID }, returns boolean POST/session/:id/forkFork an existing session at a message body: { messageID? }, returns Session POST/session/:id/abortAbort a running session Returns boolean POST/session/:id/shareShare a session Returns Session DELETE/session/:id/shareUnshare a session Returns Session GET/session/:id/diffGet the diff for this session query: messageID?, returns FileDiff[] POST/session/:id/summarizeSummarize the session body: { providerID, modelID }, returns boolean POST/session/:id/revertRevert a message body: { messageID, partID? }, returns boolean POST/session/:id/unrevertRestore all reverted messages Returns boolean POST/session/:id/permissions/:permissionIDRespond to a permission request body: { response, remember? }, returns boolean
Метод Путь Описание Примечания GET/session/:id/messageList messages in a session query: limit?, returns { info: Message , parts: Part[] }[] POST/session/:id/messageSend a message and wait for response body: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, returns { info: Message , parts: Part[] } GET/session/:id/message/:messageIDGet message details Returns { info: Message , parts: Part[] } POST/session/:id/prompt_asyncSend a message asynchronously (no wait) body: same as /session/:id/message, returns 204 No Content POST/session/:id/commandExecute a slash command body: { messageID?, agent?, model?, command, arguments }, returns { info: Message , parts: Part[] } POST/session/:id/shellRun a shell command body: { agent, model?, command }, returns { info: Message , parts: Part[] }
Метод Путь Описание Ответ GET/commandList all commands Command[]
Метод Путь Описание Ответ GET/find?pattern=<pat>Search for text in files Array of match objects with path, lines, line_number, absolute_offset, submatches GET/find/file?query=<q>Find files and directories by name string[] (paths)GET/find/symbol?query=<q>Find workspace symbols Symbol[]GET/file?path=<path>List files and directories FileNode[]GET/file/content?path=<p>Read a file FileContentGET/file/statusGet status for tracked files File[]
query (обязательно) — строка поиска (нечеткое совпадение)
type (необязательно) — ограничить результаты "file" или "directory".
directory (необязательно) — переопределить корень проекта для поиска.
limit (необязательно) — максимальное количество результатов (1–200)
dirs (необязательно) — устаревший флаг ("false" возвращает только файлы)
Метод Путь Описание Ответ GET/experimental/tool/idsList all tool IDs ToolIDsGET/experimental/tool?provider=<p>&model=<m>List tools with JSON schemas for a model ToolList
Метод Путь Описание Ответ GET/lspGet LSP server status LSPStatus[]GET/formatterGet formatter status FormatterStatus[]GET/mcpGet MCP server status { [name: string]: MCPStatus }POST/mcpAdd MCP server dynamically body: { name, config }, returns MCP status object
Метод Путь Описание Ответ GET/agentList all available agents Agent[]
Метод Путь Описание Ответ POST/logWrite log entry. Body: { service, level, message, extra? } boolean
Метод Путь Описание Ответ POST/tui/append-promptAppend text to the prompt booleanPOST/tui/open-helpOpen the help dialog booleanPOST/tui/open-sessionsOpen the session selector booleanPOST/tui/open-themesOpen the theme selector booleanPOST/tui/open-modelsOpen the model selector booleanPOST/tui/submit-promptSubmit the current prompt booleanPOST/tui/clear-promptClear the prompt booleanPOST/tui/execute-commandExecute a command ({ command }) booleanPOST/tui/show-toastShow toast ({ title?, message, variant }) booleanGET/tui/control/nextWait for the next control request Control request object POST/tui/control/responseRespond to a control request ({ body }) boolean
Метод Путь Описание Ответ PUT/auth/:idSet authentication credentials. Body must match provider schema boolean
Метод Путь Описание Ответ GET/eventServer-sent events stream. First event is server.connected, then bus events Server-sent events stream
Метод Путь Описание Ответ GET/docOpenAPI 3.1 specification HTML page with OpenAPI spec