ワークスペース

ワークスペースは、Bromure Agentic Coding の隔離の単位です。1 つの Ubuntu VM が、独自のシステムディスク、独自の永続的なホームフォルダ、独自のコーディングエージェントと認証情報、そして独自のセキュリティポリシーを持ちます。アプリが行うすべての処理はワークスペース内で発生します。使い捨てのスクラッチワークスペースは使い捨ての API キーで完全にオープンに実行できる一方、本番向けのワークスペースはすべての AI とのやり取りを記録し、破壊的な書き込みのたびに確認を求めます。そして両者は 1 バイトも共有しません。

アプリのほぼすべての設定はワークスペースごとです。例外はアプリ全体の自動化サーバー、ダウンロード済みのブラウザイメージ、およびインストール済みのローカルモデルで、これらはすべてのワークスペースで共有されます。コードおよびエクスポートされた JSON では、ワークスペースはプロファイルと呼ばれます。CLI はワークスペースの名前、その id、または short-id のプレフィックスを互換的に受け付けます。本章では、ワークスペースを管理するウィンドウと、そこから実行するライフサイクル操作 — 作成、編集、複製、リセット、削除 — を扱います。各ワークスペースが備える 15 ペインの設定エディタは設定リファレンスに、ワークスペースが実行中になった後の動作はセッションに、そして隔離モデル自体はコンセプトとアーキテクチャに記載されています。

ワークスペースブラウザ

アプリのメインウィンドウはワークスペースブラウザです。ワークスペース、ターミナルのグリッド、およびスケジュールされた自動化を一覧表示する左サイドバーと、選択したワークスペースのライブな状態と構成を表示する詳細ペインで構成されています。

ワークスペースブラウザ。WORKSPACES セクション(グリッド、Codex Sandbox、Claude Dev)と AUTOMATIONS セクションを備えたサイドバーが、Codex Sandbox のステータスカードと CONFIGURATION 概要を表示する詳細ペインの横に並んでいる

サイドバーには上から下に 3 つのセクションがあります。

  • WORKSPACES — 固定されたグリッドノードに続いて、ワークスペースごとに 1 行が並びます。
  • AUTOMATIONS — スケジュールされた無人のエージェント実行。追加用の + ボタンがあります。
  • 最下部にある黒い + ボタン。新しいワークスペースを作成します。

ワークスペースの行を選択すると詳細ペインが表示されます。ワークスペースが Off または Suspended の場合、ペインにはそのダッシュボードと Start または Resume ボタンが表示されます。実行中になると、ステージには代わりにライブセッション(ターミナルタブ、ブラウザペイン、ダッシュボード)が表示されます。これはセッションに記載されています。

サイドバーは 100 から 600 ポイントの範囲でサイズ変更できます(デフォルトは 220)。仕切りをおよそ 100 ポイント未満までドラッグするか、⌃⌘S を押すと、狭いアイコンレールに折りたたまれます。もう一度押すと元に戻ります。ワークスペースは最近使用した順に一覧表示され、一度も開いたことのないものは作成日順にフォールバックします。

サイドバー

ワークスペースの行

各ワークスペースの行には、左から右に次のものが並びます。

  • 色付きのタイル — ワークスペースので色付けされたサーバーラックのグリフ。角に小さな実行状態のドットがあります。
  • ワークスペース名。行が選択されているときは太字になります。
  • 名前の下の状態ラベルOffStarting…、または Suspended。実行中のワークスペースはラベルを表示しません。代わりに、そのターミナルタブと常時表示の Docker ノードが行の下に入れ子で表示されます(ノードには実行中コンテナ数のバッジがあり、起動中のものがなければ 0 と表示されます)。
  • 名前の後の赤い警告の三角形。ワークスペースが認証情報漏洩検出器によって侵害済みとしてフラグ付けされ、消去されるまで起動を拒否している場合に表示されます(コンセプトとアーキテクチャを参照)。

実行中のワークスペースにカーソルを合わせると、行に 3 つのクイックアクションボタンが表示されます。独自のウィンドウにポップアウトこの VM を閉じる、および**新しいタブ(⌘T)**です。すべての行の末尾にある ボタンは、そのワークスペースのコンテキストメニューを開きます。これは本章の残りの部分で説明するすべてのライフサイクルおよび管理アクションのハブです。

実行状態

ワークスペース VM は常にいくつかの状態のいずれかにあり、行のステータスドットと詳細ペインヘッダーの名前の横にあるピルの両方に表示されます。

状態行のドット意味
Offグレー実行されていません。RAM も CPU も使用せず、ディスク上にのみ存在します。
Starting…(起動中)オレンジ、点滅VM が電源投入中です。
Runningグリーン起動してアクティブ。セッションがライブです。
SuspendedイエローRAM をディスクに保存済み。中断したところからほぼ瞬時に再開します。

これらの状態の背後にあるライフサイクル — サスペンドがシャットダウンとどう異なるか、「クローズアクション」が何をするか — はコンセプトとアーキテクチャに記載されています。

詳細ペイン

ワークスペースが実行中でない場合、その詳細ペインはダッシュボードになります。上部にステータスカードの行、その下に CONFIGURATION 概要、そして右上隅に Start / Resume ボタンがあります。

ステータスカード

5 枚のカードがワークスペースのリソース状況を報告します。値は VM が実行中かどうかによって異なります。

カードOff / Suspended のときRunning のとき
CPU(キャプション offライブの CPU 負荷。スパークラインの履歴付き。
Memory割り当て済み RAM、例:8 GB(キャプション allocatedゲスト内で使用中のメモリ。
vCPUsコア数、例:4(キャプション cores同じコア数と、ゲストの現在の負荷平均。
Disk0 MB(キャプション of 0 MB (host)ワークスペースが使用しているディスク。ホスト容量に対する割合で、ゲストからライブで読み取ります。
Uptime(キャプション off起動からの時間、例:3h 12m

割り当て済みメモリと vCPU の数値は、ワークスペースのリソース設定に由来します。ライブのポート一覧やインターネット公開を含む実行中のダッシュボードは、セッションに記載されています。

CONFIGURATION 概要

CONFIGURATION カードは、ワークスペースの最も重要な設定を素早く確認できる読み取り専用の要約です。ワークスペースを開始する前に、それが何をするかを確認できます。

表示内容
<エージェント名>(有効なエージェントごとに 1 行)どこで実行され、どのように認証するか — Cloud · API tokenCloud · SubscriptionOn-device · <model> など。
GuardrailsOff、均一な場合は単一のモード、または混在している場合は Custom (N domains)
Prompt-injection scanOn または Off
Shared foldersマウントされたフォルダ名、または None

これらはそれぞれ設定エディタのペインに対応します。エージェントガードレールプロンプトインジェクション、およびフォルダです。

メモ: ある設定より前に作成されデコードされたばかりのワークスペースは、ここにその設定のレガシーなデフォルトを表示します。例えば上のスクリーンショットの Codex SandboxGuardrails Off および Prompt-injection scan Off と報告していますが、これはそれらのデフォルトが存在する前に作成されたためです。新しく作成されたワークスペースは、代わりに現在のファクトリテンプレート(Guardrails は Prompt before write に、トレースは AI request details に設定)を継承します。設定テンプレートを参照してください。

Start と Resume

右上隅のボタンは、ワークスペースが Off のときは StartSuspended のときは Resume と表示されます。クリックすると VM を起動(または保存された RAM 状態から復帰)し、ステージをライブセッションに切り替えます。同じアクションは行の メニューからも利用できます。

ワークスペースの作成

サイドバー下部の黒い + ボタン(ツールチップは New workspace)をクリックします。これにより New workspace というタイトルのウィンドウで設定エディタが開き、設定テンプレートからプレースホルダー名 — Default workspace、名前が使用済みの場合は自動採番されて Default workspace 23 など — で事前入力されます。

  1. General ペインでワークスペースに名前を付けます。これは保存に必須の唯一のフィールドです。
  2. 必要に応じて他のペイン — エージェント、認証情報、ガードレール、外観、リソース — を調整します。すべてのペインは設定リファレンスに記載されています。
  3. Create をクリックします。ドラフトを破棄するには Esc(または Cancel)を押します。

新しいワークスペースはテンプレートから分岐されるため、Bromure → Preferences… で設定した内容がその出発点になります。ファクトリテンプレートは Claude CodeSubscription 認証モードのプライマリエージェントとして有効にし、すべてのガードレールを Prompt before write に設定し、ed25519 SSH 鍵ペアを有効にします(Credentials → SSH Keys の下の Generate an ed25519 keypair トグルは、テンプレートに既に鍵が含まれていない限り、事前にチェックされています)。

ヒント: ほとんどのエディタの変更は、Create または Save をクリックしたときにのみ適用されます。いくつかのアクションは、それに関係なく即座に反映されます — ローカルモデルおよびプロンプトインジェクションモデルのダウンロード、MCP OAuth 認可、サブスクリプション登録、および SSH 鍵のインポート — これらはワークスペースドキュメントではなく共有状態やホスト側の状態に触れるためです。

ワークスペースの編集と名前変更

ワークスペースの メニューを開いて Edit… を選択すると、同じエディタが再度開きます。今回は ワークスペースを編集 というタイトルで、既存のワークスペースにバインドされています。任意の値を変更して Save をクリックします。

別途「名前変更」コマンドはありません。ワークスペースの名前変更は、General ペインの名前フィールドを編集することで行います。エディタウィンドウは一度に 1 つだけ存在します。別のワークスペースのエディタを開くと、ウィンドウは破棄されて再構築されます。

色とワークスペースタイル

すべてのワークスペースにはアクセントカラーがあり、General ペインで 8 つのプリセットから選択します。

ブルー(デフォルト)レッドグリーンオレンジ
パープルピンクティールグレー

この色はワークスペースのサイドバータイル、選択ハイライト、およびタブのアクセントを色付けします。ワークスペースを一目で見分ける最も速い方法です。色はワークスペースごとの唯一の視覚的アイデンティティです。アイコンピッカーはありません。タイルは常に選択した色のサーバーラックのグリフで、実行状態で説明した実行状態のドットが重ねられています。

ワークスペースの複製

ワークスペースの メニューから Duplicate を選択してディープコピーします。コピーは、元の名前に copy を付けた名前でサイドバーに即座に表示されます — Codex Sandbox を複製すると Codex Sandbox copy が生成されます — そして確認ダイアログはありません。

複製は真のクローンです。すべての設定と認証情報、システムディスク、ホームフォルダ、およびホスト側の SSH とエージェントの素材をコピーし、可能な場合は APFS のコピーオンライトクローンを使用します(瞬時であり、2 つのワークスペースが分岐するまで追加のディスク領域を消費しません)。意図的にコピーされないのは、元のアイデンティティに紐づく次の 3 つです。

  • 保存された RAM スナップショット。コピーが元のライブ状態を再開するのではなく、新規にコールドブートするようにするためです。
  • タブレイアウト。
  • 永続的な MAC アドレス。コピーが別個のマシンとしてネットワークに参加するようにするためです。

作成日が再スタンプされるため、コピーは最新のワークスペースとしてサイドバーの最上部にソートされます。

開始、サスペンド、シャットダウン

ワークスペースの行の メニューは、現在の状態に応じて変化します。VM がオフまたはサスペンド中の場合は単一の開始エントリを提供し、実行中の場合は停止または再起動の 3 つの方法を提供します。

状態メニューエントリ
OffStart
SuspendedResume
Running または Starting…Shutdown · Suspend · Reboot — 実行中はさらに Add Worktrees to Grid

Suspend は VM の RAM をディスクに保存して停止するため、後で Resume すると中断したところから正確に再開します。Shutdown はクリーンな電源オフを実行し、次の起動はフルのコールドブートになります。Reboot は実行中のワークスペースをその場で再起動します。これらのトレードオフと、ウィンドウを閉じたときにどれをトリガーするかを決めるワークスペースごとの When closing the window デフォルトは、コンセプトとアーキテクチャおよび一般設定に記載されています。

システムディスクのリセット

Reset disk メニュー内、またはリソースペインの Reset to base…)は、現在のベースイメージからワークスペースのシステムディスクを再クローンします。OS レイヤーで変更したすべて — apt でインストールしたパッケージ、/etc/var/usr/opt への編集、システム全体の構成 — を破棄しますが、ホームフォルダはそのまま残します。プロジェクト、dotfiles、.ssh 鍵、npm-global.cargo、およびシェル履歴はすべて残ります。確認ダイアログのタイトルは Reset "<name>" system disk to base? で、そのボタンは Reset to baseCancel です。

ディスクのリセットは保存された RAM 状態とタブレイアウトも破棄するため、次の起動は整合性のとれたものになります。ワークスペースのセッションウィンドウが開いている場合、このアクションは Close "<name>" first. として拒否されます。リセットする前に閉じてください。

メモ: 代わりにホームフォルダ — プロジェクト、dotfiles、生成された SSH 鍵ペア — を消去するには、リソースペインの Erase home… を使用します。ホームのロールバックチェックポイントと、起動ごとのスナップショットに戻す Restore home… コントロールは、セッションに記載されています。

ワークスペースの削除

Delete workspace メニュー下部の赤い破壊的なエントリ)はワークスペースを永久に削除します。Delete workspace "<name>"? というタイトルの確認アラートが影響範囲を説明します。

ディスク、設定、SSH 鍵を削除します。マウントされたホストフォルダはそのままです。

確認すると、~/Library/Application Support/BromureAC/profiles/ の下のワークスペースのディレクトリ全体 — その profile.json、暗号化された secrets.enc、システムディスク、ホームイメージ、すべてのチェックポイント、およびホスト側の SSH 鍵素材 — が削除され、予約された MAC アドレスが解放されます。削除が触れないのは、ワークスペースに共有したホストフォルダです。それらは Mac 上に存在し、読み書き可能でマウントされており、そのまま残されます。VM 内のそれらの内容は VM とともに消えますが、Mac 上のオリジナルは消えません。

警告: 削除はアプリ内から復元できません。ゴミ箱も取り消しもありません — ディスク、ホーム、シークレットは失われます。保持したいものは、削除する前に共有ホストフォルダに置くか、コミットしてプッシュしておくべきです。

グリッド

WORKSPACES セクションの最上部にある固定されたグリッドノードは、複数の実行中のターミナルを並べてタイル表示するステージであり、複数のエージェントを同時に監視できます。これを埋めるには 2 つの方法があります。実行中のワークスペースの メニューから Add Worktrees to Grid を選択して、そのワークスペースのすべての worktree タブを一度にグリッドに配置するか、個々のターミナルタブをグリッドノードにドラッグします。各セルのコンテキストメニューには Remove from Grid があります。グリッドのレイアウトと worktree との連携については、セッションに記載されています。

自動化の概要

AUTOMATIONS セクションには、スケジュールされた無人のエージェント実行が一覧表示されます。その + ボタン(ツールチップは New automation)は自動化エディタを開きます。各行には自動化の名前、それが属するワークスペースの色付きドット、そのトリガーの 1 行の概要(例:Weekdays 9:00PR · owner/repo)、および最後の実行のグリフが表示されます。行を右クリックすると Run NowPause または Resume、および Delete… が表示されます。

自動化は 1 つのワークスペースに属します。発火すると、そのワークスペースのリポジトリに新しい git worktree を作成し、そこで選択したエージェントをプロンプトとともに起動するため、実行は通常の worktree タブとして表示されます。トリガーは壁時計スケジュールから、GitHub のプルリクエスト、issue、コミットのポーリング、Linear の issue ポーリング、および別の自動化の後にチェーンすることまで多岐にわたります。完全な機能 — トリガー、フィルター、イベントテキストに対する必須のプロンプトインジェクションスクリーン、実行履歴、およびそれをミラーする CLI とコントロールソケットのサーフェス — は自動化と CLIに記載されています。

ワークスペースの保存場所

各ワークスペースは ~/Library/Application Support/BromureAC/profiles/<uuid>/ の下のディレクトリです。気になるかもしれない構成要素は次のとおりです。

パス内容
profile.jsonすべての非シークレット設定。
secrets.encすべてのシークレット。保存時に分離され、Keychain 保持の鍵で AES-GCM 暗号化されます(chmod 600)。
disk.imgワークスペースのベース OS の読み書き可能なコピー。
home.img永続的な /home/ubuntu(ext4 ホームモデル)。
checkpoints/ディスクとホームの起動ごとのロールバックスナップショット。
vm.stateサスペンドされたワークスペースの保存された RAM スナップショット。
agent/ssh/ホスト側の SSH 鍵素材 — 秘密鍵は VM に入りません。

設定テンプレートprofiles/profile-template.json と暗号化されたコンパニオンとして)に存在するため、サイドバーにワークスペースとして表示されることはありません。永続的なワークスペースと MAC のバインディングは、profile-macs.json に別途記録されます。シークレットは profile.json に書き込まれることはなく、VM にコピーされることもありません。ゲストは偽の値のみを保持し、ホストプロキシがワイヤ上で本物の値に入れ替えます(認証情報を参照)。

ヒント: disk.imghome.img、および checkpoints/ の下のスナップショットは Linux ext4 イメージです。VM を起動することなく、Mac 上で直接それらを参照、抽出、さらには修復することもできます。高度な設定で説明する ext4 ファイルブラウザを使用します。

コマンドラインの同等操作

本章のすべてのアクションにはヘッドレスな対応物があります。アプリ(またはそのバックグラウンドエージェント)が実行中の状態で、bromure-cli vm ls はライブ状態とともにワークスペースを一覧表示し、workspaces createworkspaces editworkspaces describe、および workspaces rm が作成/編集/検査/削除のフローをカバーします — vmworkspaces グループの受け入れられるエイリアスです。これら、ループバック自動化 API、およびエディタ全体をミラーする SSH リモートメニューは、自動化と CLIに記載されています。