Skip to main content
Devin Outposts では、Devin の計画立案とモデル推論は Devin Cloud で行われます。一方、コマンドの実行、ファイルの編集、リポジトリへのアクセスは、お客様が運用するマシン上で Devin が行います。このガイドでは、そのマシンとして CoreWeave のサンドボックスを使用します。サンドボックスは、イメージ、CPU、メモリ、GPU、有効期間を任意に指定できる分離環境です。 アウトポストとは、Devin Cloud 上の名前付きキューです。ワーカーとは devin worker プロセスのことで、アウトバウンド HTTPS で Devin Cloud に接続し、キューからセッションを取得してローカルで実行します。インバウンドのポート、パブリック IP アドレス、仮想プライベートネットワーク (VPN) は必要ありません。このガイドでは、1 つのサンドボックスで 1 つのワーカーを実行します。そのワーカーは、サンドボックスが存続している間、セッションを順番に処理します。 各ワーカーが同時に処理できる実行中のセッションは 1 つだけです。それ以外のセッションは、ワーカーが空くまで待機します。このガイドでは、起動するワーカーの数は固定です。セッションがキューに溜まっても、サンドボックスが自動で追加されることはありません。ワーカーを手動で追加起動するか、オーケストレーターを使用して自動的にプロビジョニングしてください。

前提条件

始める前に、次のものが揃っていることを確認してください。
  • Outposts が有効になっている Devin 組織。Devin Cloud の Settings > Environment に Outposts が表示されない場合は、Devin の管理者に問い合わせてください。
  • SANDBOX_USER action が付与された CoreWeave API アクセストークン。
  • SDK (ソフトウェア開発キット) を直接使用する場合は、Python 3.11 以降と uv、または Node.js 22 以降。
このガイドの手順を実行するターミナルで、CoreWeave API アクセストークンをエクスポートします。

Devin Cloud でアウトポストを作成する

アウトポストを作成してトークンを取得するには、次の手順に従います。
  1. Devin Cloud で、Settings > Environment > Outposts に移動します。
  2. Create Outpost をクリックし、名前を入力して Linux を選択します。
  3. アウトポストのトークンをコピーします。トークンは Devin Cloud で一度しか表示されません。
アウトポストの準備が完了したら、cws-agent または Sandboxes SDK のいずれかでワーカーを起動し、検証セッションを実行します。

cws-agent によるクイックスタート

cws-agent のインストール手順に従ってください。このツールは、ファイルシステムスナップショットでワークスペースを保存およびリストアするためのスナップショットボリュームを設定します。 [OUTPOST-TOKEN] はコピーしたトークンに、[OUTPOST-NAME] はアウトポスト名に、[SANDBOX-NAME] はこのサンドボックス用の cws-agent セッション名に置き換えてください。セッション名は英小文字、数字、ハイフンを使用した 1~40 文字で指定し、先頭は英字または数字にしてください。
このツールはトークンをサンドボックスに渡し、ワーカーを 1 つ起動します。 ワーカーのターミナルを表示するには、次のコマンドを実行します。
Ctrl-b を押してから d を押してデタッチし、Devin セッションを実行して検証するに進みます。このワーカーは Devin Cloud に接続します。--agent devin で起動する対話型の Devin コマンドラインインターフェース (CLI) とは別のものです。

Sandboxes SDK を使用して設定する

cws-agent を使用せずにワーカーを直接起動する場合は、この代替手段を使用します。この方法では永続ストレージは構成されません。 Python のスニペットは、認証情報を設定してクライアントをインストールするで作成した仮想環境で実行してください。TypeScript のスニペットは、クライアントをインストールしたプロジェクトに .mts ファイルとして保存し、npx tsx [FILENAME].mts で実行してください。

認証情報を設定してクライアントをインストールする

スクリプトを実行するターミナルで、アウトポストの作成時にコピーしたトークンをエクスポートします。
クライアントを選択し、ローカルにインストールします。
Python 3.11 以降と uv を使用します。

ワーカーを起動する

ワーカーの起動時間を短縮するには、Devin CLI、Git、言語ランタイム、プロジェクトの依存関係をプリインストールした独自のイメージを使用してください。Python では container_image、TypeScript では containerImage にそのイメージを指定します。イメージに Git と認証局 (CA) 証明書がすでに含まれている場合は、例から apt-get コマンドを削除してください。
次のスクリプトは、Cognition の公式ワーカーイメージからサンドボックスを作成し、サンドボックスのメインコマンドとして devin worker を実行します。クライアントはローカル環境から DEVIN_OUTPOSTS_TOKEN を読み取り、その値をサンドボックスリクエストに含めて渡すことで、ワーカーの環境変数を設定します。ワーカーの出力はサンドボックスのログとして記録されます。ワーカーがエラーで終了した場合、プラットフォームは再起動の上限に達するまでコンテナーを再起動します。
start_outpost_worker.py
Devin Cloud でアウトポストを作成する で作成したアウトポスト名を指定して、スクリプトを実行します。
Python の sandbox.wait() は、サンドボックスが実行中になった時点、またはすでに完了している場合に制御を返します。その時点ではインストールやワーカーの認証がまだ完了していない可能性があるため、タスクを送信する前にワーカーの状態を確認してください。ワーカーは /workspace を作業ディレクトリとして起動します。your-org/app のセッションでは、リポジトリが /workspace/repos/app 配下にチェックアウトされます。 このスクリプトは with ブロックを使用していないため、スクリプトの終了後も実行中のサンドボックスは動作し続けます。
max_lifetime_seconds は厳格な上限であり、後から延長することはできません。期限に達するとプラットフォームがサンドボックスを終了するため、そのワーカーを使用しているすべてのセッションで実行が中断されます。このスクリプトでは、スナップショットや Persistent Volume は設定していません。コンテナーが再起動すると、/workspace 配下のファイルを含め、書き込み可能なファイルシステムはリセットされます。結果は、Devin がプッシュ先とするリポジトリなど、サンドボックスの外部に保存してください。

オプション: シークレットストアを使用する

アウトポストトークンの値の代わりに Forge シークレット参照を渡すことができます。このオプションには、Forge 認証とサーバーレス配置が必要です。アウトポストトークンを Forge チームの Secret Manager に保存してから、そのチームの認証情報をエクスポートします。
これらの認証情報を使用して、SDK を明示的に設定してください。FORGE_API_KEY と FORGE_TEAM は説明用の環境変数名であるため、SDK はこれらを自動的に検出しません。
サンドボックスを作成する前に、AuthHeaders をインポートして auth を定義します。
Sandbox.run() に auth=auth を渡します。以降の Python の例でもこの設定を含め、Sandbox.from_id() を呼び出す際にも必ず auth=auth を渡してください。
[SECRET-NAME] はチームシークレットの名前に置き換えてください。
cwsandbox から Secret をインポートし、environment_variables から DEVIN_OUTPOSTS_TOKEN を削除したうえで、Sandbox.run() に secrets=[Secret(store="wandb", name="[SECRET-NAME]", env_var="DEVIN_OUTPOSTS_TOKEN")] を追加します。
これで、アウトポストトークンをローカルでエクスポートする必要はなくなります。参照はプラットフォームによって解決され、ワーカーの環境変数に設定されます。

Devin セッションを実行して検証する

テストには、このワーカーのみが接続され、キューに追加されたセッションや実行中のセッションが他にないアウトポストを使用してください。このテスト用に、シークレットではない一意の値を決めて、以下のタスク内の [PROOF-VALUE] をその値に置き換えます。Devin Cloud で新しいセッションを開始し、Configuration > Virtual environment でアウトポストを選択します。続いて、Write the exact text で始まる以下のタスクを送信します。Slack を使用する場合は、次のメッセージ全文を送信してください。
Devin が完了を報告したら、ご利用の環境に対応するコマンドを使用して、ご自身のターミナルからファイルを読み取ります。[SANDBOX-NAME] を cws-agent のワークスペース名に、または [SANDBOX-ID] を SDK スクリプトが出力した ID に置き換えてください。
出力が指定した一意の値と一致することを確認してください。そのサンドボックスの ID を指定して読み取ることで、セッションによるファイル書き込みが、作成したサンドボックス上で行われたことを確認できます。また、絶対パスを使用しているため、セッションの作業ディレクトリに依存しません。 セッションがキューに追加されたままの場合は、次のセクションの手順に従ってワーカーのログを確認してください。以前のセッションを処理中のワーカーは、そのセッションが終了または一時停止されるまで、別のセッションを取得できません。以前のセッションが不要であれば、Devin Cloud で終了してください。または、別のワーカーを起動することもできます。

ワーカーを確認して停止する

cws-agent の場合は、クイックスタートで示したとおりワーカーのターミナルにアタッチします。SDK を使用する場合は、ステータスと最近のログを確認します。[SANDBOX-ID] は出力された ID に置き換えてください。
新しいログを取得するには、この確認を再度実行します。Python クライアントでは、コンテナーごとの状態、終了コード、再起動回数も確認できます。TypeScript クライアントでは、これらの詳細は取得できません。 Outposts API がワーカーのトークンを拒否したことがログに記録されている場合は、アウトポストの作成時にコピーしたトークンを使用しているかどうか、またそのトークンがアウトポストを所有するアカウントのものであるかどうかを確認してください。代わりにサービスユーザーの v3 API トークンを使用する場合は、そのロールに Outposts write (account.outposts.write) の権限が必要です。認証情報を修正したうえで、サンドボックスを再作成してください。 ワーカーが終了と再起動を繰り返していても、サンドボックスのステータスが running と表示される場合があります。ログを確認し、Python クライアントを使用している場合は、前述の例で示したコンテナーごとの詳細も確認してください。 認証に失敗し続けるワーカーは、代わりのワーカーを作成する前に停止してください。起動に失敗し、原因を特定できる情報が得られない場合は、サンドボックス ID とログを保存し、CoreWeave Support にお問い合わせください。 ワーカーが不要になったら、サンドボックスを停止してください。サーバーレスのセットアップについては、はじめにを参照してください。 実行中の Devin セッションが完了して結果が保存されるのを待ってから、ご利用の構成に応じたコマンドでコンピュートを停止します。
down は停止前にワークスペースのスナップショットを作成します。スナップショットの取得に失敗した場合は、表示されたエラーと cws-agent status [SANDBOX-NAME] の出力を確認し、問題を解決してから再試行してください。保存されていない変更を破棄してもかまわない場合は、cws-agent down [SANDBOX-NAME] --no-snapshot を使用します。
Devin セッションを終了しても、このワーカーのサンドボックスは停止しません。cws-agent のワークスペースをリストアする方法については、Devin Outposts ガイドを参照してください。

オプション: 環境をカスタマイズする

ワーカー環境は、次の方法でカスタマイズできます。
  • 独自のイメージを使用する。 公式イメージには devin CLI 以外ほとんど何も含まれていません。公式イメージをベースに独自のツールチェーンを追加したイメージをビルドし、Python では container_image、TypeScript では containerImage として渡します。Devin には git が必要です。画面録画には ffmpeg が、ブラウザーツールとコンピューター操作ツールには互換性のあるブラウザーのバイナリが必要です。 公式 Ubuntu イメージをベースにした amd64 イメージの場合は、Google Chrome をインストールしてください。Ubuntu の chromium パッケージは snap のスタブであり、コンテナー内では動作しません。詳しくは Devin のコンテナーセットアップを参照してください。また、コンピューター操作を行うには、Xvfb などのグラフィカルディスプレイが実行されており、ワーカーに DISPLAY が設定されている必要があります。 ワーカーは標準のインストール場所を検索します。バイナリが見つからない場合は、DEVIN_CHROME_PATH にその絶対パスを設定してください。詳しくは Devin Outposts リファレンスを参照してください。
  • GPU を設定する。 使用可能なオプションについては、サンドボックスの GPU 設定を参照してください。このガイドのワーカーの例では CPU リソースのみを使用します。
  • ワーカーを増やす。 1 つのワーカーが同時に処理できるセッションは 1 つだけです。同じアウトポスト名でスクリプトを再度実行すると、そのキューに別のワーカーが追加で起動します。
  • セッションごとにサンドボックスを作成する。 この例のワーカーは、複数のセッションで同じサンドボックスを使い回します。セッションごとに新しいサンドボックスを用意する方法については、Devin のオーケストレーションガイドを参照してください。
最終更新日 2026年10月15日