CLI、API 与 MCP

应用能做的一切,也都能在不打开窗口的情况下操作。应用的二进制文件——位于 Bromure Agentic Coding.app/Contents/MacOS/ 内的 bromure-ac——同时也是一个多命令 CLI、一个 HTTP 控制平面、一个供外部 AI 工具使用的 MCP 服务器,以及一个 AppleScript 目标。在每台虚拟机内部,一组内置的 MCP 服务器让代理拥有自己的 Bromure 视图。本章是这一切的参考资料。

由外而内,这些接口依次为:

  • bromure-cli 命令行——类似 Docker/kubectl 的 CLI,用于机器、虚拟机、终端、命令、追踪、模型、远程访问和注册。
  • 控制平面——以 HTTP 上的 JSON 提供相同的操作,位于仅限所有者的 Unix 套接字上,并可选择位于环回 TCP 端口上。
  • AC MCP 服务器(bromure-ac mcp)——让你 Mac 上的 AI 工具(Claude Code、Claude Desktop)管理应用。
  • 客户机内的 MCP 服务器——内置于每台虚拟机:浏览器、自动化、基础设施、委派,以及供特定会话使用的任务看板和总机。
  • AppleScript——Bromure AC Suite 字典。

在本章和 CLI 中,机器都称为工作区(它在设置编辑器和命令行中的名称)。代理对话意义上的会话,通过 /agent-sessions 路由访问;较旧的 /sessions 路由,以及 CLI 和 AppleScript 中的 session 一词,指的是机器的窗口。

控制平面:套接字与 API

每个接口都通过以下两种传输方式之一,以 HTTP 与运行中的应用通信:

传输方式位置访问门控默认开启
控制套接字~/Library/Application Support/BromureAC/control.sock(Unix 域,HTTP/1.1)文件权限——套接字为 0600 模式,仅所有者可访问。能访问到该文件即是授权,Docker 套接字风格。是,只要应用或无头代理在运行
自动化 API127.0.0.1:9223(TCP)默认仅限环回;大多数控制路由还需要环境变量 BROMURE_DEBUG_CLAUDE,有些则永远不会通过 TCP 提供(请参阅认证模型)否——需在 偏好设置 › 自动化 中选择启用

CLI 永远不会直接与虚拟机通信。每个子命令都是控制套接字上的轻量 HTTP 客户端,因此相同的命令在本地可用,而且——当套接字通过 SSH 隧道传输时——也能从富客户端对远程实例使用。当你运行需要代理的命令、而没有代理在运行时,CLI 会自动启动一个无窗口的后台代理(bromure-ac run --headless),并等待最多 40 秒让它响应 /health。只读命令(vm ls、describe、trace …)不会自动启动;它们会改为显示 No bromure-ac agent running.。

注: 只要应用在运行,控制套接字就始终可用,且与 启用自动化服务器 开关无关。该开关只控制端口 9223 上的 TCP 监听器。使用 CLI 不需要启用自动化 API。

bromure-cli 命令行

你可以用包内的完整路径调用二进制文件,但短名称更方便。在应用菜单中选择 Bromure Agentic Coding › 安装命令行工具…。警告 安装“bromure-cli”命令行工具? 会说明它会在 /usr/local/bin/bromure-cli 创建符号链接,并需要输入一次管理员密码;点按 安装(或 取消)。成功后,命令行工具已安装 会提示你运行 bromure-cli --help。应用启动时不会再主动提供此安装——菜单项是唯一的途径,而且你随时都能再次运行(例如在移动应用之后)。

同一个二进制文件会根据调用时使用的名称而表现不同:

  • 以 bromure-cli 调用时,它会隐藏应用内部命令——镜像管理(init、info、reset 和发布流水线工具)、mcp 服务器,以及 GUI 默认的 run——只公开面向终端的组(Workspaces、Tracing、Local inference、Enterprise features、remote)。单独运行 bromure-cli 会显示帮助,而不会打开应用。
  • 以 bromure-ac 调用时(应用包内的二进制文件),所有功能都可用,默认子命令是会打开 GUI 的 run。

以下示例使用 bromure-cli;只有它才公开的命令,请使用完整路径 …/MacOS/bromure-ac。

凡是出现工作区参数的地方,命令都接受工作区的 ID、短 ID 前缀或其名称。命令组 vm 和 workspaces 互为别名。机器是什么,以及它与会话的关系,请参阅机器。

应用与后台代理

概要作用
bromure-ac run [--headless]默认(隐藏)子命令——打开 GUI。--headless 会运行无窗口的菜单栏辅助代理;CLI 为提供控制套接字而自动启动的就是它。

镜像管理

基础镜像只需安装一次。这些命令只存在于 bromure-ac 名称下。

概要作用
bromure-ac init [--build-local]安装 Ubuntu 基础镜像:下载预构建镜像,下载失败时回退到本地构建。--build-local 强制本地构建。
bromure-ac info显示基础镜像的版本、虚拟大小、磁盘上大小和路径。
bromure-ac reset [--yes]删除基础镜像(磁盘、EFI 变量、版本戳、状态),让下一次 init 从头开始;除非加上 --yes,否则会要求确认。
bromure-ac init-foss-image --output <dir>仅限发布流水线——将可再分发、仅含自由软件的基础镜像构建到 <dir>。
bromure-ac verify-image --disk <path> [--timeout 300]仅限发布流水线——以无界面方式启动一个一次性克隆,并要求在超时前出现串口登录提示。

注: 如果不存在基础镜像,打开 GUI 会带你进入引导向导,并就地安装镜像——请参阅安装与首次运行。

工作区与虚拟机控制

这是核心命令组。vm run 刻意采用 Docker 风格:它启动一个工作区,并将你的终端交给客户机共享的 bromure tmux 会话。

概要作用
bromure-cli vm ls列出每个工作区及其实时状态(off / suspended / booting / running)、运行时长、窗口附加状态、以树形显示的 tmux 标签页(* 标记活动标签页)以及正在运行的 Docker 容器。
bromure-cli vm run [<workspace>] [-v <dir>]… [--name N --tool T --auth A --api-key K] [--memory GB] [-d] [--rm]启动某个工作区的虚拟机,或临时创建一个一次性工作区。默认:将你的终端附加到客户机 tmux。
bromure-cli vm attach <vm> [<tab#> | containers:<name> [-- <shell>]] [-w]将终端附加到虚拟机的 tmux(可选择跳转到某个标签页),通过 docker exec -it 进入正在运行的容器(默认 shell 为 bash),或使用 -w/--window 打开/重新附加 GUI 窗口。
bromure-cli vm exec <vm> [-i] [-t] [--timeout 600] -- <command…>在虚拟机内运行命令(kubectl 风格,位于 -- 之后)。-it 打开一个交互式 pty;配合 -it 省略命令即可获得一个 shell。客户机退出码会被传递。
bromure-cli vm kill <vm> [--suspend]停止虚拟机:正常关机,或使用 --suspend 挂起(将 RAM 保存到磁盘)。
bromure-cli vm reboot <workspace> [--hard]就地重启正在运行的工作区;默认为正常重启,--hard 会立即将其拆除。
bromure-cli vm describe <workspace>打印工作区的设置,以及运行时的实时运行时详情(状态、IP、vCPU、Fusion 状态、来自客户机 df 的磁盘使用情况、标签页、容器、使用中的内存)。
bromure-cli vm ports <workspace>(或 vm <workspace> -L)显示正在运行的工作区的监听端口(以 root 身份实时执行 ss):PORT、PROTO、ADDRESS、PROCESS,并标记仅环回的绑定。
bromure-cli vm fsck <workspace> [--repair] [--home]从 Mac 检查已停止工作区的系统磁盘——或加上 --home 检查其主目录镜像——无需虚拟机,也无需额外工具。--repair 会重放文件系统日志,并清除过时的错误标志。请参阅从命令行检查磁盘。
bromure-cli workspaces create [--name N] [--tool T] [--auth A] [--api-key K] [--memory GB] [--color C] [-v <dir>]… [--generate-ssh] [--from-json <file|->]以无头方式创建工作区。--from-json 应用完整的 profile JSON 文档(命令行标志会覆盖匹配的字段);--generate-ssh 生成一个宿主机端 SSH 密钥并打印公钥。
bromure-cli workspaces edit <workspace> [--from-json <file|->]获取工作区的完整配置,在 $VISUAL/$EDITOR(回退为 vi)中打开,并将更改保存回去。机密显示为空白——留空即保留,输入即替换。在编辑器中删除一个键会清除该字段。--from-json 以非交互方式应用一个文档;它可以只包含部分内容——缺失的键保留原值,显式的 null 则清除它。
bromure-cli workspaces rm <workspace> [-f]在 y/N 确认后删除工作区及其所有数据(磁盘 + home),使用 -f 可跳过确认。
bromure-cli workspaces ssh-keygen <workspace>为工作区生成一个新的宿主机端 SSH 密钥,并打印用于你的 Git 宿主的公钥。

一些值得了解的操作细节:

  • vm run 标志。 --tool 接受代理 ID:claude、codex、grok、kimi 或 omp。--auth 为 token、subscription、bedrock 或 local。无法识别的值会产生错误并列出有效值,例如 Invalid --tool “gpt” — expected one of: claude | codex | grok | kimi | omp.;workspaces create 也以相同方式检查 --tool 和 --auth。-v/--volume <hostdir> 会把宿主机文件夹挂载到客户机的 ~/<basename>(可重复,最多 8 个)。-d/--detach 会启动虚拟机后直接返回,而不附加。--rm 会在虚拟机停止时删除工作区及其磁盘。用 Ctrl-b d 从已附加的 tmux 分离——虚拟机会继续运行。
  • 代理来自模型。 工具和认证标志只会为新工作区提供初始值。每个代理实际使用的模型和提供方,来自 偏好设置 › 模型 以及工作区自己的模型面板——请参阅模型与提供方。
  • 感知 TTY。 将终端交给 tmux 的 Docker 式默认行为只在真正的终端上适用;以管道或脚本调用时,行为就如同传入了 -d。
  • workspaces create 的值。 颜色为 blue、red、green、orange、purple、pink、teal 或 gray。
  • 编辑时留空保留。 workspaces edit 导出整个配置并将机密置空;保存回去的文档中若某机密为空白,则保留已存储的值,因此往返操作绝不会清除你的密钥。未改动的缓冲区不会保存任何内容;无效的 JSON 会中止操作。
  • Exec 等待。 vm exec 最多等待 10 秒等待客户机 shell 代理;返回 502 意味着虚拟机可能未运行,或名称不匹配。在已附加会话期间触发的批准提示会呈现在你的终端上(参见附加终端上的许可),绝不会出现在客户机内部。

从命令行检查磁盘

vm fsck 是 ext4 浏览器中 运行 fsck…,以及启动因文件系统错误而停止时应用显示的 修复磁盘 按钮的可脚本化对应版本。它使用 Bromure 自己的 ext4 检查器,因此无需安装任何东西。

bromure-cli vm kill "Web app"            # the workspace must be stopped
bromure-cli vm fsck "Web app"            # check the system disk, report only
bromure-cli vm fsck "Web app" --repair   # replay the journal, clear the error flag
bromure-cli vm fsck "Web app" --home     # check the home image instead

工作区运行时,它会拒绝运行。输出会以下列其中一个摘要结尾:“Filesystem is clean.”、“Filesystem repaired; it is now consistent.”或“Filesystem has errors this checker cannot repair.”。未加 --repair 的检查如果发现问题,会建议加上 --repair 重新运行。只要仍有错误,命令就会以状态 4 退出。检查器的范围和限制,请参阅高级。

模型、路由与 Fusion

模型和提供方设置在模型与提供方中说明,多模型综合则在 Fusion 中说明;CLI 的开关如下:

概要作用
bromure-cli model catalog|ls|pull|use|rm …管理设备端 MLX 模型——浏览精选目录(带内存适配和工具调用徽章)、以实时进度下载、为运行中虚拟机的工作区设置当前模型、移除。
bromure-cli vm fusion enable|disable <vm>在运行中的虚拟机上启用或停用 Fusion。工作区必须配置两个或以上模型。on/engage 和 off/disengage 也被接受为同义词。
bromure-cli vm routing cloud|local <vm>设置运行中虚拟机的 LLM 后端路由:代理的云提供方,或本地模型。

追踪检查

这些命令读取各工作区的代理服务器追踪。除非工作区已启用追踪,否则不会返回任何内容——请参阅追踪设置——完整说明请见追踪与审计。

概要作用
bromure-cli trace ls [workspace] [--limit 50]列出最近的请求:TIME / HOST / METHOD / STATUS / REQ / RESP / LAT / FLAGS(标志包括 swap×N、LEAK×N、conv)。
bromure-cli trace summary [workspace]汇总总计、状态类别、交换/泄漏/对话计数以及排名靠前的主机。
bromure-cli trace hostnames [workspace]列出各个不同的主机及其请求计数。
bromure-cli trace leaks [workspace]显示疑似凭据泄漏的请求(标头、预览、可疑度)。
bromure-cli trace clear [-f]在 y/N 确认后清除内存中和磁盘上的追踪历史。

远程访问

可选的 SSH 前门默认关闭,完整说明请见远程访问与客户端。所有操作都经由控制套接字通过运行中的应用进行。

概要作用
bromure-cli remote [status]默认子命令——打印启用/运行状态、绑定与端口、认证方法、主机密钥指纹、登录用户、一条现成的连接命令以及授权密钥。
bromure-cli remote enable [--port 2222] [--bind 0.0.0.0] [--[no-]password] [--[no-]pubkey]启用 SSH 服务器。至少必须保留一种认证方法。
bromure-cli remote disable关闭 SSH 服务器。
bromure-cli remote key add <key|path> / key [ls] / key rm <index|fingerprint>管理授权公钥(ls 为默认)。

企业注册

登录到 bromure.io… 表单的 CLI 对应命令,用于脚本化的设备置备。参见企业。

概要作用
bromure-cli enroll --code <6-word-code> [--server-url URL] [--device-name NAME]使用管理员生成的代码将此 Mac 注册到 bromure.io 工作区。服务器默认为 $BROMURE_MANAGED_URL 或 https://bromure.io/api;设备名称默认为 Mac 的主机名。
bromure-cli unenroll [--force]从已注册的工作区退出登录(除非使用 --force,否则会请求 y/N)。
bromure-cli enrollment-status打印注册状态(工作区、用户、安装 id、设备、服务器、注册日期、bearer/leaf 证书是否存在)。“not enrolled” 以 0 退出,因此自动化不会将其视为失败。

集成与内部命令

概要作用
bromure-ac mcp [--debug] [--api-url http://127.0.0.1:9223]以 stdio 为 AI 工具运行 AC MCP 服务器。请参阅 AC MCP 服务器。
__remote-menu、__attach-window、__fatclient…、__forward…、__dial、__tunnel-helper内部入口点(SSH ForceCommand TUI、终端字节泵,以及富客户端的隧道辅助程序)。不供交互使用。

远程 TUI (__remote-menu)

启用 SSH 远程访问后,每次远程登录都会(通过 ForceCommand)被强制导入一个手工打造的 ANSI 终端 UI,而不是 shell——一个用方向键和数字操作的备用屏幕、256 色菜单,可在任何 SSH PTY 上工作(请使用 ssh -t)。它以菜单形式呈现 CLI:

  • 工作区——用单屏表单创建(Name、Tool、Auth、API key、Memory、Color、Folders、Generate SSH、Full settings…、Create)、各工作区的操作(运行中的工作区有 Attach、New tab、Describe、Configure…、Fusion、Routing、Worktrees…、Reboot…、Suspend、Kill;已关闭的有 Start、Describe、Configure…、Delete),以及原始表格视图。Configure… 以文本表单提供设置编辑器的各个面板;由于模型是在应用中选择的,其 Models 表单为只读(服务器的提供方,以及工作区是否覆盖它们)。
  • 模型 — 已安装的模型和下载目录;选择未安装的模型时会提供带实时进度的内联 model pull。
  • 追踪 — 摘要 / 主机名 / 泄漏 / 最近 / 清除。

当你附加到工作区的 tmux 时,一组神奇组合键(默认为 Ctrl-],显示在横幅中)会调出由宿主机绘制的控制器覆盖层:标签页树、New tab、Worktrees…、Fusion、Routing、Edit settings…、Reboot…、Suspend、Disconnect。客户机永远看不到触发键——可用 remote/overlay-key 文件或 $BROMURE_OVERLAY_KEY 覆盖。Ctrl-b d 会断开 tmux 并返回菜单。远程 TUI 操作的是机器及其终端;代理会话、房间和总机则改由富客户端访问。完整的远程说明请见远程访问与客户端。

环回自动化 API

控制平面也可以通过 TCP 以 HTTP 上的 JSON 暴露,供任何语言编写脚本使用。它默认关闭。

启用它

打开 偏好设置… › 自动化(⌘,)——即 自动化 API 与 MCP 服务器 面板。

偏好设置的自动化面板:启用自动化服务器开关、端口 9223、绑定地址 127.0.0.1,以及 MCP 客户端配置片段
  1. 打开 启用自动化服务器。开启时,窗格显示 正在监听 127.0.0.1:9223;关闭它会立即停止服务器。
  2. 根据需要设置 端口(说明文字为 (默认:9223))和 绑定地址(默认为 127.0.0.1)。端口和绑定地址会在服务器下次启动时生效——关闭再打开开关即可立即应用。

你也可以不使用 GUI 来切换该开关:

defaults write io.bromure.agentic-coding automation.enabled -bool true

警告: 将 绑定地址 设置为 127.0.0.1 以外的任何值都会将 API——以及它所支撑的 MCP 服务器——暴露到网络,窗格会警告 非环回绑定会将 API 暴露到网络。MCP 服务器没有认证。 除了环回边界和下文的 BROMURE_DEBUG_CLAUDE 门控之外,TCP 监听器上没有任何认证。除非你有明确且可信的理由,否则请将绑定地址保持在环回上。

认证模型

TCP 监听器和控制套接字提供相同的路由,但访问权限不同:

路由组控制套接字自动化 API(TCP 环回)
GET /health、GET /profiles、GET /vms、GET/POST /sessions允许允许
工作区的创建和编辑(POST /profiles、/profiles/<id>…)、虚拟机控制和 exec(POST /vms、/vms/<id>/…)、/trace、/app/state、/preferences、/models/settings、代理会话、房间、委派、任务、自动化、集群和注册表允许应用需设置 BROMURE_DEBUG_CLAUDE
/state、/state/subscribe、/remote…、/grid-layout、/workspaces、/subscriptions/…、/models/<action>、/connector允许永不——仅限控制套接字

换句话说:控制套接字是完全访问、仅限所有者的路径;TCP API 只在环回接口上开放安全的子集,其他一切都放在调试标志之后。路径段只进行一次百分号编码(因此含空格的工作区名称也能工作)。

用于脚本编写的端点

最有用的路由:

端点用途
GET /health存活状态,外加 debugEnabled。
GET /state一次性的镜像快照:工作区、虚拟机、网格布局、自动化、pendingPrompts 等。
GET /state/subscribe/state 的推送形式:连接保持打开,每当状态变化就流式传输一份新的快照。富客户端用它代替轮询。
GET /vms / POST /vms列出运行中的虚拟机;从工作区引用或带挂载点的内联规格启动虚拟机(即 vm run 调用的)。
POST /vms/<id>/exec在虚拟机中运行命令;interactive 会把连接接管为原始的分帧 pty 流。
GET /profiles / POST /profiles列出工作区;从 JSON 文档创建一个。
GET / PUT /preferences读取或替换偏好设置的 Defaults 模板(读取时清空机密,写入时若留空则保留)。这就是富客户端的偏好设置窗口在远程主机上编辑的内容。
GET / PUT /models/settings读取或替换全局模型设置(偏好设置 › 模型),密钥会被遮蔽。
POST /subscriptions/register / POST /subscriptions/forget在这台主机上为客户端启动提供方登录({"provider": …, "profileId": …};登录 URL 会通过 /state 返回),或忘记已保存的登录。
POST /agent-sessions/start启动代理会话(profile、tool,以及可选的文件夹、仓库或开场消息)。
POST /agent-sessions/<id>/<action>对会话执行操作:send、keys、resume、close、rename、nickname、archive、unarchive、delete、review,以及分支操作(worktree、branch-merge、branch-pr、branch-discard、branch-keep、branch-decline)。
GET /agent-sessions/<id>/transcript、GET /agent-sessions/<id>/pending会话的对话(base64 JSONL),以及它正在等待的内容(一个问题及其选项)。
POST /agent-sessions/switchboard启动或显示总机。
POST /agent-rooms/create|move|group、POST /agent-rooms/<id>/rename|color|layout|archive|unarchive|ungroup|delete|switchboard创建和编辑房间。
POST /delegations/request、POST /delegations/<id>/<action>、GET /delegations/<id>/file跨主机委派:一台主机的会话询问另一台主机上的会话,然后发送、回答、调整方向、结束或取消,并获取附加的文件。
GET / POST /tasks、/tasks/<id>/…读取和操作编码任务看板。
GET / POST /k8s、/k8s/<id>/<action>、POST /registries、/registries/<id>/<action>创建和操作 Kubernetes 集群与注册表。
GET /automations / POST /automations/<id>/run读取和操作计划自动化(请参阅通过 API 控制自动化)。
POST /prompts/<id>/answer回应队列中的生命周期提示(请参阅回应待处理的提示)。

由于控制套接字路径包含空格,请先将其捕获到一个变量中:

SOCK="$HOME/Library/Application Support/BromureAC/control.sock"

# Full mirror snapshot (control socket only)
curl --unix-socket "$SOCK" http://localhost/state

# List running VMs
curl --unix-socket "$SOCK" http://localhost/vms

# Boot a workspace by name
curl --unix-socket "$SOCK" -X POST http://localhost/vms \
  -d '{"profile":"Web app"}'

# Answer a queued lifecycle prompt with one of its offered button labels
curl --unix-socket "$SOCK" -X POST http://localhost/prompts/PROMPT_ID/answer \
  -d '{"choice":"Not Now"}'

启用 TCP API 之后,安全的子集就能通过它工作——例如,列出工作区和打开机器的窗口都不需要调试标志:

curl http://127.0.0.1:9223/profiles
curl -X POST http://127.0.0.1:9223/sessions -d '{"profile":"Web app"}'

注: 控制平面的路由是与富客户端共享的集成接口,而不是有版本管理的公开 API;其请求和响应的格式可能在版本之间变化。上述 CLI 命令才是用脚本操作 Bromure 的稳定方式。仅供调试的路由、环境变量和文件位置都整理在附录中。

AC MCP 服务器 (bromure-ac mcp)

bromure-ac mcp 会运行一个 stdio JSON-RPC MCP 服务器(服务器名称 bromure-ac),让你 Mac 上的 AI 工具管理应用。它封装了 HTTP 自动化 API 和 AppleScript,因此请先启用自动化服务器——列表和窗口工具会调用位于 --api-url(默认 http://127.0.0.1:9223)的 HTTP API。它无法以 bromure-cli 名称使用。

它暴露的工具:

  • bromure_ac_list_profiles、bromure_ac_list_sessions
  • bromure_ac_open_session(打开工作区的窗口;最多等待 30 秒)、bromure_ac_close_session
  • bromure_ac_get_profile、bromure_ac_set_profile(原子 JSON 替换,保留 id)
  • bromure_ac_get_profile_setting、bromure_ac_set_profile_setting

使用 --debug(并在应用上设置 BROMURE_DEBUG_CLAUDE)时,它会额外添加 bromure_ac_app_state、bromure_ac_vm_exec、bromure_ac_vm_read_file 和 bromure_ac_vm_write_file。

若要接入 Claude Code,请将以下内容添加到 ~/.config/claude-code/.mcp.json(或你客户端的对应文件)。这正是自动化面板的 MCP 客户端配置 部分所显示的片段:

{
  "mcpServers": {
    "bromure-ac": {
      "command": "/Applications/Bromure Agentic Coding.app/Contents/MacOS/bromure-ac",
      "args": ["mcp"]
    }
  }
}

注意: get/set profile 工具会调用 osascript(针对运行中应用的 AppleScript),因此 GUI 应用必须在运行,且 macOS 可能会为自动化权限提示一次。除非设置了 BROMURE_DEBUG_CLAUDE,否则 profile JSON 在传输时机密会被置空。

虚拟机内的 MCP 服务器

与 AC MCP 服务器无关,Bromure 会为每台虚拟机内的代理提供一组内置的 MCP 服务器——无需任何配置。每一个都是小型的 Python stdio 垫片,以只读方式放在客户机的 /mnt/bromure-meta/ 下;垫片通过 vsock 连接宿主机,断线时会无限重连,因此代理永远不会失去其工具。工具由宿主机提供,每次调用都在宿主机上检查:代理只能看到并操作其自身机器和会话有权访问的内容。

vsock 端口服务器谁会获得工具
5830browser每个代理操作机器内嵌 Chromium 的 23 个 browser_* 工具(请参阅下文)。
5831task board仅限运行编码任务的代理board_get_task、board_set_plan、board_create_subtasks、board_set_dependencies、board_ready_for_review、board_report_landing。
5832plan stream编码任务的规划运行不是 MCP 服务器:任务的规划运行把计划流式传输到看板所用的通道。
5833automations每个代理automation_list、automation_get、automation_create、automation_update、automation_delete、automation_run——仅限代理自身机器的自动化。请参阅自动化。
5834infrastructure每个代理infrastructure_overview、cluster_status、cluster_create、cluster_start、registry_status、registry_create、registry_start——仅限机器有权访问的集群和注册表。请参阅 Kubernetes 集群与注册表。
5835delegation每个代理会话delegate、request、list_peers、list_delegations、read_inbox、wait、ask、report、deliver、answer、steer、close_delegation、cancel、worktree_create、worktree_status、worktree_merge。垫片会告诉宿主机自己在哪个 tmux 窗口中运行,因此代理无法冒充另一个会话。请参阅代理协同工作。
5836switchboard仅限总机会话list_sessions、read_session、pending_question、list_workspaces、next_events、send_to_session、answer_question、press_keys、start_session、resume_session、message_user、archive_session。

browser、automations、infrastructure 和 delegation 服务器会写入每个代理自己的 MCP 配置,与你在机器的 MCP 面板中添加的服务器并列(MCP 设置)。task board 和 switchboard 服务器只会传给需要它们的运行。

browser 服务器

browser 服务器操作机器内嵌的 Chromium,后者在自己的一次性虚拟机中运行。它的 23 个工具涵盖浏览和检查——browser_navigate、browser_new_tab、browser_list_tabs、browser_activate_tab、browser_close_tab、browser_back、browser_forward、browser_reload、browser_screenshot(含整页选项)、browser_evaluate、browser_get_text、browser_get_html、browser_get_links、browser_click、browser_fill、browser_type、browser_press_key、browser_wait_for、browser_network、browser_network_summary、browser_clear_network、browser_console,以及 browser_pick_element(60 秒的交互式元素选择器)。

在浏览器关闭时调用工具,会打开浏览器并等待冷启动。由于浏览器是独立的虚拟机,服务器的指示会告诉代理用机器的局域网 IP(hostname -I)访问其机器上的开发服务器,绝不要用 localhost。完整说明请见嵌入式浏览器。

注: 在富客户端上,代理的浏览器 MCP 流可以通过 SSH 连接传输,让远程代理操作你在本地看到的浏览器窗格。请参阅远程访问与客户端。

你所添加 MCP 服务器的 OAuth

你在编辑器中添加的 HTTP MCP 服务器可以通过宿主机端的 OAuth 代理进行认证:它执行 RFC 8414 发现和 RFC 7591 动态客户端注册(以 Bromure AC 身份),在你的系统浏览器中运行 PKCE 授权码流程,并在环回监听器上(端口 28500–28599)提供回调。成功页面显示 已授权 — 您可以关闭此标签页并返回 Bromure AC。 整个流程在宿主机上运行,因此虚拟机永远看不到真正的 OAuth 凭据。

AppleScript (Bromure AC Suite)

脚本字典 Bromure AC Suite 是另一个自动化接口——适用于编排,以及需要窗口 ID 的截图工具。从脚本编辑器或 osascript 以 application "Bromure Agentic Coding" 为目标。它涵盖:

  • 配置文件——list profiles、create ac profile <name> [color <c>](返回 UUID)、delete ac profile <name|uuid>,以及通过 get profile json / set profile json 进行完整文档的往返(整个配置文件;保留 ID;空白字段会并入已存储的机密)。
  • 按字段设置 — get profile setting … key … / set profile setting … key … to value …。
  • 编辑器窗口 — open profile manager、open ac profile editor、close ac profile editor、select editor category <key>,以及 get editor window id / get main window id(用于 screencapture -l 的 CGWindowID)。
  • 机器窗口——open ac session、close ac session、list ac sessions。
  • 应用状态和设置 — get app state(JSON),以及针对键 automation.enabled、automation.port、automation.bindAddress、remoteAccess.enabled、remoteAccess.port、remoteAccess.bindAddress、managed.serverURL 和 managed.acIngestURL 的 get ac app setting / set ac app setting。设置 automation.enabled 会实时切换 HTTP 服务器。

例如,打开机器的窗口:

osascript -e 'tell application "Bromure Agentic Coding" to open ac session "Web app"'

注意: 除非设置了 BROMURE_DEBUG_CLAUDE,否则 profile JSON 在传输时机密会被清除。通过 set profile setting 将 apiKey 设置为空字符串会清除该密钥,而不是保留它——这与 JSON 往返桥接的留空保留行为不同。语言区域切换刻意不可脚本化;请改为使用例如 -AppleLanguages "(fr)" 重新启动应用。

计划自动化

计划自动化是绑定到一台机器、周期性且无人值守的代理运行。自动化从自动化看板(⇧⌘A,或边栏的 自动化 部分)创建和管理,代理也能通过上述 automations MCP 服务器管理其自身机器的自动化。整个功能——触发条件、计划、串联、强制的注入检查屏幕、运行历史——在自动化中说明。本节涵盖控制平面的接口:通过 API 操作自动化、回应无人值守启动可能引发的决策提示,以及在已附加终端上的同意机制。

通过 API 控制自动化

端点用途
GET /automations列出自动化及其运行历史。
POST /automations创建或更新(upsert)一个自动化。
DELETE /automations/<id>删除一个自动化。
POST /automations/<id>/run立即触发它(不改变计划)。
POST /automations/<id>/toggle暂停或恢复它。
POST /automation-runs/<run-id>/acknowledge将失败或受阻的运行从看板的 需要关注 栏中移除。
GET /automation-runs/<run-id>/transcript已完成运行的归档对话记录(base64)。

回应待处理的提示

某些生命周期决策——基础镜像升级提议、启动检查失败的磁盘、入侵警报、因入侵而清除——通常会以本地警报显示。当 Mac 前没有人能回应时(无界面代理,或由远程富客户端请求的启动),它们会改为进入队列:出现在 GET /state 的 pendingPrompts 下(每个都有 id、profileID、title、message 和按钮标签),并用 POST /prompts/<id>/answer 回应:

SOCK="$HOME/Library/Application Support/BromureAC/control.sock"
curl --unix-socket "$SOCK" -X POST http://localhost/prompts/PROMPT_ID/answer \
  -d '{"choice":"Remind me later"}'

将提示本身的其中一个按钮标签作为 choice 传入。如果在提示超时前没有任何客户端回应,它会解析为其安全的后备选项——绝不是破坏性的选项(例如入侵警报会回退到关闭虚拟机)。如果完全没有客户端连接,则会立即采用后备选项。富客户端会把这些提示呈现为普通警报。

注: 自动化、委派和其他无人值守的启动绝不会等待提示。需要你回答的启动——被标记为遭入侵的机器,或仍在下载中的本地模型——会被拒绝,并在运行历史中附上清楚的原因(“The workspace is marked compromised — start it yourself to confirm the wipe.”)。已保存状态无法恢复的挂起机器,会以全新状态启动。

附加终端上的许可

当终端以交互方式附加到机器时——通过 vm exec -it、vm attach 或 SSH 附加——宿主机端的批准提示(凭据使用等)会显示在你的终端上,而不是客户机内。提示内容为 🔒 Bromure — approval required,附有编号选项和 Choice [1-N] (Enter or timeout = deny)。Enter、超时、EOF 或分离都表示拒绝,因此遭入侵的客户机永远无法伪造批准。之后会重绘客户机的 tmux。

调试端点 (BROMURE_DEBUG_CLAUDE)

在设置了 BROMURE_DEBUG_CLAUDE 的情况下启动应用,会解除 TCP 自动化 API 的调试闸门,让认证表格中间一行的路由也能通过 TCP 使用,包括下列调试路由(除非另有说明,否则在控制套接字上始终可用):

  • GET /debug/ui-shot?path=…&which=…——应用会把自己的窗口绘制成 PNG(无需屏幕录制权限),并返回子视图框架的转储;默认输出为 /tmp/bromure-ui-shot.png。
  • POST /debug/editor — 为截图工具驱动设置编辑器。
  • POST /detect/prompt-injection — 运行真实的检测器并返回其判定(此路由即使在控制套接字上也需要调试标志)。

此标志还会让机密原样通过 AppleScript 和 MCP 的配置文件 JSON 桥接,且是 bromure-ac mcp --debug 的虚拟机工具所必需。GET /health 会报告 debugEnabled,让你知道应用处于哪种模式。

警告: BROMURE_DEBUG_CLAUDE 会移除通常让 exec、虚拟机控制和原始配置文件机密远离环回 TCP API 的安全闸门。只在你能掌控的机器上用此标志运行应用,且绝不要与非环回的绑定地址一起使用——那会让任何能访问该端口的人获得完整的虚拟机 shell 访问、未遮蔽的机密和窗口截图。它不同于 BROMURE_AC_DEBUG(stderr 事件日志)和 BROMURE_CLI_DEBUG(CLI 套接字诊断),后两者是无害的日志开关。