内容
# 无聊的电脑
**您可以交给AI使用的按需Linux电脑**
每个电脑都是一个真正的[Firecracker](https://firecracker-microvm.github.io/) microVM — 一个拥有自己的内核的完整机器 — 它在毫秒内启动,完成任务后自我销毁(或根据需要一直运行)。
**开源(Apache-2.0),使用您自己的密钥进行自我托管。**
[boringcomputers.com](https://boringcomputers.com) 是一个展示;您可以自己运行真正的实例。

> 一台机器,上面有所有东西 — 一个带有真实浏览器的实时桌面,一个带有预装编码代理的终端,以及一个您可以交给它的AI。输入 _"构建一个贪吃蛇游戏"_,它会编写、运行并为您提供一个可玩的链接。
## 您将获得
- **一台电脑** — 一个完整的Linux桌面(浏览器、终端、应用程序)通过VNC,或一个快速的无头shell。
- **预装编码代理** — `claude`,`codex`,`cursor`,`pi`,以及node,python,git和互联网。
- **驱动它的AI** — 说出您想要的。它要么使用屏幕(点击,浏览)或者编写+运行代码并为您提供一个**实时URL**。
- **文件和端口** — 拖放文件进出;通过守护进程打开任何端口。
- **复制** — 克隆一个正在运行的电脑,精确的实时状态和所有,约35毫秒。
- **存储** — 持久卷(S3支持)可以存活一个机器。
- **短暂或不** — 机器默认按TTL自我销毁;翻转 _保持活动_,一个运行直到您停止它。
## 运行您自己的
您需要一台可以运行Firecracker的机器:**带有 `/dev/kvm` 的Ubuntu 24.04 x86_64** (一台裸金属机器,或带有嵌套虚拟化的VM),您可以对其进行root-SSH。一条命令将其变成一个正在运行的boringd:
```sh
git clone https://github.com/michaelshimeles/boring-computers
cd boring-computers && npm install
# 在您的机器上设置它(安装Firecracker,构建镜像,运行boringd)
BORING_ANTHROPIC_KEY=sk-ant-... ./infra/setup.sh root@YOUR_BOX_IP
```
没有机器?如果您使用 [Latitude.sh](https://latitude.sh),[`infra/latitude/provision.sh`](infra/latitude/provision.sh) 为您创建一台。任何其他提供商也适用 — 只需将 `setup.sh` 指向它。
然后在它上面运行网站:
```sh
# apps/web/.env
PUBLIC_BORING_URL=http://YOUR_BOX_IP:8080 # 或隧道 — 参见 apps/web/.env.example
npm run dev -w web
```
`setup.sh` 选项(环境变量): `BORING_TOKEN` (需要身份验证), `BORING_S3_*` (持久卷), `BIND_LOCALHOST=1` (仅通过SSH隧道访问 — 最私密), `SKIP_DESKTOP=1` (跳过约8分钟的桌面镜像)。完整的REST + WebSocket API在 [docs](https://boringcomputers.com/docs) 中。
**从任何AI** — 一个MCP服务器([`packages/mcp`](packages/mcp))允许Claude Desktop,Cursor和其他代理启动并驱动您的电脑作为工具。还有一个小的Effect-native TypeScript客户端([`packages/sdk`](packages/sdk))。两者都从源代码运行(不在npm上)。
## 它是如何工作的
真正的硬件虚拟化隔离 — 每个机器一个内核,而不是一个共享容器。每个VM都被隔离和资源限制,从内存快照中恢复大约需要3毫秒,并根据TTL自我销毁(或运行直到您停止它,此时服务器启用 `BORING_ALLOW_PERSISTENT`)。访客在出口防火墙后面网络隔离。控制平面是 [`boringd/`](boringd) (Go);主机设置是一条命令([`infra/setup.sh`](infra/setup.sh))。
## 仓库
一个 [Turborepo](https://turbo.build/repo) monorepo(npm工作区):
```
apps/web/ 网站 — SvelteKit
boringd/ 控制平面 — Go,运行microVMs
packages/sdk/ @boring/sdk — Effect-native TypeScript客户端
packages/mcp/ @boring/mcp — MCP服务器
infra/setup.sh 一键主机设置(任何Ubuntu + KVM机器)
infra/latitude/ rootfs/kernel/image构建,网络,Caddy,Latitude帮助程序
```
```sh
npm install # 所有工作区
npm run dev # 网站
npm run build # 生产构建
npm run check # 类型检查
npm run lint # prettier + eslint
```
## 贡献和许可证
欢迎贡献 — 参见 [CONTRIBUTING.md](CONTRIBUTING.md)。在 [Apache 2.0](LICENSE) 下许可。