日本語
ドキュメント
サーバー

サーバー

HTTP 経由で opencode サーバーと対話します。

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


使い方

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

オプション

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

--cors は複数回指定できます:

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

認証

OPENCODE_SERVER_PASSWORD を設定して、HTTP 基本認証でサーバーを保護します。ユーザー名はデフォルトで opencode ですが、OPENCODE_SERVER_USERNAME で上書きできます。これは opencode serveopencode web の両方に適用されます。

OPENCODE_SERVER_PASSWORD=your-password opencode serve

仕組み

opencode を実行すると、TUI とサーバーが起動します。TUI はサーバーと通信するクライアントです。サーバーは OpenAPI 3.1 仕様のエンドポイントを公開します。このエンドポイントは SDK の生成にも使用されます。

ヒント: opencode サーバーを使用して、プログラムから opencode と対話できます。

このアーキテクチャにより、opencode は複数のクライアントをサポートし、プログラムから opencode と対話できます。

opencode serve を実行してスタンドアロンサーバーを起動できます。opencode TUI が実行中の場合、opencode serve は新しいサーバーを起動します。


既存のサーバーに接続

TUI を起動すると、ランダムにポートとホスト名が割り当てられます。代わりに --hostname--port フラグを渡すことができます。これを使用してサーバーに接続します。

/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すべてのプロジェクトを一覧表示Project[]
GET/project/current現在のプロジェクトを取得Project

パスと VCS

メソッドパス説明レスポンス
GET/path現在のパスを取得Path
GET/vcs現在のプロジェクトの VCS 情報を取得VcsInfo

インスタンス

メソッドパス説明レスポンス
POST/instance/dispose現在のインスタンスを破棄boolean

設定

メソッドパス説明レスポンス
GET/config設定情報を取得Config
PATCH/config設定を更新Config
GET/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/authorizeOAuth でプロバイダーを認可ProviderAuthAuthorization
POST/provider/{id}/oauth/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 リストを取得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このセッションの差分を取得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>ファイル内のテキストを検索pathlinesline_numberabsolute_offsetsubmatches を含むマッチオブジェクトの配列
GET/find/file?query=<q>名前でファイルとディレクトリを検索string[](パス)
GET/find/symbol?query=<q>ワークスペースシンボルを検索Symbol[]
GET/file?path=<path>ファイルとディレクトリを一覧表示FileNode[]
GET/file/content?path=<p>ファイルを読み取るFileContent
GET/file/status追跡されたファイルのステータスを取得File[]

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

  • query(必須)— 検索文字列(あいまい一致)
  • type(オプション)— 結果を "file" または "directory" に制限
  • directory(オプション)— 検索のプロジェクトルートを上書き
  • limit(オプション)— 最大結果数(1–200)
  • dirs(オプション)— レガシーフラグ("false" はファイルのみを返す)

ツール(実験的)

メソッドパス説明レスポンス
GET/experimental/tool/idsすべてのツール ID を一覧表示ToolIDs
GET/experimental/tool?provider=<p>&model=<m>モデルの JSON スキーマ付きツールを一覧表示ToolList

LSP、フォーマッタ、MCP

メソッドパス説明レスポンス
GET/lspLSP サーバーのステータスを取得LSPStatus[]
GET/formatterフォーマッタのステータスを取得FormatterStatus[]
GET/mcpMCP サーバーのステータスを取得{ [name: string]: MCPStatus }
POST/mcpMCP サーバーを動的に追加body: { name, config }、MCP ステータスオブジェクトを返す

エージェント

メソッドパス説明レスポンス
GET/agent利用可能なすべてのエージェントを一覧表示Agent[]

ロギング

メソッドパス説明レスポンス
POST/logログエントリを書き込む。Body: { service, level, message, extra? }boolean

TUI

メソッドパス説明レスポンス
POST/tui/append-promptプロンプトにテキストを追加boolean
POST/tui/open-helpヘルプダイアログを開くboolean
POST/tui/open-sessionsセッションセレクタを開くboolean
POST/tui/open-themesテーマセレクタを開くboolean
POST/tui/open-modelsモデルセレクタを開くboolean
POST/tui/submit-prompt現在のプロンプトを送信boolean
POST/tui/clear-promptプロンプトをクリアboolean
POST/tui/execute-commandコマンドを実行({ command }boolean
POST/tui/show-toastトーストを表示({ title?, message, variant }boolean
GET/tui/control/next次のコントロールリクエストを待つコントロールリクエストオブジェクト
POST/tui/control/responseコントロールリクエストに応答({ body }boolean

認証

メソッドパス説明レスポンス
PUT/auth/:id認証資格情報を設定。Body はプロバイダースキーマに一致する必要があるboolean

イベント

メソッドパス説明レスポンス
GET/eventサーバー送信イベントストリーム。最初のイベントは server.connected、その後バスイベントサーバー送信イベントストリーム

ドキュメント

メソッドパス説明レスポンス
GET/docOpenAPI 3.1 仕様OpenAPI 仕様を含む HTML ページ