opencode serve コマンドは、opencode クライアントが使用できる OpenAPI エンドポイントを公開するヘッドレス HTTP サーバーを実行します。
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 は複数回渡すことができます。
opencode serve --cors http://localhost:5173 --cors https://app.example.com
HTTP 基本認証でサーバーを保護するには、OPENCODE_SERVER_PASSWORD を設定します。ユーザー名はデフォルトで opencode になるか、OPENCODE_SERVER_USERNAME を設定してオーバーライドします。これは、opencode serve と opencode web の両方に当てはまります。
OPENCODE_SERVER_PASSWORD=your-password opencode serve
opencode を実行すると、TUI とサーバーが起動します。 TUI の場所
サーバーと通信するクライアント。サーバーは OpenAPI 3.1 仕様を公開します
終点。このエンドポイントは、SDK.
This
opencode serve を実行してスタンドアロン サーバーを起動できます。持っている場合は、
opencode TUI を実行すると、opencode serve が新しいサーバーを起動します。
TUI を起動すると、ポートとホスト名がランダムに割り当てられます。代わりに、--hostname と --port flags.次に、これを使用してサーバーに接続します。
/tui エンドポイントは、サーバー経由で TUI を駆動するために使用できます。たとえば、プロンプトを事前入力したり、実行したりできます。この設定は、OpenCode IDE プラグイン] によって使用されます。
サーバーは、次の場所で閲覧できる OpenAPI 3.1 仕様を公開しています。
http://<hostname>:<port>/doc
たとえば、http://localhost:4096/doc。この仕様を使用して、クライアントを生成したり、要求と応答のタイプを検査したりできます。または、Swagger エクスプローラーで表示します。
opencode サーバーは次の API を公開します。
| 方法 | パス | 説明 | 応答 |
|---|
GET | /global/health | サーバーの健全性とバージョンを取得する | { healthy: true, version: string } |
GET | /global/event | グローバル イベントの取得 (SSE ストリーム) | イベントストリーム |
| 方法 | パス | 説明 | 応答 |
|---|
GET | /project | すべてのプロジェクトをリストする | プロジェクト[] |
GET | /project/current | 現在のプロジェクトを取得 | プロジェクト |
| 方法 | パス | 説明 | 応答 |
|---|
GET | /path | 現在のパスを取得する | パス |
GET | /vcs | 現在のプロジェクトの VCS 情報を取得する | VcsInfo |
| 方法 | パス | 説明 | 応答 |
|---|
POST | /instance/dispose | 現在のインスタンスを破棄する | うーん |
| 方法 | パス | 説明 | 応答 |
|---|
GET | /config | 構成情報を取得する | 構成 |
PATCH | /config | 構成を更新する | 構成 |
GET | /config/providers | プロバイダーとデフォルトのモデルをリストする | { providers: プロバイダ[], default: { [key: string]: string } } |
| 方法 | パス | 説明 | 応答 |
|---|
GET | /provider | すべてのプロバイダーをリストする | { all: プロバイダ[], default: {...}, connected: string[] } |
GET | /provider/auth | プロバイダーの認証方法を取得する | { [providerID: string]: ProviderAuthMethod[] } |
POST | /provider/{id}/oauth/authorize | OAuth を使用してプロバイダーを認証する | ProviderAuthAuthorization |
POST | /provider/{id}/oauth/callback | プロバイダーの OAuth コールバックを処理する | うーん |
| 方法 | パス | 説明 | メモ |
|---|
GET | /session | すべてのセッションをリストする | 戻り値 セッション[] |
POST | /session | 新しいセッションを作成する | 本文: { parentID?, title? }、セッション を返します。 |
GET | /session/status | すべてのセッションのセッション ステータスを取得する | 戻り値 { [sessionID: string]: SessionStatus } |
GET | /session/:id | セッションの詳細を取得する | 戻り値 セッション |
DELETE | /session/:id | セッションとそのすべてのデータを削除する | 戻り値 boolean |
PATCH | /session/:id | セッションのプロパティを更新する | 本文: { title? }、セッション を返します。 |
GET | /session/:id/children | セッションの子セッションを取得する | 戻り値 セッション[] |
GET | /session/:id/todo | セッションの ToDo リストを取得する | 戻り値 Todo[] |
POST | /session/:id/init | アプリを分析して AGENTS.md を作成する | 本文: { messageID, providerID, modelID }、boolean を返します。 |
POST | /session/:id/fork | メッセージで既存のセッションをフォークする | 本文: { messageID? }、セッション を返します。 |
POST | /session/:id/abort | 実行中のセッションを中止する | 戻り値 boolean |
POST | /session/:id/share | セッションを共有する | 戻り値 セッション |
DELETE | /session/:id/share | セッションの共有を解除する | 戻り値 セッション |
GET | /session/:id/diff | このセッションの差分を取得する | クエリ: messageID?、FileDiff[] を返します。 |
POST | /session/:id/summarize | セッションを要約する | 本文: { providerID, modelID }、boolean を返します。 |
POST | /session/:id/revert | メッセージを元に戻す | 本文: { messageID, partID? }、boolean を返します。 |
POST | /session/:id/unrevert | 元に戻したすべてのメッセージを復元する | 戻り値 boolean |
POST | /session/:id/permissions/:permissionID | 許可リクエストに応答する | 本文: { response, remember? }、boolean を返します。 |
| 方法 | パス | 説明 | メモ |
|---|
GET | /session/:id/message | セッション内のメッセージをリストする | クエリ: limit?、{ info: メッセージを返します。, parts: Part[]}[] |
POST | /session/:id/message | メッセージを送信して応答を待ちます | 本文: { messageID?, model?, agent?, noReply?, system?, tools?, parts }、{ info: メッセージを返します, parts: Part[]} |
GET | /session/:id/message/:messageID | メッセージの詳細を取得する | 戻り値 { info: メッセージ, parts: Part[]} |
POST | /session/:id/prompt_async | メッセージを非同期に送信する (待機なし) | body: /session/:id/message と同じ、204 No Content を返します。 |
POST | /session/:id/command | スラッシュコマンドを実行します | 本文: { messageID?, agent?, model?, command, arguments }、{ info: メッセージを返します, parts: Part[]} |
POST | /session/:id/shell | shell コマンドを実行する | 本文: { agent, model?, command }、{ info: メッセージを返します, parts: Part[]} |
| 方法 | パス | 説明 | 応答 |
|---|
GET | /command | すべてのコマンドをリストする | コマンド[] |
| 方法 | パス | 説明 | 応答 |
|---|
GET | /find?pattern=<pat> | ファイル内のテキストを検索 | path、lines、line_number、absolute_offset、submatches と一致するオブジェクトの配列 |
GET | /find/file?query=<q> | ファイルとディレクトリを名前で検索する | string[] (パス) |
GET | /find/symbol?query=<q> | ワークスペースのシンボルを検索する | シンボル[] |
GET | /file?path=<path> | ファイルとディレクトリをリストする | FileNode[] |
GET | /file/content?path=<p> | ファイルを読む | ファイルコンテンツ |
GET | /file/status | 追跡されたファイルのステータスを取得する | ファイル[] |
query (必須) — 検索文字列 (あいまい一致)
type (オプション) — 結果を "file" または "directory" に制限します
directory (オプション) — 検索用のプロジェクト ルートをオーバーライドします。
limit (オプション) — 最大結果 (1 ~ 200)
dirs (オプション) — 従来のフラグ ("false" はファイルのみを返します)
| 方法 | パス | 説明 | 応答 |
|---|
GET | /experimental/tool/ids | すべてのツール ID をリストする | ツール ID |
GET | /experimental/tool?provider=<p>&model=<m> | モデルの JSON スキーマを含むツールをリストする | ツールリスト |
| 方法 | パス | 説明 | 応答 |
|---|
GET | /lsp | LSP サーバーのステータスを取得 | LSPStatus[] |
GET | /formatter | フォーマッタのステータスを取得する | FormatterStatus[] |
GET | /mcp | MCP サーバーのステータスを取得する | { [name: string]: MCPStatus } |
POST | /mcp | MCP サーバーを動的に追加する | 本文: { name, config }、MCP ステータス オブジェクトを返します。 |
| 方法 | パス | 説明 | 応答 |
|---|
GET | /agent | 利用可能なすべてのエージェントをリストする | エージェント[] |
| 方法 | パス | 説明 | 応答 |
|---|
POST | /log | ログエントリを書き込みます。本体:{ service, level, message, extra? } | うーん |
| 方法 | パス | 説明 | 応答 |
|---|
POST | /tui/append-prompt | プロンプトにテキストを追加します | うーん |
POST | /tui/open-help | ヘルプダイアログを開く | うーん |
POST | /tui/open-sessions | セッションセレクターを開く | うーん |
POST | /tui/open-themes | テーマセレクターを開く | うーん |
POST | /tui/open-models | モデルセレクターを開く | うーん |
POST | /tui/submit-prompt | 現在のプロンプトを送信します | うーん |
POST | /tui/clear-prompt | プロンプトをクリア | うーん |
POST | /tui/execute-command | コマンドを実行する ({ command }) | うーん |
POST | /tui/show-toast | トーストを表示 ({ title?, message, variant }) | うーん |
GET | /tui/control/next | 次の制御リクエストを待ちます | コントロールリクエストオブジェクト |
POST | /tui/control/response | 制御リクエストに応答する ({ body }) | うーん |
| 方法 | パス | 説明 | 応答 |
|---|
PUT | /auth/:id | 認証資格情報を設定します。本文はプロバイダーのスキーマと一致する必要があります | うーん |
| Method | Path | Description | Response |
|---|
GET | /event | Server-sent events stream. First event is server.connected, then bus events | Server-sent events stream |
| 方法 | パス | 説明 | 応答 |
|---|
GET | /doc | OpenAPI 3.1 仕様 | OpenAPI 仕様を備えた HTML ページ |