devin-remote バイナリの配布、およびカスタム オーケストレーター向けの spawn 仕様を扱います。
認証
Outposts は account にスコープされ、その配下のすべての組織で共有されます。
CLI
devin worker start
devin-remote バイナリをダウンロードして、セッションを処理します。セッション用にチェックアウトされたリポジトリがあるディレクトリで実行します。
ワーカーの環境には、ブラウザ機能で使用する Chrome/Chromium 実行ファイルをセッションに指定するための
DEVIN_CHROME_PATH を含めることもできます。
devin worker outpost create
新しいアウトポストの ID (
outpost_env-...) を出力します。アウトポストは、Webアプリの Settings → Environment → Outposts から作成することもできます。
devin worker outpost delete
Fleet API
https://api.devin.ai/opbeta/outposts/ 配下にあり、Bearer トークンを受け付けます:
metadata / spec / status という構造に従っており、キューは Kubernetes の list-then-watch セマンティクスに従い、少なくとも 1 回の配信を保証します。
オブジェクト
キューエントリ (devins)
spec.network_policy は、セッションのネットワークアクセスが制限されているかどうか (enabled) と、許可される宛先 (allow) を示します。宛先には、hostname の glob パターン ({"hostname": ...}) 、IPv4 アドレス/CIDR ({"ipv4": ...}) 、または IPv6 アドレス/CIDR ({"ipv6": ...}) があります。
アウトポスト
キュー内のセッションを一覧表示
レスポンス例:
has_next_pageがtrueの間は、各レスポンスのcursorを次のリクエストに渡します。- 配信は少なくとも1回行われます。ページ境界にあるセッションは両方のページに現れる可能性があるため、すべての項目を新規として扱うのではなく、
metadata.session_idでエントリをアップサートしてください (claim CAS により重複は問題になりません) 。 has_next_pageがfalseになったら、返されたcursorを watch の開始位置として保存します。
変更の監視
MODIFIED イベントはセッションのキューエントリが変更されたときに発生し (新たにキューに追加されたセッションも MODIFIED として届きます) 、DELETED イベントはキューエントリが削除されたときに発生します。各 SSE の data フィールドには次が含まれます:
- 各イベントの最上位の
cursorは、処理後に永続化してください。切断中に発生した変更を再生するには、再接続時に最後に永続化したcursorを使います。 - 配信は at-least-once です。重複するイベントを許容してください。
- ストリームは最長 5 分で終了するため、再接続を前提とした watch ループが必要です。
watch=trueの場合、phaseとacceptor_idのフィルタは無視されます。watch 対象のイベントは、各イベントのobjectに含まれるフィールドを使って絞り込んでください。cursorを省略すると先頭から開始されるため、通常の整合には list-then-watch を利用してください。
キューエントリを取得
セッションを引き取る
409 で失敗します。引き取りに成功したレスポンスには、status.connect_token と status.gateway_url が含まれます。これらは、devin-remote が接続するために必要な認証情報です (spawn contract を参照) 。
セッションを引き取ると、サーバーが割り当てた引き取り期限 (status.claim_deadline) までにワーカーの準備が整うことが前提となります。期限切れになった引き取りは、自動的にキューに戻されます。
引き取りを解除する
Outposts
status.queue_depth と status.active_claims が含まれます。
リモートバイナリの配布
devin worker start コマンドは、適切な devin-remote バイナリを自動的にダウンロードします。Devin CLI を利用しないカスタムオーケストレーターは、以下から直接入手できます。
セッションのキューエントリに
spec.remote_binary_sha が含まれている場合は、latest の代わりにその SHA を利用します。これにより、セッションはテスト済みの特定のバージョンに固定されます。
spawn の仕様
devin worker start を使わずに devin-remote を直接起動する場合は、次のように起動してください:
リモートには、上記の変数に加えて、基本的なシステム変数 (
PATH、HOME、USER、LOGNAME、TMPDIR、LANG、TZ、および Linux/X11 でデスクトップストリームの画面キャプチャに必要な DISPLAY、WAYLAND_DISPLAY、XAUTHORITY) のみを含むクリーンな環境を渡してください。エージェントが見るべきでない情報をリモートに漏らさないでください。これらはエージェントのシェルに引き継がれます。
追加のライフサイクル上の想定事項:
- 作業ディレクトリ: セッションのリポジトリを含むディレクトリからリモートを起動してください (
devin worker startと同じルールです) 。 - セッション終了: セッションが終了したとき (スリープに入るか終了したとき) 、Devin はリモートに通知し、リモートは自動的に終了ステータス 0 で終了します。正常終了はセッション終了として扱ってください。キューエントリの
status.session_statusがsuspendedまたはterminatedであることを確認し (ステータス更新は終了の数秒後になることがあるため、数回読み直してください) 、その後 claim を解放します。フォールバックとして、リモートの実行中もstatus.session_statusをポーリングし、terminatedに達した時点 (またはキューエントリが消えた時点) でプロセスを自分で終了してください。

