关于 Purgatorium (p9m)
Purgatorium (p9m) 是供团队自托管的平台,可创建 Docker 沙盒并使用 Docker Compose 部署应用。每个沙盒拥有独立的 Docker 守护进程和应用 URL,闲置时休眠,并可在收到请求时唤醒。
主要功能
- 01创建隔离的 Docker 沙盒
- 02使用 Docker Compose 部署应用
- 03提供公开应用 URL 和 TLS 地址
- 04闲置沙盒休眠并按请求唤醒
- 05使用限定于单个沙盒的 Agent 令牌
适用场景
- 01为 Agent 提供应用部署沙盒
- 02在自管服务器上托管团队应用
- 03通过独立 URL 暴露已部署应用
MCP 相关
Purgatorium 内置 MCP 服务,Agent 可通过它操作沙盒。其工具也可通过 MCP 服务调用,或使用 HTTP 上的 JSON-RPC 直接调用。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://{purgatorium_host}/mcpclaude mcp add --transport http p9m-team-p9m https://{purgatorium_host}/mcp{"mcpServers":{"p9m-team-p9m":{"type":"http","url":"https://{purgatorium_host}/mcp"}}}在 Cursor 中打开{"servers":{"p9m-team-p9m":{"type":"http","url":"https://{purgatorium_host}/mcp"}}}在 VS Code 中打开{"mcpServers":{"p9m-team-p9m":{"type":"http","url":"https://{purgatorium_host}/mcp"}}}{"mcpServers":{"p9m-team-p9m":{"serverUrl":"https://{purgatorium_host}/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://{purgatorium_host}/mcp需要授权工具
详细介绍
Purgatorium (p9m)
说明
早期版本,尚未达到 1.0。 它可以正常运行且经过了测试(每次变更都会运行 CI,发布版本附带变更日志),但仍有不够完善之处,小版本之间也可能有破坏性变更。
为你的团队及其 AI Agent 提供可自托管的沙盒:每个沙盒都有自己的 Docker,每个应用都有一个 URL,闲置的沙盒会休眠。
可以把它看作是一个可自托管的 Vercel,用于部署团队及其 Agent 搭建的应用。目前通过 docker compose 部署;基于 Git 的构建已列入路线图。
从点击 New sandbox 到拥有自己的 Docker 和应用的公开 URL,大约只需 10 秒;休眠的沙盒可在不到 10 秒内恢复。(在已拉取所需镜像的情况下测量:新服务上的第一个沙盒还需要下载这些镜像。)
- 每个沙盒都有自己的 Docker 守护进程(还可按需使用 Portainer UI)
- 每个应用都有一个公开 URL,Postgres、Redis 和 SSH 也提供 TLS 地址
- 闲置时休眠,下一个请求到来时唤醒;删除时会归档,不会丢失任何内容
- **专为 Agent 打造:**令牌仅限于单个沙盒,提供Agent 指南、MCP 服务和 Claude Code 插件(运行
/plugin marketplace add csakaszamok/p9m,然后运行/p9m:init,即可为每个项目建立连接:Purgatorium 会在 Let your agent deploy… 下方显示该命令)
隐藏复杂性,保持简单,专注于重要的事。
Purgatorium 抽象掉基础设施的复杂性和运维开销,提供直观的用户体验,让用户专注于工作和业务目标,而不是管理底层技术。
为什么选择 Purgatorium,以及它与其他方案的比较,比较对象包括笔记本电脑、云 PaaS、共享 Docker 主机、Coolify,以及每人一台 VM · 工作原理:各个组件(Docker-in-Docker、frp、Traefik、Sablier)、沙盒生命周期,以及请求的流转路径
在脚本或 Agent 中使用,效果相同
所有演示都是真实运行,且实时进行;点击任意一项即可观看。
可以通过 API 使用 curl 操作,由 Agent 通过 MCP 服务操作,也可以手动调用 MCP 服务(通过 HTTP 传输 JSON-RPC,因此甚至可以用 curl 调用其中的工具)。
在笔记本电脑上试用
使用 Docker Desktop,或在 Linux 上使用 Docker Engine 和 compose 插件,并确保端口 80 和 443 空闲(在 Windows 上,请使用 Git Bash 或 WSL):
mkdir p9m && cd p9m
curl -fsSLO https://github.com/csakaszamok/p9m/releases/latest/download/docker-compose.yml
curl -fsSL https://github.com/csakaszamok/p9m/releases/latest/download/setup.sh | bash # prints the admin password
docker compose up -d
打开 **http://p9m.lvh.me**(`lvh.me` 及其所有子域名都指向 127.0.0.1,因此无需设置 DNS),使用 setup.sh 打印的密码以管理员身份登录,然后按 New sandbox。创建第一个沙箱时,需要一两分钟来拉取镜像;之后大约只需 10 秒。沙箱应用会在自己的 http://<name>-….lvh.me 地址打开。
应用第一次打开就要等好几秒? 在 Chrome 中,前往 Settings → Privacy and security → Security → Use secure DNS:如果使用“your current service provider”,每个新的
*.lvh.me名称都可能因解析器响应缓慢或过滤而需要等待。请关闭此选项,或选择 Cloudflare(1.1.1.1)等服务商。
要移除沙箱:先在界面中删除沙箱(每个沙箱都是独立的 compose 项目,因此执行下一步后它们仍会继续运行),然后在 p9m 目录中运行 docker compose down -v,并删除该目录。
安装
在装有 Docker Engine 和 compose 插件的 Linux 主机上,无需克隆仓库(先检查主机):
mkdir p9m && cd p9m
curl -fsSLO https://github.com/csakaszamok/p9m/releases/latest/download/docker-compose.yml
curl -fsSL https://github.com/csakaszamok/p9m/releases/latest/download/setup.sh | bash -s -- dev.example.com # .env with your domain and random secrets
docker compose up -d
然后在 http://p9m.<HOST_DOMAIN> 登录(默认地址为 http://p9m.lvh.me)。
何时选择其他方案
Purgatorium 适用于团队的应用和 Agent 部署:让它们以较低成本运行在自己的服务器上,并通过 URL 访问。其他用途则更适合使用其他工具:
- 需要扩展并持续运行的生产环境 → 云 PaaS,或在自己的服务器上使用 Coolify / Dokploy
- 来自陌生人的不可信代码 → 使用 E2B 等 microVM 沙箱或 Docker Sandboxes(在 Purgatorium 支持 Kata 运行时之前)
- 在云端 IDE 中编写代码 → Coder 或 GitHub Codespaces
- 由 SDK 驱动、运行短脚本的 Agent → E2B 或 Daytona
更多信息请参阅对比。
文档
csakaszamok.github.io/p9m:教程、安装、配置、让 Agent 进行部署、MCP、API,以及供 Agent 使用的 llms-full.txt。
安全性: 如果已安装 sysbox,沙箱将在不使用特权容器的情况下运行;如果未安装,则会回退到特权
dind,这适合彼此信任的团队,不适合运行恶意代码。在共享服务器上,请安装 sysbox 并设置ALLOWED_RUNTIMES=sysbox(详情)。
可免费使用,包括商业用途,可部署在自己的服务器上或为客户提供服务。修改后通过网络向他人提供服务?那么他们也有权根据相同许可证获取你修改后的源代码(AGPL-3.0)。基于 Purgatorium 构建的每款产品都必须注明:在 About 页面和文档中标明 Based on Purgatorium (p9m),注明已修改,并且不得使用“Purgatorium”或“p9m”这两个名称(NOTICE)。0.10.3 及更早版本采用 Apache-2.0 许可证发布。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。