Команда opencode serve запускает автономный HTTP-сервер, который предоставляет конечную точку OpenAPI, которую может использовать клиент с открытым кодом.
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
Флаг Описание По умолчанию --portПорт для прослушивания 4096--hostnameИмя хоста для прослушивания 127.0.0.1--mdnsВключить обнаружение mDNS false--mdns-domainПользовательское доменное имя для mDNS opencode.local--corsРазрешенные дополнительные источники (CORS) []
--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/healthПолучить состояние и версию сервера { healthy: true, version: string }GET/global/eventПолучить глобальные события (поток SSE) Поток событий
Метод Путь Описание Ответ GET/projectСписок всех проектов Project[]GET/project/currentПолучить текущий проект Project
Метод Путь Описание Ответ GET/pathПолучить текущий путь PathGET/vcsПолучить информацию о VCS для текущего проекта VcsInfo
Метод Путь Описание Ответ POST/instance/disposeУдалить текущий экземпляр boolean
Метод Путь Описание Ответ GET/configПолучить информацию о конфигурации ConfigPATCH/configОбновить конфигурацию ConfigGET/config/providersСписок провайдеров и моделей по умолчанию { providers: Provider[] , default: { [key: string]: string } }
Метод Путь Описание Ответ GET/providerСписок всех провайдеров { all: Provider[] , default: {...}, connected: string[] }GET/provider/authПолучить методы аутентификации провайдера { [providerID: string]: ProviderAuthMethod[] }POST/provider/{id}/oauth/authorizeАвторизация провайдера через OAuth ProviderAuthAuthorizationPOST/provider/{id}/oauth/callbackОбработка callback OAuth для провайдера boolean
Метод Путь Описание Примечания GET/sessionСписок всех сессий Возвращает Session[] POST/sessionСоздать новую сессию body: { parentID?, title? }, возвращает Session GET/session/statusПолучить статус всех сессий Возвращает { [sessionID: string]: SessionStatus } GET/session/:idПолучить детали сессии Возвращает Session DELETE/session/:idУдалить сессию и все её данные Возвращает boolean PATCH/session/:idОбновить свойства сессии body: { title? }, возвращает Session GET/session/:id/childrenПолучить дочерние сессии Возвращает Session[] GET/session/:id/todoПолучить список задач для сессии Возвращает Todo[] POST/session/:id/initАнализ приложения и создание AGENTS.md body: { messageID, providerID, modelID }, возвращает boolean POST/session/:id/forkОтветвление сессии от сообщения body: { messageID? }, возвращает Session POST/session/:id/abortПрервать запущенную сессию Возвращает boolean POST/session/:id/shareПоделиться сессией Возвращает Session DELETE/session/:id/shareОтменить общий доступ к сессии Возвращает Session GET/session/:id/diffПолучить diff для этой сессии query: messageID?, возвращает FileDiff[] POST/session/:id/summarizeСуммировать сессию body: { providerID, modelID }, возвращает boolean POST/session/:id/revertОтменить сообщение body: { messageID, partID? }, возвращает boolean POST/session/:id/unrevertВосстановить все отмененные сообщения Возвращает boolean POST/session/:id/permissions/:permissionIDОтветить на запрос разрешения body: { response, remember? }, возвращает boolean
Метод Путь Описание Примечания GET/session/:id/messageСписок сообщений в сессии query: limit?, возвращает { info: Message , parts: Part[] }[] POST/session/:id/messageОтправить сообщение и ждать ответа body: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, возвращает { info: Message , parts: Part[] } GET/session/:id/message/:messageIDПолучить детали сообщения Возвращает { info: Message , parts: Part[] } POST/session/:id/prompt_asyncОтправить сообщение асинхронно (без ожидания) body: как в /session/:id/message, возвращает 204 No Content POST/session/:id/commandВыполнить слэш-команду body: { messageID?, agent?, model?, command, arguments }, возвращает { info: Message , parts: Part[] } POST/session/:id/shellЗапустить команду оболочки body: { agent, model?, command }, возвращает { info: Message , parts: Part[] }
Метод Путь Описание Ответ GET/commandСписок всех команд Command[]
Метод Путь Описание Ответ GET/find?pattern=<pat>Поиск текста в файлах Массив объектов совпадения с path, lines, line_number, absolute_offset, submatches GET/find/file?query=<q>Поиск файлов и директорий по имени string[] (пути)GET/find/symbol?query=<q>Поиск символов рабочего пространства Symbol[]GET/file?path=<path>Список файлов и директорий FileNode[]GET/file/content?path=<p>Прочитать файл FileContentGET/file/statusПолучить статус отслеживаемых файлов File[]
query (обязательно) — строка поиска (нечеткое совпадение)
type (необязательно) — ограничить результаты "file" или "directory".
directory (необязательно) — переопределить корень проекта для поиска.
limit (необязательно) — максимальное количество результатов (1–200)
dirs (необязательно) — устаревший флаг ("false" возвращает только файлы)
Метод Путь Описание Ответ GET/experimental/tool/idsСписок всех идентификаторов инструментов ToolIDsGET/experimental/tool?provider=<p>&model=<m>Список инструментов со схемами JSON для модели ToolList
Метод Путь Описание Ответ GET/lspПолучить статус сервера LSP LSPStatus[]GET/formatterПолучить статус форматера FormatterStatus[]GET/mcpПолучить статус сервера MCP { [name: string]: MCPStatus }POST/mcpДобавить сервер MCP динамически body: { name, config }, возвращает статус объекта MCP
Метод Путь Описание Ответ GET/agentСписок всех доступных агентов Agent[]
Метод Путь Описание Ответ POST/logЗаписать запись в журнал. Body: { service, level, message, extra? } boolean
Метод Путь Описание Ответ POST/tui/append-promptДобавить текст в подсказку booleanPOST/tui/open-helpОткрыть диалог помощи booleanPOST/tui/open-sessionsОткрыть селектор сессий booleanPOST/tui/open-themesОткрыть селектор тем booleanPOST/tui/open-modelsОткрыть селектор моделей booleanPOST/tui/submit-promptОтправить текущую подсказку booleanPOST/tui/clear-promptОчистить подсказку booleanPOST/tui/execute-commandВыполнить команду ({ command }) booleanPOST/tui/show-toastПоказать уведомление ({ title?, message, variant }) booleanGET/tui/control/nextОжидание следующего запроса управления Объект запроса управления POST/tui/control/responseОтветить на запрос управления ({ body }) boolean
Метод Путь Описание Ответ PUT/auth/:idУстановить учетные данные аутентификации. Body должен соответствовать схеме провайдера boolean
Метод Путь Описание Ответ GET/eventПоток событий, отправляемых сервером. Первое событие — server.connected, затем события шины Поток событий, отправляемых сервером
Метод Путь Описание Ответ GET/docСпецификация OpenAPI 3.1 HTML-страница со спецификацией OpenAPI