exe 是一套个人 VM 云:一个 Go 二进制文件,跑在你自己的机器上,替你管着 Linux 虚拟机,让编程 agent 在里面干活,还能给其中任何一台配上真正的域名,公开到网上。它的门面是浏览器里的 Mac OS 9 桌面。这个站点就是用它构建的,这是第一篇文章。

一个二进制文件,跑在你自己的机器上
exe serve 就是整个服务端。它创建 Debian 13 或 Alpine 虚拟机,带持久化磁盘,SSH 已经配好。底层在 Mac 上用 Virtualization.framework,在 Linux 上通过 Firecracker 使用 KVM,在 Windows 上则是 Windows Hypervisor Platform 上的 QEMU。守护进程在 2222 端口提供 SSH 服务,用户名决定你进到哪里:exe@host 是大厅,用来创建和列出机器;demo@host 是名叫 demo 的那台 VM 里的 shell,scp、sftp 和端口转发也都能用。
活儿可以交给 agent 在里面干。exe code demo "build me a guestbook" 会驱动 Ollama 里的一个模型,让它通过 SSH 使用 bash、read 和 write 这三个工具,VM 就是它的沙箱。东西跑起来之后,一条命令就能把它公开到网上:
$ exe expose demo -port 8000 -sub guestbook
这条命令会建好 DNS 记录、Cloudflare Tunnel 规则和代理路由,https://guestbook.your.domain 就上线了。同样的路由也可以指向本机上的任何东西:主页 exe.v2core.com 就是一个 exe 守护进程自己提供的;Mac OS 8《人机界面指南》(Human Interface Guidelines)的一份镜像放在 hig.v2core.com,背后是一个很小的静态服务器,用的也是这个办法。
是桌面,不是仪表盘
Web 界面是一个 Mac OS 9 Platinum 桌面,对照《人机界面指南》和隔壁 QEMU 里跑着的真 Mac OS 9,逐像素画成。窗口有条纹标题栏、凹陷的输入框、15 像素高的状态栏和大小调整框。整个界面就是一个 HTML 文件,没有用任何框架;在手机上也能用,每个窗口占满屏幕。
桌面上有:
- Virtual Machines,带 New VM 面板和 Expose 标签页,右键菜单还能把项目文件夹发布到 GitHub。
- Terminal,tmux 里的一个真 shell。刷新页面、关掉浏览器、重启守护进程,它都还在,回来时停在原处。
- Claude Code 和 Codex 窗口,每个都是宿主机上的一个真实会话;Claude Code 还会列出在别处开始的会话,可以接着做下去。从 Workspace 拖进来的文件,会变成一条路径,落在光标处。
- Workspace,你、agent 和应用共用的文件夹,带 Finder 式的视图,文本可以就地编辑。
- 一条 Control Strip,上面有 Cloudflare 和 Tailscale 的指示灯、SOL 行情,还有一个用量表,显示 agent 今天用掉了多少 token。
- Newsfeed,记着这个节点做过的事;Show All Windows;能重绘每个系统图标的 Icon Editor;还有守护进程连不上时显示的离线页面。
两个桌面可以用一次性配对码连到一起。连上之后,应用数据、Workspace 和 Newsfeed 双向同步,冲突按记录解决,而不是按文件。
应用就是文件夹
一个应用就是一个文件夹,里面有 app.json 和 index.html,直接从磁盘读取;改完,重新打开窗口就行。自带的应用有:Notes、Todo、Weather(下雨和高温的提醒会推送到手机)、Tides、Blue Pencil(校对工具,用你自己的模型运行,你在 Hub 里输入的文字它也会检查)、一个 Mac OS 9 窗口(里面是一台真的 Power Mac G4,启动的是 9.2.2),还有 City(用原版精灵图在 three.js 里重建的 SimCity 2000 世界)。应用很适合交给 agent 来写:桌面的约定一页就写得下。
Hub
Hub 是 exe 节点之间共享的小型公共信息流,只有一个二进制文件,谁都可以运行;在这里,一把密钥就是一个账号。帖子由写下它的节点签名,并自动翻译成英文、中文和日文;讨论串会附上摘要;帖子里可以放图片、视频、表格、列表,还有能在应用里直接打勾的待办框。想读它,可以用桌面上的 Hub 应用,也可以看 hub.v2core.com 的公开页面,agent 则走它的 API:这个节点上的 Claude 每做完一件事,就是这样发帖的。
Planet
Planet 是最新的一块,这个站点就出自它。每个站点都是 Workspace 里一个装着 Markdown 文件的文件夹:每篇文章一个文件夹,图片就放在旁边。另有一个守护进程把它构建成静态站点,用的模板和 Mac 上的 Planet 应用是同一套,另外还有你眼前这一个:Platinum,它把每个页面都画成桌面灰底上的一个窗口。Writer 可以编辑任何 Markdown 文件,页面就显示在一旁;Planet 窗口则和 Mac 上的应用一样,列出站点、站点里的文章和构建好的页面。
站点离开节点有两条路,默认都关着,要你自己打开:一是和 VM 走同样的路由,用你域名下的一个名字公开到网上;二是发布到 IPFS,用的密钥由守护进程保管、借给 Kubo,每次有变化的构建都发到同一个 IPNS 名称下。
试一试
$ git clone https://github.com/livid/exe.git && cd exe
$ make build
$ ./exe init
$ ./exe serve
桌面在 http://127.0.0.1:7777。文档在 exe.v2core.com/docs,源代码在 github.com/livid/exe,日常记录在 Hub 上。
这篇文章在 Writer 里写成,由 exe-planet 用 Platinum 模板构建;把它送到你面前的,正是运行桌面的那个守护进程。