コンテンツにスキップ

サーバ

HTTP 経由でopencode サーバーと通信します。

opencode serve コマンドは、opencode クライアントが使用できる OpenAPI エンドポイントを公開するヘッドレス HTTP サーバーを実行します。


使用法

Terminal window
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]

オプション

説明デフォルト
--portリッスンするポート4096
--hostnameリッスンするホスト名127.0.0.1
--mdnsmDNS 検出を有効にするfalse
--mdns-domainmDNS サービスのカスタム ドメイン名opencode.local
--cors許可する追加のブラウザーオリジン[]

--cors は複数回渡すことができます。

Terminal window
opencode serve --cors http://localhost:5173 --cors https://app.example.com

認証

HTTP 基本認証でサーバーを保護するには、OPENCODE_SERVER_PASSWORD を設定します。ユーザー名はデフォルトで opencode になるか、OPENCODE_SERVER_USERNAME を設定してオーバーライドします。これは、opencode serveopencode web の両方に当てはまります。

Terminal window
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 エクスプローラーで表示します。


API

opencode サーバーは次の API を公開します。


グローバル

方法パス説明応答
GET/global/healthサーバーの健全性とバージョンを取得する{ healthy: true, version: string }
GET/global/eventグローバル イベントの取得 (SSE ストリーム)イベントストリーム

プロジェクト

方法パス説明応答
GET/projectすべてのプロジェクトをリストするプロジェクト[]
GET/project/current現在のプロジェクトを取得プロジェクト

パスと VCS

方法パス説明応答
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/authorizeOAuth を使用してプロバイダーを認証する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/shellshell コマンドを実行する本文: { agent, model?, command }{ info: メッセージを返します, parts: Part[]}

コマンド

方法パス説明応答
GET/commandすべてのコマンドをリストするコマンド[]

ファイル

方法パス説明応答
GET/find?pattern=<pat>ファイル内のテキストを検索pathlinesline_numberabsolute_offsetsubmatches と一致するオブジェクトの配列
GET/find/file?query=<q>ファイルとディレクトリを名前で検索するstring[] (パス)
GET/find/symbol?query=<q>ワークスペースのシンボルを検索するシンボル[]
GET/file?path=<path>ファイルとディレクトリをリストするFileNode[]
GET/file/content?path=<p>ファイルを読むファイルコンテンツ
GET/file/status追跡されたファイルのステータスを取得するファイル[]

/find/file クエリパラメータ

  • query (必須) — 検索文字列 (あいまい一致)
  • type (オプション) — 結果を "file" または "directory" に制限します
  • directory (オプション) — 検索用のプロジェクト ルートをオーバーライドします。
  • limit (オプション) — 最大結果 (1 ~ 200)
  • dirs (オプション) — 従来のフラグ ("false" はファイルのみを返します)

ツール (実験的)

方法パス説明応答
GET/experimental/tool/idsすべてのツール ID をリストするツール ID
GET/experimental/tool?provider=<p>&model=<m>モデルの JSON スキーマを含むツールをリストするツールリスト

LSP、フォーマッタ、MCP

方法パス説明応答
GET/lspLSP サーバーのステータスを取得LSPStatus[]
GET/formatterフォーマッタのステータスを取得するFormatterStatus[]
GET/mcpMCP サーバーのステータスを取得する{ [name: string]: MCPStatus }
POST/mcpMCP サーバーを動的に追加する本文: { 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認証資格情報を設定します。本文はプロバイダーのスキーマと一致する必要がありますうーん

イベント

MethodPathDescriptionResponse
GET/eventServer-sent events stream. First event is server.connected, then bus eventsServer-sent events stream

ドキュメント

方法パス説明応答
GET/docOpenAPI 3.1 仕様OpenAPI 仕様を備えた HTML ページ