附录 — 文件位置、端口与环境

本附录将散布在手册其余部分中的具体事实汇总为参考表格:磁盘上的位置、网络端口、环境变量和启动参数,以及客户机虚拟机速查表。此处的所有内容都以当前发行版本(版本 4.3.0,bundle 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 网络启动安装程序文件。
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终端网格成员关系。
engine-master.key每虚拟机本地推理引擎密钥的 32 字节主密钥。
engine-spawn.json本地推理引擎子进程生成配置(模型、内存预算、端口)。
fake-salt.bin用于派生伪造令牌的每次安装独立的 32 字节盐值(0600)。删除它会轮换此 Mac 上的每个伪造项。
secrets-master.key0600 后备 AES-256 主密钥,仅在无法访问数据保护 Keychain 时使用。
claude-subscription.enccodex-subscription.encgrok-subscription.encAES-GCM 加密、宿主机拥有的订阅 OAuth 存储(共享默认值加每工作区覆盖),0600
cloudflared/<version>/cloudflared固定的、经校验和验证的 cloudflared 二进制文件,旁边带有一个 current 符号链接。
ghostty/生成的终端配置(基础配置加每工作区配置)。

每工作区存储

每个工作区都是支持根目录下 profiles/<uuid>/ 处的一个自包含目录。有关这些内容的使用方式,请参阅工作区概念

路径(位于 profiles/<uuid>/ 下)保存内容
profile.json工作区定义,包括 supplyChain 策略块;socket.dev 和 Delpi API 密钥在宿主机端保存于此,从不复制到虚拟机中。仅写入非默认字段。
secrets.encAES-GCM 加密的工作区机密(chmod 600)。
disk.img系统磁盘 — base.img 的 APFS 写时复制克隆。
home.img保存 /home/ubuntu 的稀疏 ext4 镜像(现代 home 模型)。
home/旧版 virtiofs home 目录(升级前的工作区)。
boot-home/在 ext4 模型启动时共享的微型引导 home。
home.pre-ext4/存储升级后保留的 home 备份。
checkpoints/checkpoints/home/启动验证过的磁盘和 home 回滚克隆。
vm.state挂起虚拟机的内存快照。
tabs.json已保存的标签页布局,仅当 vm.state 存在时才生效。
machine-identifier.bin持久化的 VZ 机器标识(恢复挂起虚拟机所必需)。
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、分词器文件、可选的 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远程主机密钥的首次使用信任(TOFU)固定项。
remote-client/hosts.json已保存的远程服务器("最近的服务器")。
remote-client/hosts/<host-UUID>/grid-layout.jsonautomations.json每主机镜像持久化,使远程网格永远不会覆盖本地网格。

注意: remote-client/ 子树会随 CFFIXED_USER_HOME 一起重新定位,这正是可以并排运行两个隔离实例进行测试的方式。

支持目录之外

路径保存内容
~/Library/LaunchAgents/io.bromure.agentic-coding.boot.plist登录时启动的 LaunchAgent,当任何工作区启用"登录时启动此虚拟机"时写入。
<app>/Contents/Library/LaunchDaemons/io.bromure.fatclient-tunnel.plist嵌入式特权隧道守护进程,通过 SMAppService 按需注册。
/var/run/io.bromure.fatclient-tunnel.sock特权隧道守护进程套接字(root 创建,chmod 600,chown 给控制台用户)。
/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临时浏览器虚拟机写时复制克隆,拆除时删除。
<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 机密保险库主密钥(数据保护 Keychain)。
io.bromure.agentic-coding.ssh-key-passphrases<profileUUID>/<filename>导入 SSH 密钥的口令。
io.bromure.agentic-coding.managed-installinstall-tokenleaf-cert-key-<serial>注册持有者令牌和每序列号叶证书私钥。

应用的所有 UserDefaults 都位于 io.bromure.agentic-coding 域中(用 defaults read/defaults write 读写)。

网络端口与子网

TCP 与回环端口

Bromure Agentic Coding 默认不打开任何固定的入站端口。下面两个可选服务在你启用之前处于关闭状态;其余的仅限回环,且要么是动态的,要么是内部的。

端口用途绑定位置
9223(默认)自动化 HTTP API 和 bromure-cli mcp 后端。默认关闭(automation.enabled);选择比浏览器产品的 9222 大一,以便两个应用可以并排运行。提供 GET /health127.0.0.1(可通过 automation.bindAddress 配置;非回环绑定未经身份验证并会发出警告)。
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,但按对端过滤为仅回环加 192.168.127.x

有两个回环端点存在于客户机内部,而非 Mac 上:127.0.0.1:8080(虚拟机内 HTTP(S) 代理服务器,每个 shell 都将其导出为 HTTPS_PROXY)和 127.0.0.1:11434(宿主机上的本地推理引擎通过 vsock 桥接出现的位置)。

安装本身不打开任何 TCP 端口;基础镜像构建的软件包代理服务器为每次构建绑定一个临时 localhost 端口。

虚拟网络子网

子网用途
192.168.64.0/24工作区虚拟机的默认 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富客户端固定的本地浏览器虚拟机子网(网关 .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 路由和文件浏览器窗格提供支持。
5010回环 OAuth 回调中继(将 OAuth 重定向递送回虚拟机内的 CLI)。
5830内置浏览器 MCP 服务器的宿主机端(客户机 stdio 垫片向外连接)。
8443HTTPS MITM 代理服务器 — 客户机的出口。
8444ssh-agent 桥接(支撑 SSH_AUTH_SOCK)。
8445AWS credential_process 助手。
8446Claude 订阅令牌代理,以及宿主机上的本地推理桥接(客户机 127.0.0.1:11434)。
8447Codex/ChatGPT 订阅令牌代理。
5000浏览器虚拟机配置代理(认领时宿主机→客户机 JSON 配置)。
5100浏览器虚拟机文件传输桥接(最大帧 16 MB,最大文件 10 GB)。
5200浏览器虚拟机 Chrome DevTools Protocol 桥接(截图、求值)。
5300 / 5400浏览器虚拟机链接发送器 / 网络摄像头。
5810浏览器虚拟机原生标签页桥接。
5900浏览器虚拟机网络追踪桥接。

环境变量与启动参数

这些会在启动时影响应用。大多数用于调试、测试或从源代码构建;受众列标明了每一项面向的对象。在启动二进制文件之前设置环境变量,或在其后传递启动参数。

名称效果受众
-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 虚拟机工具所必需的。高级用户 / 调试
BROMURE_AC_DEBUG=1自动化引擎、注入分类器、规则扫描器和追踪管道的带时间戳 stderr 调试。调试
BROMURE_CLI_DEBUGCLI 命令在 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/神经引擎提供程序上运行注入分类器(默认为 CPU;在相同精度下 CoreML 的常驻内存约为其 5 倍)。高级用户
BROMURE_NO_COREML即使设置了 BROMURE_INJECTION_COREML,也强制为分类器禁用 CoreML。高级用户
BROMURE_GPU_CACHE_GBMLX GPU 缓冲区缓存上限(以 GB 为单位,默认 4)。高级用户(本地模型)
BROMURE_KVBITSBROMURE_KVBITS_STARTBROMURE_CACHE_SLOTSBROMURE_THINKING本地推理调优:KV 缓存量化位数和阈值、KV 缓存会话槽(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 签名标识;未设置时回退到临时 -(无 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),一次性注册虚拟机会设置 BROMURE_AC_REGISTER;这些不应手动设置。

UserDefaults 键(defaults write

io.bromure.agentic-coding 域中的持久化设置。大多数都有 UI 等价项;vm.* 和开发者旋钮通过 defaults write 设置。

效果默认值
automation.enabled打开回环自动化 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 home 镜像的表面(客户机可见)大小,以 GiB 为单位(8–1024;稀疏,因此前期不占用任何空间)。64
vm.mtu客户机 NIC MTU 钳制值 — 在会黑洞化安装程序下载的 VPN 宿主机上将其调低。1280
vm.networkModevm.bridgedInterfacevm.dnsServers浏览器池网络模式、桥接接口和 DHCP DNS 覆盖。模式为 NAT;其余未设置
vm.extraChromeFlagsvm.chromeEnvExtra附加到浏览器虚拟机 Chromium 启动的开发者旋钮。未设置
cloudflareTunnel.consented通过 Cloudflare 快速隧道公开 HTTP 服务的一次性许可。false
cliSymlinkDeclinedbromure-cli 符号链接提示上选择"不再询问"时设置。false
ac.sidebarWidthac.filePaneOpen持久化的侧边栏宽度和文件窗格打开状态。应用设定

客户机虚拟机速查表

在运行中的工作区虚拟机内,你是 ubuntu,一个普通用户(具备 sudo 能力),其 home 为 /home/ubuntu。宿主机会接通挂载点和环境,使包管理器、代理和 Git 无需任何客户机内设置即可工作。有关机制,请参阅概念

挂载点

路径是什么
/home/ubuntu你的 home — ext4 home.img(现代)或 virtiofs 共享(旧版)。
/mnt/bromure-meta只读的每次启动配置共享:api_key.envproxy.env、CA 证书、客户机代理、MCP 配置、主机名/MTU 提示。
/mnt/bromure-outbox可写的客户机→宿主机事件共享(宿主机读取的一次性事件文件)。
/mnt/bromure-share-N共享的项目文件夹(最多 8 个),也符号链接到你的 home 中为 ~/<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 代理服务器的虚拟机内桥接。
NO_PROXYlocalhost,127.0.0.1,::1
SSH_AUTH_SOCK/tmp/bromure-agent.sock — 通过 vsock 桥接到宿主机 ssh-agent(只有每工作区和显式导入的密钥可达;你的 macOS 登录代理从不暴露)。
CA 包变量重签名根 CA 通过 node、python、go、rust、curl、deno 和 AWS SDK 的标准包变量得到信任。
代理 API 密钥ANTHROPIC_API_KEYOPENAI_API_KEYXAI_API_KEYGH_TOKENGITLAB_TOKENDIGITALOCEAN_ACCESS_TOKENLINEAR_API_KEY、AWS 变量,以及任何手动/数据库变量 — 全部为占位符值;宿主机在传输过程中换入真实机密。
本地模式代理变量当工作区路由到本地模型时,Claude Code 会看到 ANTHROPIC_BASE_URL=https://bromure.llm、每虚拟机独立的 ANTHROPIC_AUTH_TOKEN、设置为 bromure-local 哨兵值的模型别名,以及 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1

警告: 客户机能读取的每个凭据都是诱饵。一个仅限于某台主机的伪造令牌若出现在发往另一台主机的请求中,就是数据外泄的特征,会触发入侵检测 — 它永远不会对任何东西进行身份验证。