SandboxesガイドOpenCode の実行

sandbox で OpenCode を実行する

Lizard (lizard.build) の sandbox で OpenCode を実行するには、lizard agents で認証情報(ChatGPT のサブスクリプション、または Anthropic、OpenAI、OpenRouter、LLM Gateway のキー)を接続し、opencode テンプレートから sandbox を作成して、lizard sandbox prompt <id> --agent opencode "…" でプロンプトを送ります。OpenCode の Web UI を使う場合は、sandbox 内で opencode web --hostname 0.0.0.0 --port 4096 を起動し、lizard sandbox expose でそのポートを公開します。

テスト状況: コマンドは、2026-10-12 時点の Lizard CLI 4.0.42 とプラットフォームのエージェントランナーに基づいています。Web UI の手順は、OpenCode 1.18.34 のソース(UI と API を 1 つのポートで配信します)と、Lizard の sandbox ルーターのソース(アクセストークンを cookie に保持し、WebSocket を通します)と照らし合わせて確認しました。このページのために、どちらの方法もまだ実際の sandbox で最初から最後まで実行していません。

始める前に

  • lizard login でサインイン済みの Lizard CLI と、プロジェクト。フォルダーで lizard init を実行するか、sandbox コマンドに -p <project> を渡します。
  • Lizard Pro または 7 日間の Pro トライアル(カードが必要)。Sandboxes は実行中、サイズに応じて秒単位で課金されます。制限 と 料金 を参照してください。

認証情報を接続する

認証情報コマンド
ChatGPT のサブスクリプションlizard agents login chatgpt --open
Anthropic API キーlizard agents add anthropic
OpenAI API キーlizard agents add openai
OpenRouter API キーlizard agents add openrouter
LLM Gateway API キーlizard agents add llmgateway

OpenCode は、接続済みの認証情報のうち対応するものをすべて受け取り、それぞれでそのプロバイダーのモデルが使えるようになります。Claude のサブスクリプションのトークンは受け付けません。その場合は Claude Code を使ってください。ChatGPT のログインは、有効期間の短いアクセストークンとして実行に渡され、リフレッシュトークンが渡されることはありません。API キーは ANTHROPIC_API_KEY などの環境変数として実行に渡されます。

OpenCode ではモデルを provider/model の形で指定します。デフォルトを設定するか、プロンプトごとに -m を渡します:

lizard agents use opencode -m openrouter/anthropic/claude-sonnet-4.5
lizard agents status

OpenRouter のキーだけを接続していてモデルを選んでいない場合、Lizard は openrouter/openai/gpt-5.3-codex を使います。

sandbox を作成する

lizard sandbox create -t opencode --timeout 3600000

表示された ID を変数に入れておきます: SB=sb_abc123。CLI の既定の有効期間は 5 分で、それを過ぎると Lizard は sandbox とそのファイルを削除します。--timeout 3600000 で有効期間を 1 時間にします。opencode テンプレートには Node.js 22、バージョンを固定した OpenCode、git、Python 3、ripgrep、curl、jq、unzip、Lizard CLI が入っています。

コードは Claude Code の場合と同じ方法でコピーします:

lizard sandbox exec $SB -- git clone https://github.com/your-org/your-app /workspace/app

プライベートまたはローカルのリポジトリについては、sandbox にコードを入れる を参照してください。

プロンプトを送る

lizard sandbox prompt $SB --agent opencode --cwd /workspace/app "add input validation to the signup form"

各ターンでは opencode run --auto が実行され、明示的に拒否されていない権限リクエストはすべて承認されます。つまり OpenCode は確認を求めずにファイルを編集し、コマンドを実行します。--effort <level> は OpenCode の --variant になります。会話を続けるには -c <conversation-id> を渡し、続きの依頼にも --agent opencode と --cwd も渡してください。Ctrl-C で表示が止まり、lizard sandbox interrupt $SB でエージェントが止まります。

変更をパッチとして受け取る方法は、変更を受け取る を参照してください。

OpenCode の Web UI を開く

opencode web は、OpenCode のブラウザー用インターフェースと API を 1 つのポートで配信します。sandbox 内で起動し、そのポートを プレビュー URL で開きます。

lizard agents の認証情報は lizard sandbox prompt の実行にしか渡されないため、このサーバーには専用のキーが必要です。コマンドラインに現れないよう、ファイルとしてコピーします:

printf 'export ANTHROPIC_API_KEY=%s\n' "$ANTHROPIC_API_KEY" > opencode.env
lizard sandbox files put $SB opencode.env /root/opencode.env
rm opencode.env

サーバーを起動し、ポートを公開します:

lizard sandbox exec $SB -- sh -c '. /root/opencode.env && cd /workspace/app && nohup opencode web --hostname 0.0.0.0 --port 4096 >/tmp/opencode.log 2>&1 </dev/null & echo $! > /tmp/opencode.pid'
lizard sandbox expose $SB 4096

expose が表示した URL を開きます。URL には ?lizard_token= が付いています。Lizard はトークンをそのホスト用の cookie に移し、トークンを外した同じページにリダイレクトします。そのため、UI からのリクエスト、イベントストリーム、ターミナルの WebSocket も通ります。

  • --hostname 0.0.0.0 が必要です。OpenCode は既定で 127.0.0.1 で待ち受けるため、その場合プレビュー URL は Sandbox is not listening on port 4096 を返します。
  • --port は固定の値を指定してください。指定しないと、OpenCode は空いているポートをランダムに選びます。
  • URL はパスワードと同じように扱ってください。URL を知っている人は誰でも、OpenCode を通じて sandbox 内でコマンドを実行できます。パスワードも必須にするには、opencode.env に export OPENCODE_SERVER_PASSWORD=… を追加します。ユーザー名は opencode です。
  • サーバーのログは lizard sandbox exec $SB -- tail -n 50 /tmp/opencode.log で読めます。サーバーを止めるには lizard sandbox exec $SB -- sh -c 'kill $(cat /tmp/opencode.pid)' を実行します。
  • sandbox が停止すると UI も止まります。有効期間は lizard sandbox timeout $SB 3600000 で延長できます。

よくある問題

メッセージまたは症状対処
OpenCode has no credential. Connect one of: …上の表の認証情報のいずれかを lizard agents で接続します。
Your ChatGPT login expiredlizard agents login chatgpt をもう一度実行します。
出力に Codex が出てくる--agent opencode なしでプロンプトが送られました。
プレビュー URL が 401 を返すexpose が表示した、lizard_token 付きの完全な URL を開いてください。プレビュー URL を参照してください。
プレビュー URL が 502 を返すサーバーが起動していないか、127.0.0.1 で待ち受けています。/tmp/opencode.log を確認してください。
Web UI は開くが、どのモデルも失敗するサーバーにプロバイダーのキーがありません。/root/opencode.env を直し、サーバーを止めてから起動し直してください。

関連項目

更新日