マシン
マシンは Bromure Agentic Coding の隔離の単位です。専用のシステムディスク、専用の永続ホームフォルダ、専用の認証情報、専用のセキュリティポリシーを持つ 1 台の Ubuntu VM です。どのセッションもマシン上で動きます。使い捨ての API キーで何の制限もなく走る雑用マシンと、AI とのやり取りをすべて記録し破壊的な書き込みごとに確認する本番向けマシンを併存させられ、その 2 つは 1 バイトも共有しません。
マシンは設定エディタ、一部のメニュー(新規ワークスペース…、ワークスペースを削除)、コマンドラインではワークスペースと呼ばれます。コードやエクスポートした JSON ではプロファイルです。どれも同じものです。この章ではマシンそのものを扱います。どこに一覧されるか、どう起動・停止するか、どう作成・巻き戻し・リセット・削除するか、そしてマシン上で直接できること — ターミナルを開く、グリッドで複数を見張る、ファイルを見て回る、ファイルを貼り込む — です。各マシンの設定は設定リファレンスに、隔離のモデルはコンセプトとアーキテクチャにあります。
マシンは永続的です。システムディスクとホームフォルダは再起動を越えて残ります。データが失われるのは、意図的な操作(ディスクをリセット、ホームを消去…、ワークスペースを削除)か、認証情報の流出アラート後の強制消去のときだけです。マシンを止めることは、その VM が次に何をするか(走り続ける、サスペンドする、電源を切る)を決めるだけです。
注: ほとんどの場合、マシンを管理する必要はまったくありません。停止中や一時停止中のマシンでセッションを始めればそれが起き、一時停止中のセッションのマシンは次のメッセージで再び起動します。この章はボンネットの中を見たいときのためのものです。
仮想マシンのセクション
マシンはサイドバー下部の仮想マシンセクションに、セッション・タスク・オートメーションの下にあります。既定では折りたたまれています。タイトルをクリックすると展開します。サイドバーが狭いときはタイトルが VM になります。
セクションのヘッダーには次のものが付きます。
- 実行中または起動中のマシン数を示す緑のバッジ;
- マシンの総数;
- マシンを作る + ボタン(ツールチップは新規ワークスペース)。Option を押しながらクリックすると、まず Mac の設定ファイルから設定を取り込みます(マシンを作成するを参照)。
展開すると、セクションは上から下へ次のものを並べます。
| 項目 | 何か |
|---|---|
| グリッド | 生きたターミナルを並べて敷き詰めるステージ。グリッドを参照してください。 |
| マシンごとに 1 行 | マシン、実行中はそのターミナルタブ、そして中で少なくとも 1 つコンテナが動いている間は Docker ノード。 |
| Kubernetes | あなたの Kubernetes クラスタ、1 つに 1 行。クラスタがあるときだけ表示されます。Kubernetes クラスタとレジストリを参照してください。 |
| レジストリ | あなたのプライベートコンテナレジストリ。レジストリがあるときだけ表示されます。Kubernetes クラスタとレジストリを参照してください。 |
| メッセージング | メッセージングコネクタの VM。設定したあとに表示されます。スイッチボードとメッセージングを参照してください。 |
クラスタ、レジストリ、コネクタも管理された VM ですが、マシンではありません。そこでセッションを動かすことはなく、それぞれ独自のダッシュボードを持ちます。
マシンの行
各マシンの行には、左から右へ次のものが出ます。
- 色付きのタイル。 マシンのカラー(一般設定で設定)のサーバーラックの記号で、角に小さな実行状態のドットが付きます。
- 名前。 認証情報の漏洩検出器がそのマシンを侵害済みと印を付けている場合、赤い警告の三角形が名前に続きます。そうしたマシンは消去されるまで起動を拒みます(認証情報を参照)。
- 状態のラベル(名前の下):オフ、起動中…、一時停止中。実行中のマシンにはラベルは出ません。
- ボタン。 マシンが動いている間、+ が新しいターミナルタブを開き(新規タブ(⌘T))、行にカーソルを合わせると独立したウィンドウに切り出すとこの VM を閉じるが現れます。⋯ ボタンはすべての行でマシンメニューを開きます。
マシンの名前をクリックするとダッシュボードが表示されます。タブの 1 つをクリックすると、そのターミナルがステージに出ます。
| 状態 | ドット | 意味 |
|---|---|---|
| オフ | グレー | 実行していません。RAM も CPU も使っておらず、ディスクだけが存在します。 |
| 起動中… | オレンジ、脈動 | VM がブートしています。 |
| 実行中 | 緑 | ブート済み。ターミナルとエージェントが生きています。 |
| 一時停止中 | 黄 | RAM をディスクに保存済み。中断したところから再開します。 |
エージェントのタブはセッションです
実行中のマシンのタブは、その中の tmux ウィンドウです。セッションが動いているエージェントのタブと、あなた自身が開いたターミナルです。マシンのターミナルで(claude、codex などと入力して)起動したコーディングエージェント、そしてコーディングタスクやオートメーションが起動したエージェントも、サイドバーのセッション一覧にセッションとして現れます。エージェントのチャットとそのターミナルタブは Linux ピル(⌥⌘U)で行き来できます。セッションのホームを参照してください。
削除されたマシンのセッション
マシンを削除すると、そのセッションはサイドバーに淡く残り、状態はマシンが削除されましたになります。アーカイブ済みの折りたたみの中では、フォルダが失われたセッションとまとめられ、「マシンまたはフォルダが失われたセッション 1 件」または「… N 件」という 1 行になり、それらの会話を削除する削除ボタンが付きます。
マシンのダッシュボード
ダッシュボードはマシンの操作盤です。開き方は次のとおりです。
- 仮想マシンセクションでマシンの名前をクリックする;
- ツールバーのマシンメニュー、またはセッションのマシンカプセルの右クリックメニューからマシンの詳細を選ぶ;
- ⌘K パレットのマシンの下でそのマシンを選ぶ。
上部にはマシンのタイル、名前、状態のピル(実行中、起動中、一時停止中、オフ)、そして IP アドレスがあります。右側はアクションバーです。マシンが動いている間は新規ターミナル、サスペンド、再起動、シャットダウン、そうでなければ開始 / 再開。
その下の 5 枚のカードがリソースを報告します。
| カード | オフまたは一時停止中 | 実行中 |
|---|---|---|
| CPU | — | リアルタイムの CPU 負荷。スパークライン付き。 |
| メモリ | 割り当てた RAM。例:8 GB(割り当て) | 使用中のメモリ。割り当てのうち何 GB か。 |
| vCPU | コア数(コア) | 同じ数と、ゲストのロードアベレージ。 |
| ディスク | システムディスクが Mac 上で取る容量((ホスト)) | ゲスト自身のファイルシステムが報告するディスク使用量。 |
| 稼働時間 | — | ブートからの時間。 |
メモリはそのマシンのリソース設定から来ます。値は約 1.5 秒ごとに更新されます。ブート直後のゼロは、ゲストがまだ報告していないことを意味します。
マシンが動いている間、リッスン中のポートカードが VM の外から到達できるソケットを <VM の IP>:<ポート> のエンドポイントとして並べます。クリックするとコピーできます。HTTP のように見えるサービスには地球のボタンも付き、その 1 つのサービスを Cloudflare のクイックトンネル経由でインターネットに公開します。初回は**Cloudflare Tunnel 経由でサービスをインターネットに公開しますか?**というタイトルのダイアログが 1 回だけのダウンロード(約 18 MB)を説明し、同意して公開を求めます。
構成カードは、起動前に最も気になる設定をまとめます。エージェントごとに 1 行で動作場所、ガードレール、プロンプトインジェクション検査、共有フォルダです。
ツールバーのマシンメニュー
セッションかマシンのタブがステージにあるとき、ツールバーにマシンの色と名前のカプセルが出ます。クリックすると、そのマシンに関するすべてが開きます。
| 項目 | 何をするか |
|---|---|
| 設定… | マシンの設定エディタを開きます。 |
| マシンの詳細 | ダッシュボードを表示します。 |
| IP アドレスをコピー(…) | マシンの IP アドレスをコピーします。動いている間だけです。 |
| トレースを調べる | このマシンのトレースインスペクタを開きます(⇧⌘I も同じ)。 |
| 独立したウィンドウに切り出す | マシンを専用のウィンドウへ移します(切り出しと再ドッキングを参照)。 |
| 再起動 | 「…」を再起動しますか?の確認のあと、マシンをきれいに落としてから新しくブートします。選ぶときに ⌥ を押し続けると項目が強制再起動に変わり、代わりに即座に電源を切ります。マシンを再起動するを参照してください。 |
セッションのマシンが動いていない場合、メニューは「実行していません — 次のメッセージで起動します」から始まり、設定…とマシンの詳細だけを示します。
マシン自身のターミナルタブでは、ツールバーに Fusion の稲妻も出て、マシンが端末内モデルを使っている場合はエンジンのバッジも出ます(モデルとプロバイダを参照)。地球(⌃⌘B)とファイル(⌃⌘E)のボタンでブラウザとファイルペインを切り替えます。
起動と停止
マシンを起動する
マシンは次のときに起動します。
- そのマシンでセッションを始めたとき、またはそこにある一時停止中のセッションにメッセージを送ったとき;
- ダッシュボードで開始(または再開)をクリックしたとき、あるいは ⋯ メニューから選んだとき;
- グリッドにあるそのマシンのプレースホルダのセルで開始をクリックしたとき;
- オートメーションやコーディングタスクが必要としたとき(オートメーションを参照);
- Mac にログインし、一般設定でログイン時にこの VM を起動がオンのとき;
bromure-cli vm runを実行したとき(CLI、API、MCPを参照)。
何がブートするか
- 初回起動。 アプリはマシンのシステムディスク(
disk.img)を、共有 Ubuntu ベースイメージの APFS コピーオンライトのクローンとして作ります。クローンは瞬時で、ゲストが書き込むまで容量を取りません。ホームのイメージが作られ、VM はリソース設定の RAM でブートします。 - 以降の起動。 同じシステムディスクとホームが再利用されるので、入れたものはすべてそのままです。
- 一時停止中のマシン。 ブートの代わりに保存された RAM のスナップショットが復元され、マシンはタブごと、中断したところから再開します。
ブートに成功するたびに、ホームのロールバックポイントも取られます(ホームを巻き戻すを参照)。
既定では、どのマシンも Bromure のプライベート NAT ネットワークに加わり、安定したアドレスを得て、他のマシンとブラウザ VM に到達できます。マシンごとのブリッジモードは一般設定にあります。
ブート画面
マシンがブートしている間、アニメーションのオーバーレイがターミナルを覆います。スキャンの進捗バーの上にマシンの名前が出て、ときには状態の行も出ます。ブートに 0.4 秒以上かかるときだけ現れ、最初のターミナルが用意できるとすぐ消えます。まだ共有フォルダ方式の古いホームを使っているマシンは、次のブートでプライベートな ext4 のホームイメージへ移されます。そのときオーバーレイは確定的な進捗を示します。たとえば「ホームを移動中 — 7.9 GB のうち 42%」です。
30 秒たってもターミナルが現れない場合、オーバーレイはダイブ失敗パネル(「「…」は 30 秒たってもターミナルを返しませんでした。VM が固まっているか、システムディスクが壊れている可能性があります。」)になり、2 つのボタンが付きます。
- 待ち続けるは 30 秒の待機をやり直します。
- **システムディスクをリセット…**はマシンのシステムディスクをベースイメージから作り直します。ホームフォルダは残ります。
システムディスクのファイルシステム検査に失敗してブートが止まった場合、オーバーレイは代わりにディスクエラーパネルを示し、ディスクを修復(ディスクのジャーナルをその場で再適用)と**システムディスクをリセット…**が付きます。どちらの場合もホームは残ります。ブートが繰り返し失敗する場合はトラブルシューティングを参照してください。
ブート前の質問
起動の前に、次のいずれかが挟まることがあります。
| 確認 | いつ | 選択肢 |
|---|---|---|
| より新しいベースイメージがあります。 | Mac 上のベースイメージが、このマシンのシステムディスクの元になったものより新しいとき。 | はい、アップグレードは新しいベースからシステムディスクをリセットしてブートします(ホームは手つかずです)。いいえはそのままブートし、別のベースイメージが出るまで再度尋ねません。あとで通知はそのままブートし、1 日たった後の最初のブートで再度尋ねます。答えはマシンごとに覚えられます。 |
| 侵害されたマシン | 以前の実行が認証情報の流出で印を付けられたとき。 | ブートの前に、システムディスク・ホーム・保存状態の消去を確認します。設定、トークン、SSH キーは保持されます。認証情報を参照してください。 |
| モデルのダウンロード中 | マシンが必要とする端末内モデルのダウンロードが終わっていないとき。 | 終わるまで起動は拒否されます。 |
答える人がいないとき(オートメーション、コーディングタスク、ログイン時の起動)、保留中のベースイメージのアップグレードは飛ばされ、マシンはそのままブートします。侵害されたマシンは、あなた自身が起動するまで起動しません。
マシンを停止する
マシンの ⋯ メニューかダッシュボードから:
- サスペンドは VM の RAM をディスクに保存して止めます。再開はまさにその続きから始まります。何も失われないので確認はありません。
- シャットダウンは確認のあと VM の電源を切ります(「VM の電源を切り、その中で動いているすべてを止めます。システムディスクは保持されます。実行中のプロセスで進行中の作業は失われます。」)。次の起動は完全なブートです。
- 再起動 — マシンを再起動するを参照してください。
ゲストの中で reboot を実行しても動きます。アプリがそれに気づき、その場でマシンを再びブートします。
マシンを再起動する
再起動は、提示される場所すべて — マシンの行の ⋯ メニュー、マシンのダッシュボード、ツールバーのマシンメニュー — で同じで、ファットクライアント上でもこの Mac と同じです。
- **「…」を再起動しますか?**が確認を求めます:「マシンをきれいに落としてから新しくブートします。中で動いているすべてが止まります。」
- 電源ボタンを押すのと同じように、マシンに電源を切るよう求めます。これでファイルシステムが書き出され、サービスが止まります。15 秒(Kubernetes ノードやレジストリでは 60 秒)たっても電源が切れていなければ、電源を落とします。
- 保存状態からではなく必ず新しくブートします。起動と同じで、現在の設定(環境設定 › モデルも含む)が使われます。
強制再起動。 ⌥(Option)を押しながら再起動を選びます。ツールバーのマシンメニューでは、⌥ を押している間、項目が強制再起動になります。確認は**「…」を強制再起動しますか?**になり、新しいブートの前にマシンの電源が即座に切られます — プラグを抜くようなものです。中の未保存のものは失われるので、通常の再起動に応じないマシンのために取っておいてください。
コマンドラインでは、bromure-cli vm reboot <マシン> がきれいな再起動、--hard が強制の再起動です(CLI、API、MCPを参照)。
停止中や一時停止中のマシンのセッションは失われません。一時停止として表示され、次のメッセージで続きます。そのメッセージがマシンを再び起動させます。マシンを閉じた場合にどうなるかはマシンを閉じるを参照してください。
⋯ メニュー
マシンの行の ⋯ ボタンは、マシンの状態に応じて変わります。
| 項目 | いつ | 何をするか |
|---|---|---|
| 開始 | オフ | マシンをブートします。 |
| 再開 | 一時停止中 | 保存状態を復元します。 |
| シャットダウン · サスペンド · 再起動 | 実行中または起動中 | マシンを停止するを参照してください。 |
| ワークツリーをグリッドに追加 | 実行中 | このマシンのすべてのワークツリータブをグリッドに追加します。 |
| 編集… | 常に | 設定エディタを開きます。 |
| 複製 | 常に | マシンをコピーします。 |
| ホームを巻き戻す… | 常に | ホームフォルダを以前のブート時点に戻します。 |
| ディスクをリセット | 常に | システムディスクをベースイメージから作り直します。 |
| ワークスペースを削除 | 常に | マシンを削除します。 |
編集と名前の変更
編集…(またはツールバーのマシンメニューの設定…、⌘K やセッションのメニューの**「…」の設定…)は、マシンの名前がタイトルになった設定エディタを開きます。何かを変えて保存をクリックしてください。マシンの名前を変えるには、一般ペインの名前**を変えます。エディタのウィンドウは一度に 1 つだけ開きます。各ペインは設定リファレンスに記載されています。
複製
複製はすぐに完全なコピーを作り、元の名前にコピーを付けて名付けます(たとえば Web app コピー)。確認はありません。コピーはすべての設定と認証情報、システムディスク、ホームを受け取り、可能なところはコピーオンライトでクローンされるので、2 つが分かれるまで余分な容量は取りません。コピーされないものが 3 つあります:保存された RAM の状態(コピーは新しくブートします)、タブの配置、ネットワークの MAC アドレス(コピーは別のマシンとしてネットワークに加わります)。
ホームを巻き戻す
マシンがブートに成功するたびに、Bromure はそのホームイメージのコピーオンライトのチェックポイントを保持します。階段状に、直近のいくつかのブート、次に 1 週間は 1 日 1 つ、次に 1 か月は 1 週間 1 つを保ちます。チェックポイントを作る費用はゼロですが、ホームがそこから離れるにつれて実際のディスク容量を取ります。
**ホームを巻き戻す…**は、それらのロールバックポイントを並べたシートを開きます。
各ポイントには日付、どれくらい前か、サイズが出ます。1 つ選んで巻き戻すをクリックしてください。次の起動はそのホームからブートします。現在のホームはまず新しいポイントとして保持されるので、巻き戻し自体も同じ一覧から取り消せます。
ホームイメージは丸ごと差し替えられるため、マシンはオフでなければなりません。動いている間は、シートに「マシンが実行中です — 使用中はホームを差し替えられません。先にシャットダウンしてください。」とシャットダウンボタンが出て、巻き戻すは無効のままです。一度もブートしていないマシンには「ロールバックポイントはまだありません — このマシンが起動するたびに 1 つ取られます。」と出ます。
同じロールバックは、リソースペインのホームを復元…(ホームを丸ごと消す**ホームを消去…**の隣)でも使えます。
システムディスクをリセットする
ディスクをリセット(リソースペインの**ベースにリセット…も同じ)は、マシンのシステムディスクを現在のベースイメージから作り直します。確認の「…」のシステムディスクをベースにリセットしますか?**は、失われるものを挙げます:sudo apt install で入れたもの、/etc、/var、/usr、/opt への変更、システム全体の設定です。ホームフォルダは手つかずです。プロジェクト、ドットファイル、.ssh のキー、npm-global、.cargo、シェルの履歴はすべて残ります。ベースにリセットで確認してください。
リセットは保存された RAM の状態とタブの配置も捨てるので、次のブートはきれいなものになります。マシンが動いている間は**先に「…」を閉じてください。**と拒否されます。
注: チェックポイントとサスペンドは別の問いに答えるものです。サスペンドは実行中の状態を保ち、再開できるようにします。チェックポイントは良好だと分かっているブート時点のホームを保ち、壊れた環境を巻き戻せるようにします。保存されたサスペンドの状態は、それが属するディスクがリセットまたは巻き戻されるたびに捨てられます。
マシンを削除する
ワークスペースを削除(ワークスペース › 削除も同じで、ステージ上のマシン — セッション表示中はそのセッションのマシン — を削除します。ルーム、ボード、新規セッション画面のようにステージが単一のマシンを示していないときは無効です)は**ワークスペース「…」を削除しますか?**と尋ねます — 「そのディスク、設定、SSH キーを取り除きます。マウントされたホストのフォルダは手つかずです。」削除で確認してください。
これは ~/Library/Application Support/BromureAC/profiles/ 以下のマシンのフォルダ全体を削除します。設定、暗号化された秘密、システムディスク、ホームイメージ、チェックポイント、ホスト側の SSH キーです。Kubernetes クラスタのアクセス一覧からもそのマシンを外します。マシンに共有したホストのフォルダは Mac 上にあり、そのまま残されます。
警告: マシンの削除は取り消せません。ゴミ箱はありません。残したいものは削除の前に、共有ホストフォルダに置くか、コミットしてプッシュしておいてください。
マシンを作成する
マシンは次の場所から作れます。
- 仮想マシンヘッダーの +;
- ワークスペース › 新規ワークスペース…(⇧⌘N);
- ワークスペース › 自分の設定から新規ワークスペース…(⇧⌥⌘N)、または + の Option クリック;
- 新規セッション画面のマシンチップの一覧の末尾にある新しいマシン…;
- ⌘K パレットの新しいマシン…。
いずれも新規ワークスペースというタイトルの設定エディタを開き、環境設定の既定値が入り、既定のワークスペースや既定のワークスペース 2 のような空いている名前が付きます。一般ペインで名前を付け、必要なところを変えて、作成(またはキャンセル)をクリックしてください。**自分の設定から新規ワークスペース…**は、まずセットアップウィザードの認証情報の取り込みを実行するので、新しいマシンは Mac 上で見つかった認証情報を備えて始まります。
すべてのエージェントはすべてのマシンで使えます。マシンは、モデルペインで独自のものを与えない限り、環境設定 › モデルで設定したモデルを使います。モデルとプロバイダを参照してください。
ヒント: エディタの変更はほとんどが作成または保存をクリックしたときに適用されます。いくつかは即座に効きます。マシン自身の設定ではなく共有された状態に触れるものです:モデルのダウンロード、MCP の OAuth サインイン、SSH キーの取り込みです。
マシンのターミナルとタブ
マシンの中では、どのターミナルも 1 つの tmux セッションのウィンドウです。tmux が正とされ、アプリはマシンのウィンドウをその行の下のタブとして映します。そのためマシンは、ウィンドウを 1 つも開かずに動き続けることも、切り出されることも、別の Mac からミラーされることも(リモートアクセスとクライアントを参照)、エージェントを乱すことなくできます。
マシンのターミナルがステージにあるとき、次のキー操作がそのタブに作用します。
| ショートカット | 操作 |
|---|---|
| ⌘T | 新規タブ(マシンの行の +、およびワークスペース › 新規タブも同じ) |
| ⌘W | タブを閉じる。最後のタブを閉じるとマシンが閉じます(マシンを閉じるを参照)。 |
| ⌘1 – ⌘9 | その番号のタブへ移動。番号は選択中のマシンの先頭 9 タブの隣に出ます。 |
| ⌘D | このターミナルをグリッドに追加してグリッドを表示(ワークスペース › ターミナルをグリッドに追加) |
⌘N は変わらず新しいセッションを始めます。ターミナルではなくセッションがステージにあるときは、⌘1 – ⌘9 と ⌘W はセッションに作用します。セッションのホームを参照してください。
タブのラベルは前面のプログラム(claude、codex、シェルなど)を示します。各タブのアイコンにはエージェントの状態ドットが付きます。作業中はオレンジで脈動し、終わると緑、対応が必要なときは赤です。
ワークツリーのタブ
ワークツリーのタブは、自分の git ワークツリー — 同じリポジトリの別のブランチを専用のフォルダにチェックアウトしたもの — で動いているエージェントです。エージェントとの会話では、ブランチセッションが通常の方法です。マシンのターミナルタブでは、従来のワークツリーのコマンドがそのまま残っています。
タブを右クリックすると次のものがあります。
- 新規ワークツリー…(⇧⌘G、ワークスペース › 新規ワークツリー)。タブがリポジトリの中にないときは**新規ワークツリー…(git リポジトリ内ではありません)**として無効で表示されます。「このタブの現在のコミットから分岐した git ワークツリーを作り、その中で入れ子のエージェントを開きます。」というダイアログが開き、タスク名、エージェント(claude、codex、grok、kimi、omp)、任意の初期プロンプトを指定します。ブランチはタスク名から
wt/<slug>と名付けられます。 - 新規オートメーション…。このタブのマシンとフォルダを入れてオートメーションのエディタを開きます(オートメーションを参照)。
- ワークツリーのタブでは:マージ…(⇧⌘M、ワークスペース › ワークツリーをマージ)、ターミナルをアタッチ(ワークツリーのフォルダでの素のシェル)、ワークツリーを破棄(確認のあとチェックアウトを取り除き、そのブランチを削除)。
- 競合が起きたマージのタブでは:エージェントに競合を解決させる。
マージ…では、マージ先を選べます。親のワークツリー(既定)か、リポジトリのルートまでの任意の先祖です。階層を飛ばす場合は⚠︎ 中間を飛ばしますと印が付きます。マシンに GitHub の認証情報があれば、プルリクエストを作成がブランチをプッシュし、代わりにエージェントにプルリクエストを作らせます。競合があると、解決のためにマージのタブでエージェントが起動します。マージされるのはコミット済みの作業だけです。ワークツリーを破棄すると、未コミットの変更は失われます。
ワークツリーのタブは、分岐元のタブの下に最大 6 階層まで入れ子になります。マシンのタブでファイルペインがリポジトリを表示しているとき、ヘッダーの下のバーに新規ワークツリー…が出て、そのタブ自身がワークツリーならマージと削除も出ます。
ターミナルの外観
マシンのターミナルはネイティブで、GPU で描かれます。フォント、色、カーソル、ウィンドウの不透明度はマシンの外観設定から来て、保存するとすぐ適用されます。等幅フォントだけが使われ、それ以外は Menlo に落ちます。不透明度が 1.0 未満だと、ターミナルの領域はデスクトップの上のすりガラスになります(不透明度は 0.3〜1.0 に制限されます)。⌘+、⌘−、⌘0 でフォントを拡大縮小でき、トラックパッドのピンチと 2 本指のダブルタップ(リセット)も同じです。
これらの設定はターミナルだけに適用されます。セッションのチャット表示には独自の見た目があります。
グリッド
グリッドは最大 25 個の生きたターミナル(最大 5 × 5)を、どのマシンの組み合わせでも並べて敷き詰めるので、複数のエージェントを一度に見張れます。各セルはその tmux ウィンドウの独立した生きたビューで、マシン自身のステージとは独立なので、両方を開いておけます。
- 表示するには、仮想マシンセクション上部のグリッドノード、または折りたたんだサイドバーのレールのグリッドボタンをクリックします。メンバーのターミナルはノードの下に並び、クリックするとそのセルにフォーカスが移ります。
- ターミナルを追加するには、タブの行をグリッドのノードにドラッグする(「ターミナルをここにドラッグすると並べて見張れます」)、ターミナルで ⌘D を押す、またはマシンの ⋯ メニューのワークツリーをグリッドに追加を使います。
- 新しいターミナルは自分で加わります。 マシンが立ち上がったあとに開かれたターミナル(エージェントのタブ、ワークツリー、素のターミナル)は末尾に追加されます。グリッドがいっぱいのときは、場所を作るために最も古いセルが抜けます。グリッドのノードを右クリックすると新しいターミナルを自動的に追加を切り替えられます。手でセルを並べ替えるとオフになり、配置はあなたのものになります。
- セル。 各セルのヘッダーには状態ドット、マシン名、タブのラベルが出て、ワークスペースで開くとグリッドから外す — ターミナルは動き続けますのボタン、そしてセルを他所へドラッグする取っ手が付きます。ヘッダーを右クリックすると同じ操作ができ、グリッドのノードの下のメンバーを右クリックするとグリッドから外すが出ます。
- ズーム。 セルをダブルクリックする、またはフォーカスされたセルで ⌘↩ を押すと、ステージいっぱいに広がります。もう一度で戻ります。Esc では戻りません。エージェントが Esc を使うためです。
オフや一時停止中のマシンのセルは、オフまたは一時停止中と開始ボタンの付いたプレースホルダとして残ります。実行中のマシンからターミナルが消えたセルは取り除かれます。グリッドは自動追加の設定も含め、~/Library/Application Support/BromureAC/grid-layout.json に保存されて再起動を越えて残ります。
切り出しと再ドッキング
独立したウィンドウに切り出す(ツールバーのマシンメニュー、またはマシンの行の切り出しボタン)は、実行中のマシンを専用のウィンドウへ移します。そのタブはそのウィンドウのタイトルバーのピルの帯になります。切り出したウィンドウには独自のツールバーがあります。IP アドレス(クリックでコピー)、マシンに共有されたホストのフォルダを並べるフォルダボタン、再起動、トレース、設定、そして再ドッキングするこの VM をメインウィンドウに戻すです。
ファイルペイン
ファイルペインはステージの右側にあるファイルブラウザです。⌃⌘E かツールバーのファイルボタンで切り替えます。
表示するのは次のものです。
- ステージ上のセッションのフォルダ。そのエージェントが動いているかどうかは問いません(ルームではフォーカスされたセルのセッション);
- マシンのターミナルタブでは、そのタブの現在のフォルダ(リポジトリの中ならそのルート)。
セッションやタブを移ると、ペインも一緒に移ります。表示するものがなければ「セッションが選択されていません」と出ます。
見て回る
- ヘッダーは表示中のフォルダの名前を示します。↑(上位フォルダへ)で親に移ります。フォルダをダブルクリックする、または右クリックしてこのフォルダを表示を選ぶと、中に入ります。
- ファイルは git の状態に応じて色分けされ、1 文字のバッジ(M、A、U、D、R、!)が付きます。変更を含むフォルダにはドットが付きます。これはそのフォルダ自身のリポジトリにも、その中に入れ子になったリポジトリにも効くので、ホームを見て回っても各プロジェクトの変更が分かります。変更のあるフォルダは一度だけ自分で展開します。
- ピルが変更されたファイル数を数えます。フィルタボタンで変更されたファイルだけ表示に切り替わり、更新ボタンで読み直します(表示中はペイン自体も 4 秒ごとに更新されます)。
- ファイルをクリックすると、差分とファイルのタブがある詳細ビューが開きます。+/− のカウント付きの色付き差分か、プレビュー(Markdown をレンダリング、ソースは強調表示)です。切り出しボタンで詳細が専用のウィンドウに開き、あなたの選択に追随します。
表示中のファイルがステージ上のエージェントのものであるとき、差分の余白にコメントの吹き出しが生えます。行にコメントを付け、エージェントに送信でそのエージェントに 1 つのメッセージとしてコメントを渡します。レビューウィンドウは変更全体に対して同じことをします。
ファイルを出し入れする
- 外へ。 ファイルを Finder にドラッグするか、右クリックして**「ダウンロード」に保存**を選びます。パスをコピーはマシン内でのパスをコピーします。
- 中へ。 Finder からペインのどこかにファイルを落とすと、表示中のフォルダにコピーされます。空のフォルダには「空のフォルダ — ここにファイルを落として追加してください。」と出ます。
転送は共有フォルダではなくマシン自身のチャネルを通るので、リモートを含めどのマシンでも動きます。マシンは動いている必要があります。
自分で開くとき
- セッションの場合: アプリは実行中のセッションのフォルダを約 10 秒ごとに確認します。ステージ上のセッションに変更が現れた最初のとき(リポジトリでは未コミットの作業、それ以外のフォルダではセッション開始以降に書かれたファイル)、ファイルペインが開きます。閉じた場合は、フォルダがまた(たとえばコミット後に)きれいになり、そのうえで再び変わるまで閉じたままです。
- マシンのタブでは: git リポジトリに入るとペインが開き、リポジトリでないフォルダへ出ると閉じます。手で閉じたことが優先され、別のリポジトリへ移るまで続きます。
注: ファイルペインはファイルの内容を編集することはありません。最大 20,000 ファイルを並べ(それを超えるとツリーは切られます)、512 KB までのファイルをプレビューし、1 MB までの差分を表示します。
クリップボードとファイルの貼り付け
クリップボードはターミナル自体を通じてマシンのターミナルに行き来します。設定することはありません。
- ゲスト → Mac。 ゲストの中でコピーすると(tmux のコピーモード、または OSC 52 を使うプログラム)、Mac のクリップボードに入ります。tmux でマウスの選択を離すとコピーされます。
- Mac → ゲスト。 ⌘V で Mac のクリップボードをテキストとして貼り付けます(bracketed paste)。
- 選択。 マウスのドラッグでテキストを選び、⌘C でコピーします。選択だけではコピーされません。
ファイルの貼り付けとドロップ
クリップボードにテキストではなくファイルが入っているとき、マシンのターミナルでの ⌘V はファイル転送になります。ターミナルにファイルをドラッグしたときも同じです。各ファイルはマシン内の /home/ubuntu/.bromure/pastes/ にコピーされ、その代わりにマシン内でのパスが入力されるので、エージェントはディスクから読めます。
- 通常のファイルなら何でも使えます。画像、PDF、アーカイブ、何でもです。コピーされたファイルは名前を保ち、先頭にタイムスタンプが付き、シェルがクォートを必要とする文字は
_に置き換わります。クリップボード上のビットマップ(スクリーンショット、ブラウザの「画像をコピー」)はclipboard-<タイムスタンプ>-<id>.pngというファイルになります。 - 1 回の貼り付けで最大 512 MB です。それより大きいもの、フォルダを含む選択、テキストも一緒に持っているクリップボードは、いつもどおりテキストとして貼り付けられるので、普通の ⌘V が横取りされることはありません。
- カーソルの位置にアップロードの進捗を示すチップが現れ、終わると少しの間残り(失敗なら赤)、次のキー入力で消えます。
- 貼り付けたファイルはホームイメージにあるので、パスは再起動を越えて残ります。7 日より古いファイルはマシン内で片付けられます。
セッションのチャットでは、ドロップや貼り付けたファイルは代わりに添付になります。チャットを参照してください。
ヒント: リンクは自然に逆方向へ行きます。マシンの中のプログラムが
httpやhttpsの URL を開くと(OAuth のサインイン、xdg-open)、Mac の既定のブラウザで開きます。
共有フォルダ
Mac 上にあるファイルで継続して作業するなら、ファイルを行き来させてコピーするのではなく、そのフォルダをマシンに共有してください。最大 8 個のホストのフォルダを共有でき、それぞれがゲストのホームに ~/<フォルダ名> として現れます。フォルダ設定を参照してください。
マシンを閉じる
マシンを閉じるのは、この VM を閉じる(その行の ×)、切り出したウィンドウの閉じるボタン、または最後のタブでの ⌘W です。何が起きるかは、マシンの一般設定のウインドウを閉じるときで決まります。
| 設定 | 何をするか |
|---|---|
| バックグラウンドで実行 | 表示だけが消えます。VM は動き続け、エージェントも働き続けます。いつでもサイドバーから開き直せます。 |
| サスペンド | VM の RAM をディスクに保存して止めます。次の起動で同じターミナルとともに復元されます。 |
| シャットダウン | VM をきれいに電源オフにします。システムディスクとホームは保持され、次の起動は完全なブートです。 |
| 確認する(既定) | 毎回**「…」を閉じますか?**と尋ね、バックグラウンドで実行、サスペンド、シャットダウン、キャンセルを示します。 |
マシンを閉じることは、セッションを終了することとは違います。1 つのエージェントを止めるには、そのセッションを終了またはアーカイブしてください(セッションのホームを参照)。マシンは他のセッションのために動き続けます。
いくつかの細部:
- 再開には同じマシンが必要です。 一時停止中のマシンは同じ構成でなければ再開できないので、その識別情報、ネットワークアドレス、共有フォルダはスナップショットとともに保存されます。一時停止中に共有フォルダを変えると、保存状態を捨てるよう求められ、次の起動は新しいブートになります。ホームと共有フォルダのファイルには影響しません。
- 再開の失敗。 あなた自身がマシンを起動したときに保存状態を復元できなかった場合、代わりに新しくブートします。
- 閉じることで壊れるものはありません。 データが失われるのは ディスクをリセット、ホームを消去…、ワークスペースを削除、または認証情報の流出アラート後の消去のときだけで、そのときでも設定、トークン、SSH キーは保持され、共有ホストフォルダは決して触られません。
マシンの保存場所
各マシンは ~/Library/Application Support/BromureAC/profiles/<id>/ の下のフォルダです。
| パス | 内容 |
|---|---|
profile.json | 秘密でないすべての設定。 |
secrets.enc | すべての秘密。キーチェーンに保持された鍵で暗号化されています。 |
disk.img | マシン自身のベース OS のコピー。 |
home.img | 永続的な /home/ubuntu。 |
checkpoints/ | ホーム(およびシステムディスク)のロールバックポイント。 |
vm.state | 一時停止中のマシンの保存された RAM。 |
agent/、ssh/ | ホスト側の SSH 鍵の素材。秘密鍵が VM に入ることはありません。 |
環境設定の既定値は profiles/ の外に保持されます。そのためマシンとして現れることはありません。秘密が profile.json に書かれたり VM にコピーされたりすることはありません。ゲストが持つのは代替だけで、ホストのプロキシがワイヤー上でそれを本物の値と入れ替えます(認証情報とワイヤー境界を参照)。
ヒント:
disk.img、home.img、チェックポイントは ext4 イメージです。**ワークスペース › ext4 ファイルを開く…**なら、何も起動せずに Mac 上でそれらを見て回り、取り出し、修復できます。上級を参照してください。
コマンドラインから
この章のすべては、ウィンドウなしでも行えます。アプリが動いていれば、bromure-cli vm ls がマシンとその状態を並べ、workspaces create、workspaces edit、workspaces describe、workspaces rm がそれらを作成・変更・確認・削除します(vm は workspaces のエイリアスです)。CLI、API、MCPを参照してください。