Bromure Agentic Coding

让你的 AI 智能体
尽情撒野——又安全。

在一台只共享你选定文件夹的 Linux 虚拟机中,运行 Claude Code、Codex 以及下一个编码智能体。它们下载、安装或弄坏的任何东西,都留在虚拟机里。

立即下载 Bromure Agentic CodingApple Silicon(M1 或更新)· 免费且开源
Bromure Agentic Coding running Claude in an isolated VM with the Trace Inspector

编码智能体如今 正在你的笔记本上运行。

Claude Code 和 Codex 会拉取依赖、运行脚本、起服务,并执行模型认为有用的任何东西。这正是它们的价值所在。但它们运行的每一次 npm install、每一次 pip install、每一次 curl | bash,都落在你的宿主操作系统上——紧挨着你的 SSH 密钥、密码管理器、iCloud,以及你工作的其他一切。

一个抢注式的依赖、一份被投毒的脚本,或一个犯糊涂的智能体,都可以悄悄外传一个令牌、植入一个 launch agent,或抹掉一个目录。智能体本身并无恶意;它只是对你真正的机器拥有等同于 root 的访问权。这是没人愿意承担的爆炸半径。

把智能体 搬进虚拟机。

Bromure Agentic Coding 给每位开发者一台 Linux 虚拟机,只共享他们选定的文件夹。Claude 或 Codex 跑在虚拟机里。它们透过共享挂载看到你的仓库;看不到你的家目录、钥匙串,也看不到磁盘的其他部分。

智能体需要什么就装什么——系统包、语言工具链、半残的实验性构建。虚拟机是智能体的工作间,不是你的笔记本。出问题时,你重置虚拟机重新开始。宿主机始终干净如初。

共享文件夹在两个方向上实时挂载,所以你照样在 macOS 的 Cursor、VS Code 或 Xcode 里编辑,与此同时智能体在虚拟机里干活。你在编辑器里保存,智能体立刻看到改动;智能体改写了文件,你的编辑器也立刻反应过来——同样的文件、两边视图、无需同步、不用来回 checkout。

~/projects/my-app
$ bromure code --share ./
→ launching VM (clone of base image)…
→ mounting ~/projects/my-app at /workspace
→ proxy ready · ssh-agent forwarded · tracer on
→ ready in 3.2s
vm:/workspace
$ claude
→ npm install ✓
→ git push ✓ (token swapped at proxy)
→ host ~/.ssh: not visible · keys never left Mac
凭证代发

智能体照常工作, 密钥留在家里。

一个没法 push 到 GitHub、拉不到私有仓库、SSH 不进构建服务器的智能体,没有用处。简单粗暴的做法是把你的长期令牌和 SSH 密钥扔进虚拟机。然后下一份抢注式依赖把它们读走,连带你的整个组织一起带走。

Bromure 把这套逻辑反了过来。虚拟机内部的配置出厂自带桩值——假的 bearer 令牌、假的 API 密钥——对 git、gh、模型提供商的 CLI、私有仓库以及任何期待 Authorization 头的工具来说都看起来是真的。一份运行在你 Mac 上的代理坐在每一条出虚拟机的连接前,识别出桩值,在出网时把真密钥换上,再把请求转发出去。真值从不写入虚拟机能读取的文件,从不待在虚拟机能 dump 的环境变量里,从不进到虚拟机能扫描的内存中。

进去是桩,出去是真令牌

在宿主机上一次性配置 GitHub、模型提供商、npm、AWS、内部仓库——智能体需要的任意凭证。虚拟机拿到能满足每个工具期望的桩值。当请求越过 hypervisor 边界时,宿主侧代理把真正的 bearer 替换上去。一个抓环境变量、读 `~/.netrc` 或 dump 内存的包,带走的只是占位符。

ssh-agent 转发,永不暴露

ssh-agent 跑在你的 Mac 上,密钥保存在 macOS 钥匙串里。Bromure 只把 agent 套接字转发进虚拟机——这正是 OpenSSH 一直以来设计的方式。在虚拟机里,ssh 和 git 透明可用——但磁盘上没有密钥文件、内存里没有 passphrase,没有任何被攻陷的依赖可偷的东西。会话一关,通道随之关闭。

一个被投毒的包可以抹掉虚拟机的文件系统。但它带不走你的 GitHub 组织。它无法横向跳进你的构建基础设施。它无法掏空你的 AWS 账户。爆炸半径就是这台虚拟机,而虚拟机本就是用后即弃的。

审批门控

在智能体与你的密钥之间, 隔上一次点击。

桩值替换只讲了故事的一半。真正的令牌仍然存在某处——只是从虚拟机内部挪到了你的 Mac 上、代理身后。当威胁是虚拟机里的恶意软件时,这是一个巨大的进步。但当威胁是你笔记本本身上的恶意软件时——一个被植入后门的更新、一个被攻陷的浏览器扩展、一个已经获得本地代码执行的进程——这进步就要小一些。任何能跟代理对话的东西,原则上都可以向它索要一个真令牌。

所以 Bromure 在你标记为敏感的凭证前面,加了一个明确的人在环节。当某个东西——智能体、你敲下的某个 CLI、或者一个你没在意的进程——试图通过代理使用其中一个令牌时,Bromure 会在你的 Mac 上弹出来,报出凭证名称和目的地,然后问你。你可以批准五分钟、一小时、本次会话的剩余时间,或者只放行这一次。窗口一过,又重新锁上。

限时批准

批准时由你来挑 TTL。一次 push,五分钟。一段聚精会神的发版会话,一小时。真正吓人的那些——一次生产部署、一次密钥轮换、一次破坏性迁移——只放行一次。授权自动过期,所以你不会让 `aws sso login` 一整天都大门洞开。

本地恶意软件失去筹码

如果你 Mac 上一个进程试图 push 到你的容器仓库、对 GitHub 冒充你,或者掏空一个云账户——它做不到。凭证不在磁盘上等着被读,而握着它们的代理只在屏幕前那个人点下批准时才放行一个。在你的笔记本上拿到代码执行,已经不足以对生产采取行动。

长期令牌变成一个个访问的瞬间。即使你的笔记本被从头到脚攻陷,攻击者要做任何要紧的事,也仍然得先过你这一关。

为什么在 Bromure 虚拟机里跑智能体

受限的爆炸半径

一个行为不端的包、一份被投毒的 post-install 脚本,或者一个决定 rm -rf 的智能体,能碰到的只是虚拟机内部的东西。你的家目录、密钥和 iCloud,待在 hypervisor 边界的另一侧。

里面没有真凭证

虚拟机出厂自带桩令牌。当请求离开虚拟机时,宿主侧代理在出网处把它换成真正的 bearer;ssh-agent 跑在你的 Mac 上,只把套接字转发进去。一个抓环境变量或读磁盘的包,找到的只是占位符,而不是真密钥。

每一步都被记录

Bromure 在会话运行时即时追踪整条会话——prompt、模型响应、工具调用、shell 命令、文件编辑。事后打开追踪记录、搜索、交给评审者、附到 PR 上。可追溯性是免费的。

在 macOS 上编辑,并行于虚拟机

共享文件夹在两个方向上实时。继续在宿主机上用 Cursor、VS Code 或 Xcode——智能体在虚拟机里改写一份文件,你的编辑器立刻接手;你在编辑器里保存,智能体也立刻看见。同样的文件、两边视图、无需同步。

会话追踪器

看清楚 智能体到底做了什么。

一个编码智能体每次会话会做出数百个决定。其中大多数你根本不会看到——它们藏在你没仔细读的工具调用里、被压缩成一行总结,或发生在你只是扫了一眼的两条消息之间。在出问题之前,这都没什么。或者,等到你需要向评审者、同事或审计员解释模型实际改了什么的时候。

Bromure 在会话运行时记录整条会话:每一条 prompt、每一次模型响应、每一次工具调用、每一条 shell 命令、每一个被写入的文件。事后打开追踪记录、搜索、交给别人、附到 PR 上。智能体跑得快;记录有耐心。

Bromure Trace Inspector showing every API call made by the agent

完整对话捕获

Prompt、补全、工具调用、shell 命令、文件编辑、退出码——在会话运行时实时捕获。没有任何一条是从滚屏里反推出来的;关掉终端也不会丢失任何东西。

可回放、可评审、可归因

翻看智能体的推理与动作,精确知道装了什么、为什么装,把「就是它能跑了」或「就是它崩了」变成你可以拿给另一个人看的东西。

智能体跑通时,追踪记录是你的纸面凭证。跑不通时,它就是你的 bug 报告。

自带 你喜欢的智能体。

Bromure Agentic Coding 不替换你的工具——它给工具一个安全运行的去处。虚拟机预装了大多数智能体期望的运行时,其余的你自己装。

Claude Code

Anthropic 的终端编码智能体在虚拟机里原生运行。认证一次,就让它去拉依赖、跑测试、对照你的共享仓库做重构。

Codex

OpenAI 的编码智能体的安装方式与在任何 Linux 主机上一样——只不过这台 Linux 主机看不到你的家目录。

其他任何工具

Aider、OpenHands、自研内部智能体——只要能在 Linux 上运行,就能在 Bromure 里运行。虚拟机就是一台 Linux 机器;安全感来自它运行的位置。

工作原理

1. 选好文件夹

创建虚拟机时,你选择 Mac 上哪些文件夹可以挂载——通常就是你正在做的那个项目。这就是智能体对你文件系统的全部视角。

2. 启动虚拟机

Bromure 用 Apple Virtualization.framework 在几秒钟内启动一台 Linux 虚拟机。像连任何远程机器一样打开终端进去。

3. 运行智能体

在虚拟机里安装 Claude Code 或 Codex。把它指向共享文件夹。让它干活——装包、跑脚本、起进程——全程不碰你的宿主机。

4. 想重置就重置

当虚拟机的状态不再有用,丢掉它。几秒钟内重新开始。代码留在宿主机上;烂摊子留在虚拟机里。

VM vs container

为什么不直接用容器?

四个理由。

共享内核

容器和宿主机共享一个内核。一个足够坏的包、一个内核 bug,或一个错配的挂载,边界就消失了。容器是为隔离工作负载而生的,不是为了防御你正在它里面跑着的东西。

不可变,而非可交互

容器镜像构建一次就被冻结。一个会装包、改配置、整天重建工具的可交互编码智能体,全程都在和这种模型对着干。每一次改动都想触发一次重建。为了让工作流能用而挂进去的可写家目录,反而成了镜像本应保护的部分里最薄弱的一块。

在 macOS 上其实跑不起来

Mac 上的 Docker 其实并没有真正在跑容器——它把容器跑在 Docker Desktop 自带的一台隐藏 Linux 虚拟机里。你已经在为虚拟机的成本买单,只是没看见而已。Bromure 砍掉了中间这一层:一台虚拟机,可见、可配置、归你所有。

没法把密钥挡在外面

要让容器能跑 git、gh、kubectl、aws 或 npm,你最后总会把 ~/.ssh、~/.kube/config、~/.aws/credentials、~/.npmrc 以及你的 GitHub token 挂进去——你的真实密钥就在智能体能读到的文件系统里。Bromure 把这套反过来。虚拟机里只有占位符,但对每个工具来说看起来都像真凭证;宿主端的代理识别它们,并在请求离开虚拟机的那一刻,于线路上把它们替换成真正的 GitHub token、kubeconfig bearer、AWS 凭证或 registry 密码。SSH 私钥留在 macOS 钥匙串里——只把 ssh-agent 的 socket 转发进去。容器若想做到同样的效果,得把整套信任模型从头再造一遍。

虚拟机有自己的内核、自己的内存、自己的文件系统。你想装什么就装什么,跟在任何 Linux 主机上一样,整天都能这么干。Apple 的 Virtualization.framework 把成本压到足够低,没理由还退而求其次。

给你的智能体 一间真正的工作间。

一台虚拟机。彻底隔离。想装什么装什么。Bromure Agentic Coding 免费且开源。

立即下载 Bromure Agentic CodingApple Silicon(M1 或更新)· 免费且开源