附錄 — 檔案位置、連接埠與環境

本附錄將散落在手冊各處的具體事實彙整成參考表格:磁碟上的位置、網路連接埠、環境變數與啟動引數,以及客體 VM 速查表。此處所有內容均對應出貨版本(版本 4.3.0,套件 ID io.bromure.agentic-coding)。若需讀寫這些內容的指令,請參閱 自動化與 CLI;若需了解安裝時建立的內容,請參閱 安裝

以下使用的預留位置:<uuid> 是工作區的識別碼,<version> 是已釘選的工具版本,<org>--<name> 是模型儲存庫,<host-UUID> 是已儲存的遠端主機。

磁碟上的位置

應用程式擁有的所有內容都位於單一支援目錄之下,外加少數位於該目錄之外的檔案,以及數個 Keychain 項目。以下表格已去除重複並加以分組;以 / 結尾的路徑代表目錄。

支援目錄

應用程式的支援根目錄為 ~/Library/Application Support/BromureAC/。以下路徑皆相對於此根目錄。

路徑內容
base.img每個工作區據以複製的 Ubuntu 24.04 基底映像檔(邏輯大小 24 GB,實體約 6–8 GB)。
efivars.bin基底映像檔開機時使用的 EFI 變數儲存區。
base.version已安裝映像檔的版本戳記,例如 200200.1
image-state.json映像檔來源出處,以及已套用之安裝後步驟的 UUID。
img-catalog.json已下載映像檔目錄的快取副本。
browser-img-catalog.json內嵌瀏覽器映像檔的快取目錄。
catalog.json本機推論模型的遠端目錄清單快取。
base.img.partialbase.img.gz.partialefivars.partial暫存的安裝檔案;它們存在即代表有安裝正在進行或曾被中斷。
alpine-vmlinuzalpine-initramfsalpine-initramfs-shimmed本機建置所使用之 Alpine netboot 安裝程式檔案的快取。
browser/當 Bromure Web 的副本不存在時,AC 自有的 Alpine/Chromium 瀏覽器映像檔副本(linux-base.imgvmlinuzinitrd)。
browser-profiles/<uuid>/image/profile.img加密的持久 Chromium 設定檔磁碟(「保持登入網站」)。
ca/cert.pemca/key.pem各安裝專屬的 Bromure Agentic Coding 根 CA(金鑰模式 0600)。刪除 ca/ 目錄即可輪替。
control.sock僅擁有者可存取(0600)的 Unix 控制通訊端,CLI 與控制平面透過它以 HTTP 通訊。
profile-macs.json各工作區的確定性 MAC 繫結。
dhcp-leases.sqlite共用 NAT 交換器的持久 DHCP 租約。
default-ssh/id_ed25519.rawdefault-ssh/id_ed25519.pub複製到每個新工作區的共用預設 SSH 金鑰組。
profile-template.jsonprofile-template.enc新工作區繼承的「偏好設定」預設值範本(置於 profiles/ 之外,因此不會出現在選擇器中)。
automations.json排程自動化及執行歷程(最多 1000 筆記錄)、下次觸發時間,以及事件輪詢高水位標記。
grid-layout.json終端機 Grid 成員資格。
engine-master.key用於各 VM 本機推論引擎金鑰的 32 位元組主密鑰。
engine-spawn.json本機推論引擎子行程的產生設定(模型、記憶體預算、連接埠)。
fake-salt.bin各安裝專屬、用於衍生假權杖的 32 位元組 salt(0600)。刪除它會輪替此 Mac 上的每個假權杖。
secrets-master.key0600 的後備 AES-256 主金鑰,僅在無法連接 Data Protection Keychain 時使用。
claude-subscription.enccodex-subscription.encgrok-subscription.enc經 AES-GCM 加密、由主機擁有的訂閱 OAuth 儲存區(共用預設值加上各工作區覆寫),0600
cloudflared/<version>/cloudflared已釘選並經校驗和驗證的 cloudflared 二進位檔,旁邊附有 current 符號連結。
ghostty/產生的終端機設定(基底加上各工作區)。

各工作區儲存

每個工作區是位於支援根目錄下 profiles/<uuid>/ 的自足目錄。關於其用途,請參閱 工作區概念

路徑(於 profiles/<uuid>/ 之下)內容
profile.json工作區定義,包含 supplyChain 政策區塊;socket.dev 與 Delpi API 金鑰儲存於此的主機端,絕不複製進 VM。僅寫入非預設欄位。
secrets.enc經 AES-GCM 加密的工作區密鑰(chmod 600)。
disk.img系統磁碟 — base.img 的 APFS 寫入時複製(copy-on-write)複本。
home.img存放 /home/ubuntu 的稀疏 ext4 映像檔(現代家目錄模型)。
home/舊版 virtiofs 家目錄(升級前的工作區)。
boot-home/於 ext4 模型開機時共用的微型啟動載入家目錄。
home.pre-ext4/儲存升級後保留的家目錄備份。
checkpoints/checkpoints/home/已驗證可開機的磁碟與家目錄回復複本。
vm.state已暫停 VM 的 RAM 快照。
tabs.json已儲存的分頁配置,僅在 vm.state 存在時才會採用。
machine-identifier.bin持久的 VZ 機器識別(還原已暫停 VM 所需)。
compromised.flag偵測到憑證外洩後設定的「下次啟動時清除」標記。
meta-share/各次啟動的唯讀客體設定共用區(api_key.envproxy.env、CA 憑證、代理程式、MCP 設定)。
outbox/各次啟動的可寫入客體→主機事件共用區。
agent/(以及 agent/imported/)、ssh/各工作區的 SSH 金鑰材料;匯入的金鑰位於 agent/imported/ 之下,ssh/ 為舊版目錄。

模型與偵測器

路徑(於支援根目錄之下)內容
models/<org>--<name>/已下載的 MLX 推論模型權重(各儲存庫的扁平配置)。
models/<org>--<name>/.incomplete下載進行中或遭中斷的哨兵檔。
Models/prompt-injection/PromptGuard 偵測器資產(model.onnx、tokenizer 檔案、選用的 bromure-injection.json 覆寫)。
Models/claudemd-guard/ModernBERT 規則檔偵測器資產。
traces/YYYY-MM-DD/<sessionID>.jsonl各工作階段的追蹤記錄中繼資料,每行一筆 JSON 記錄。
traces/YYYY-MM-DD/<sessionID>/<recordID>.req.enc.res.enc擷取的請求/回應主體,經 AES-GCM 加密(0600)。

註冊、遠端存取與完整用戶端

路徑(於支援根目錄之下)內容
managed/install.json註冊身分:安裝 ID、工作區 slug、使用者、伺服器 URL、裝置名稱、註冊時間。
managed/leaf.crtmTLS 葉憑證(PEM,可檢視)。
managed/leaf.serial指向持有目前葉憑證私鑰的 Keychain 項目的指標。
managed/ca.crt工作區組織的 CA 憑證(PEM)。
managed/health持久儲存的註冊健康狀態(ok / tokenRejected / revoked)。
remote/hostkey_ed25519remote/hostkey_ed25519.pub內嵌 SSH 伺服器主機金鑰(目錄模式 0700,金鑰 0600)。
remote/authorized_keys允許通過 SSH 前門的公開金鑰(0600)。
remote/overlay-keySSH 遠端選單的選用覆蓋層鍵和弦覆寫。
remote-client/id_ed25519.pub完整用戶端的 SSH 用戶端金鑰組(註解 bromure-ac-fatclient)。
remote-client/known_hosts遠端主機金鑰的首次使用信任(trust-on-first-use)釘選。
remote-client/hosts.json已儲存的遠端伺服器(「最近的伺服器」)。
remote-client/hosts/<host-UUID>/grid-layout.jsonautomations.json各主機的鏡像持久儲存,讓遠端 grid 絕不覆蓋本機的。

附註: remote-client/ 子樹會隨 CFFIXED_USER_HOME 一併搬遷,這正是兩個隔離執行個體能並排執行以供測試的方式。

支援目錄之外

路徑內容
~/Library/LaunchAgents/io.bromure.agentic-coding.boot.plist登入時開機的 LaunchAgent,當任一工作區啟用「登入時啟動此 VM」時寫入。
<app>/Contents/Library/LaunchDaemons/io.bromure.fatclient-tunnel.plist內嵌的具特權通道守護程序,依需求透過 SMAppService 註冊。
/var/run/io.bromure.fatclient-tunnel.sock具特權的通道守護程序通訊端(由 root 建立,chmod 600,其擁有者變更為主控台使用者)。
/tmp/bromure-ac-cm-<first-12-of-host-UUID>各主機的 SSH ControlMaster 通訊端(保留在 /tmp,因為支援路徑超過 AF_UNIX 長度上限)。
/tmp/bromure-repair.log本機推論修復代理伺服器的除錯記錄(僅在 BROMURE_REPAIR_DEBUG 下)。
/usr/local/bin/bromure-cli指向應用程式二進位檔的選用 CLI 符號連結,於首次啟動時提供一次。
<NSTemporaryDirectory>/bromure-ac-agent-<pid>.sockBromure 私有的主機端 ssh-agent 通訊端。
$TMPDIR/bromure/session-<uuid>.img(以及 -aux.img短暫的瀏覽器 VM 寫入時複製複本,於拆除時刪除。
<app temp dir>/bromure-files/<profile-id>/從檔案瀏覽器開啟之客體檔案的下載快取。
~/Library/Application Support/Bromure/Bromure Web 的支援目錄;存在時 AC 會從此處讀取其瀏覽器映像檔。
~/.cache/bromure-ghostty僅在從原始碼建置終端機框架時使用的 Zig 工具鏈快取。

Keychain 項目與 defaults 網域

必須以作業系統層級保護方式留存的密鑰儲存在 macOS Keychain,而非磁碟上。

Keychain 服務帳戶內容
io.bromure.agentic-coding.master-keyv1AES-256 密鑰保險庫主金鑰(Data Protection Keychain)。
io.bromure.agentic-coding.ssh-key-passphrases<profileUUID>/<filename>匯入 SSH 金鑰的通關密語。
io.bromure.agentic-coding.managed-installinstall-tokenleaf-cert-key-<serial>註冊 bearer 權杖與各序號的葉憑證私鑰。

應用程式的所有 UserDefaults 皆位於 io.bromure.agentic-coding 網域(以 defaults readdefaults write 讀寫)。

網路連接埠與子網路

TCP 與 loopback 連接埠

Bromure Agentic Coding 預設不開啟任何固定的傳入連接埠。以下兩項選用服務在你啟用之前皆為關閉;其餘皆僅限 loopback,且為動態或內部使用。

連接埠用途繫結位置
9223(預設)自動化 HTTP API 與 bromure-cli mcp 後端。預設關閉(automation.enabled);刻意選在瀏覽器產品的 9222 旁邊一號,讓兩個應用程式可並排執行。提供 GET /health127.0.0.1(可透過 automation.bindAddress 設定;非 loopback 繫結未經驗證,並會提出警告)。
2222(預設)選用的 SSH 遠端存取前門。預設停用;可設定為任何 ≥ 1024 的連接埠。預設為 0.0.0.0(可透過 remoteAccess.bindAddress 設定)。
2850028599MCP OAuth 回呼監聽器(http://127.0.0.1:<port>/callback)。127.0.0.1
動態本機推論引擎,於首次產生時配置,以避免與位於 11434 的 Ollama/LM Studio 衝突。127.0.0.1(絕不為 0.0.0.0)。
動態本機推論的工具呼叫修復代理伺服器。127.0.0.1
臨時完整用戶端瀏覽器窗格所使用之各遠端主機的 SOCKS5 轉送器。繫結 0.0.0.0,但對等節點過濾為 loopback 加上 192.168.127.x

有兩個 loopback 端點存在於客體「內部」,而非位於 Mac 上:127.0.0.1:8080(每個 shell 匯出為 HTTPS_PROXY 的 VM 內 HTTP(S) 代理伺服器)與 127.0.0.1:11434(主機上的本機推論引擎透過 vsock 橋接於此顯現)。

安裝本身不會開啟任何 TCP 連接埠;基底映像檔建置的套件代理伺服器會為每次建置繫結一個臨時的 localhost 連接埠。

虛擬網路子網路

子網路用途
192.168.64.0/24工作區 VM 的預設 NAT 子網路(閘道 .1,DHCP 位址池 .2.254,租約 24 小時)。若 Mac 的 LAN 已使用它,則自動搬遷。
192.168.65.0/24192.168.126.0/24Bromure Web 執行個體搬遷進入的範圍,讓 AC 與 Web 不致衝突。
192.168.127.0/24完整用戶端已釘選的本機瀏覽器 VM 子網路(閘道 .127.1),使閘道可預測。
100.64.<n>.0/24用於機群子網路衝突的 CGNAT 別名子網路 — 已實作並測試,但尚未接入執行期路徑(支援的組態為單一遠端主機)。
10.98.<unit>.0/30具特權 utun 通道守護程序所使用的點對點連結網路。

主機↔客體 vsock 橋接

主機與客體透過 virtio 通訊端(vsock)通訊,它們沒有 IP 繫結 — 而是主機(CID 2)與各客體之間的編號通道。它們屬於內部管道,此處列出以供診斷。

vsock 連接埠橋接
5800Shell 執行代理 — 為 bromure-cli exec、控制通訊端 exec 路由,以及檔案總管窗格提供動力。
5010Loopback OAuth 回呼轉送(將 OAuth 重新導向送回 VM 內的 CLI)。
5830內建瀏覽器 MCP 伺服器的主機側(客體 stdio 墊片向外連線)。
8443HTTPS MITM 代理伺服器 — 客體的出口。
8444ssh-agent 橋接(支撐 SSH_AUTH_SOCK)。
8445AWS credential_process 輔助程式。
8446Claude 訂閱權杖代理,以及主機上的本機推論橋接(客體 127.0.0.1:11434)。
8447Codex/ChatGPT 訂閱權杖代理。
5000瀏覽器 VM 設定代理(於認領時的主機→客體 JSON 設定)。
5100瀏覽器 VM 檔案傳輸橋接(最大框架 16 MB,最大檔案 10 GB)。
5200瀏覽器 VM Chrome DevTools Protocol 橋接(螢幕擷取、eval)。
5300 / 5400瀏覽器 VM 連結傳送器/網路攝影機。
5810瀏覽器 VM 原生分頁橋接。
5900瀏覽器 VM 網路追蹤記錄橋接。

環境變數與啟動引數

這些會影響應用程式啟動時的行為。多數用於除錯、測試或從原始碼建置;適用對象 欄會標示各項面向的對象。在啟動二進位檔前設定環境變數,或在其後傳入啟動引數。

名稱效果適用對象
-AppleLanguages "(fr)"(啟動引數)標準的 macOS 地區設定覆寫;強制 UI 語言。會在引數剖析前被剝除,以便強制地區設定的重新啟動能正常運作。一般使用者
BROMURE_DEBUG_CLAUDE解鎖 TCP 自動化 API 上的除錯端點(/app/state、exec、/vms/debug/ui-shot/detect/prompt-injection),讓密鑰得以通過 AppleScript/MCP profile-JSON 橋接,並為 bromure-cli mcp --debug VM 工具所必需。進階使用者/除錯
BROMURE_AC_DEBUG=1為自動化引擎、注入分類器、規則掃描器與追蹤記錄管線提供帶時間戳記的 stderr 除錯。除錯
BROMURE_CLI_DEBUG為 CLI 指令在 stderr 上提供詳細的控制通訊端連線診斷。除錯(CLI)
BROMURE_REPAIR_DEBUG本機推論修復代理伺服器的請求/回應診斷,附加至 /tmp/bromure-repair.log除錯(本機模型)
BROMURE_INFER_DEBUG各請求的引擎統計(slot、預填權杖、TTFT、tok/s)輸出至 stderr。除錯(本機模型)
BROMURE_FATCLIENT_LOG無緩衝的完整用戶端 stderr 記錄。除錯(遠端)
BROMURE_ATTACH_DEBUG=<path>同時將完整用戶端記錄附加至檔案。除錯(遠端)
BROMURE_INJECTION_COREML=1在 CoreML/Neural Engine 提供者上執行注入分類器(預設為 CPU;CoreML 在相同準確度下約需 5× 的常駐記憶體)。進階使用者
BROMURE_NO_COREML強制停用分類器的 CoreML,即使已設定 BROMURE_INJECTION_COREML進階使用者
BROMURE_GPU_CACHE_GBMLX GPU 緩衝快取上限,以 GB 計(預設 4)。進階使用者(本機模型)
BROMURE_KVBITSBROMURE_KVBITS_STARTBROMURE_CACHE_SLOTSBROMURE_THINKING本機推論調校:KV 快取量化位元與門檻、KV 快取工作階段 slot(1–8,預設 4),以及停用靜默思考。請參閱 本機模型進階使用者(本機模型)
VISUAL / EDITORbromure-cli workspaces edit 使用的編輯器(回退至 vi)。一般使用者(CLI)
BROMURE_MANAGED_URL覆寫用於註冊、心跳與憑證簽發的 bromure.io API 基底。企業管理員
BROMURE_FATCLIENT_OPEN純完整用戶端啟動:跳過首次執行設定視窗(無需本機基底映像檔),並抑制 bromure-cli 符號連結提示。進階/測試
BROMURE_IMAGE_CATALOG_BASE將映像檔下載指向本機/預備的目錄;同時停用目錄簽章驗證。僅供測試與管線使用。測試 / CI
BROMURE_INSTALL_BROWSER_IMAGE=1於啟動時自動下載 AC 的內嵌瀏覽器映像檔副本(一般觸發方式為瀏覽器窗格或 設定瀏覽器)。測試/除錯
CODESIGN_IDENTITYbuild.sh 簽章身分;未設定時回退至臨時(ad-hoc)-(無 Gatekeeper、iCloud 或 vmnet)。開發者(建置)
DEVELOPER_IDAPPLE_IDTEAM_IDAPP_PASSWORDpackage.sh 的 Developer ID 簽章與公證。DEVELOPER_ID 為必需;公證三項為選用(未提供時會產生已簽章但未公證的 DMG)。開發者/發布者
DRY_RUN=1KEEP_PREVIOUS=1KEEP_STAGING=1映像檔發布/預演管線開關。發布者

引擎也會為其自身的子行程設定內部變數(BROMURE_ENGINE_KEYBROMURE_ENGINE_MASTER),而一次性的註冊 VM 則設定 BROMURE_AC_REGISTER;這些不應以手動方式設定。

UserDefaults 鍵(defaults write

io.bromure.agentic-coding 網域中的持久設定。多數具有 UI 對應項;vm.* 與開發者旋鈕則以 defaults write 設定。

效果預設值
automation.enabled開啟 loopback 自動化 HTTP API。false
automation.port自動化 API 連接埠。9223
automation.bindAddress自動化 API 繫結位址。127.0.0.1
remoteAccess.enabled啟用 SSH 遠端存取前門。false
remoteAccess.portSSH 前門連接埠(≥ 1024)。2222
remoteAccess.bindAddressSSH 前門繫結位址。0.0.0.0
remoteAccess.passwordAuthremoteAccess.pubkeyAuthSSH 驗證方法。兩者皆開啟
vm.homeImageGB新 ext4 家目錄映像檔的表面(客體可見)大小,以 GiB 計(8–1024;稀疏,因此前期不佔用空間)。64
vm.mtu客體 NIC MTU 鉗制值 — 在會黑洞掉安裝程式下載的 VPN 主機上將其調低。1280
vm.networkModevm.bridgedInterfacevm.dnsServers瀏覽器池網路模式、橋接介面,以及 DHCP DNS 覆寫。模式 NAT;其餘未設定
vm.extraChromeFlagsvm.chromeEnvExtra附加至瀏覽器 VM Chromium 啟動的開發者旋鈕。未設定
cloudflareTunnel.consented透過 Cloudflare quick tunnel 公開 HTTP 服務的一次性同意。false
cliSymlinkDeclined當你在 bromure-cli 符號連結提供中選擇「不要再詢問」時設定。false
ac.sidebarWidthac.filePaneOpen持久儲存的側邊欄寬度與檔案窗格開啟狀態。應用程式設定

客體 VM 速查表

在執行中的工作區 VM 內,你是 ubuntu,一位一般使用者(具 sudo 能力),家目錄為 /home/ubuntu。主機會接妥掛載與環境,讓套件管理員、代理程式與 Git 無需任何客體內設定即可運作。關於其機制,請參閱 概念

掛載點

路徑是什麼
/home/ubuntu你的家目錄 — ext4 home.img(現代)或 virtiofs 共用(舊版)。
/mnt/bromure-meta唯讀的各次啟動設定共用區:api_key.envproxy.env、CA 憑證、客體代理程式、MCP 設定、主機名稱/MTU 提示。
/mnt/bromure-outbox可寫入的客體→主機事件共用區(主機讀取的一次性事件檔案)。
/mnt/bromure-share-N共用專案資料夾(最多 8 個),也會以 ~/<basename> 形式符號連結進你的家目錄。
/mnt/bromure-meta/bromure-browser-mcp.py產生的瀏覽器 MCP stdio↔vsock 墊片,以唯讀方式預置進每個工作區。
~/.bromure/pastes/貼進終端機的影像貼上內容(7 天後自動清除)。

由主機設定的環境

變數值/效果
http_proxyhttps_proxyHTTPS_PROXYhttp://127.0.0.1:8080 — 將所有客體 HTTPS 送往主機 MITM 代理伺服器的 VM 內橋接。
NO_PROXYlocalhost,127.0.0.1,::1
SSH_AUTH_SOCK/tmp/bromure-agent.sock — 透過 vsock 橋接至主機 ssh-agent(僅各工作區與明確匯入的金鑰可達;你的 macOS 登入代理絕不會被公開)。
CA bundle 變數重新簽章的根 CA 透過 node、python、go、rust、curl、deno 與 AWS SDK 的標準 bundle 變數而受信任。
代理 API 金鑰ANTHROPIC_API_KEYOPENAI_API_KEYXAI_API_KEYGH_TOKENGITLAB_TOKENDIGITALOCEAN_ACCESS_TOKENLINEAR_API_KEY、AWS 變數,以及任何手動/資料庫變數 — 皆為 預留位置 值;主機會在傳輸途中替換為真正的密鑰。
本機模式代理變數當工作區路由到本機模型時,Claude Code 會看到 ANTHROPIC_BASE_URL=https://bromure.llm、各 VM 專屬的 ANTHROPIC_AUTH_TOKEN、設為 bromure-local 哨兵值的模型別名,以及 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1

警告: 客體能讀取的每一項憑證都是誘餌。一個範圍限定於某主機的假權杖若出現在送往另一主機的請求中,即是外洩的特徵,並會觸發 入侵偵測 — 它絕不會驗證任何東西。