Colony
Colony
Colony 是托管 Bolt 工作区的可自托管运行时。你提供工作区源码,Colony 负责运行:它路由租户路径、用 @norbital-ai/bolt 编译 checkout、构建并发布发布产物、配置并迁移租户数据库、绑定设施(Postgres、文件、AI、同步传输、身份认证),并承载工作区工作室。开发环境的引导每次启动都会收敛;生产环境运行同一个服务。
为什么运行 Colony?
每个 bolt 工作区都需要宿主。Colony 正是平台自身运行的宿主,因此你不必自行拼装托管环节:
- 单进程 —— 无需 hypervisor,也无需旁路运行时:Colony 为每次产物检查或调用创建新的工作线程,并在工作结束时终止它。Colony 宿主自身保持常驻。开发引导每次启动都会收敛,本地环境始终保持最新。
- 发布产物 —— 开发引导仅在开发环境启动时编译已配置的本地 checkout。托管环境只通过显式预览或发布操作构建并发布不可变产物;被路由的租户精确提供所选产物。
- 租户数据库 —— 本地开发与测试通过 COLONY_POSTGRES_URL 使用普通 Postgres 提供器。托管的预发布与生产环境必须使用 Neon,为每个租户配置 Neon 分支并应用迁移谱系。
- 身份认证、团队与计费 —— 包含 Cookie 会话、邮箱 OTP 登录、团队与邀请,以及 Stripe 计费。
- 运维与更新 —— Colony 直接消费 @norbital-ai/bolt 包,运行时升级以普通包发布的方式落地。在具名卷备份自动化实现之前,备份与恢复仍是运维人员的显式职责。
Colony 与自建宿主对比
同一份工作区源码在两者上都能运行。区别在于由谁负责托管的每个环节:
| 能力 | Colony(可自托管) | 基于 @norbital-ai/bolt 的自建宿主 |
|---|---|---|
| 部署与路由 | 租户矩阵持久化路由元数据;发布构建与 bundle 服务都已内置。路由不拥有工作线程。 | 你需要自行构建、部署并提供工作区,并维护这条流水线。 |
| 发布管理 | 每个工作区的不可变发布产物,由显式预览或发布操作构建并直接复用,不会再次构建。 | 你自己的构建、发布与环境管理。 |
| 回滚 | 恢复先前的发布产物;部署历史保留当前部署与回滚点。 | 由你设计、测试并执行自己的回滚。 |
| 数据库 | 本地开发与测试使用普通 Postgres;托管的预发布与生产环境使用 Neon 分支,均由 Colony 配置并迁移。 | 由你自行配置、迁移、备份并监控 Postgres。 |
| 构建 | 每次构建与发布都使用 bolt sync 与 bolt() Vite 插件。 | 构建运行在你自己的 CI 与基础设施上。 |
| 身份认证与组织 | 内置——Cookie 会话、邮箱 OTP、团队与邀请。 | 由你构建或集成自己的身份层。 |
| 计费 | 内置——一个 Stripe 订阅:基础价格加按用量的计算与 AI 用量,并在 Checkout 授予试用。 | 你自己的计量、开票与收款。 |
| Agent | 内置——与应用同 ACL 的工作区内 AI 助手。 | Bolt 提供循环与界面;由你绑定 ai 设施。同一宿主接纳每次循环迭代。 |
| 更新与运维 | Colony 直接消费 @norbital-ai/bolt 包;备份与恢复仍由运维人员管理。 | 由你自己跟踪、测试并应用 bolt 发布。 |
想要开箱即用的宿主就选 Colony;需要在 bolt 包之上拥有托管层时再自建。
Colony 表面
工作区工作室是一个 host 插件 —— 它的界面随编译后的 Bolt 工作区 shell 提供,只有像 Colony 这样的 host 才会把它暴露出来。Colony 是以下两者的托管宿主: @norbital-ai/bolt (Agent 归 Bolt 所有;Colony 把每次循环调用准入一个一次性工作线程,在同一次调用内恢复设施等待,并计量实际使用的工作线程 CPU):
- 工作区工作室 —— 用于编辑一个个人工作台、构建确切预览、请求审查与管理组织设置的浏览器 UI( 工作区工作室文档 )
- Agent —— Bolt 所有的循环、/agent 界面与对话记录;Colony 接纳每次调用,在其中恢复模型与工具等待,并计量实际使用的工作线程 CPU( Agent 文档 )
构建者通过工作区工作室发布—— 预览 与 批准并发布 —— 他们不运行自己的部署流水线。
变更如何上线
Edit My workbench — source · scripts · skills, no database
│
▼
Preview — generate/edit DDL → lint · typecheck · health · bundle
→ persistent route metadata + one Neon fork
→ one-shot workers only during inspection or invocation
│
▼
Request review — every reviewer opens that exact Preview
│
▼
Approve — apply the reviewed schema plan and fast-forward Live
│
▼
Rollback (if needed) — restore a prior release artifact from history - 编辑 —— 我的工作台中的可变源码
- 预览 —— 一个确切工作台提交、持久路由元数据与自动休眠的数据库分支;工作线程是一次性的
- 生产 —— 已部署发布加线上租户数据库
发布产物
发布产物 是发布动作产生的不可变工作区构建。一次成功的预览或发布会向 Colony\u2019s 产物库发布一份冻结 bundle,以发布 ID 与产物 ID 标识。新的提交或发布会创建新产物;它从不改写旧产物,回滚会重新部署先前的产物而非重放历史。参见 工作区工作室 的 Review 标签、工具栏控件与回滚流程。
一个发布产物包含:
server bundle—— 编译后的服务器 bundle:集合、钩子、管道、自动化、函数与 Envoy 运行时.norbital/migrations/与 schema SQL —— 增量租户迁移.norbital/dist/—— 编译后的客户端:租户应用、资源与工作区入口
预览默认只输出增量 DDL。破坏性 schema 变更可能需要显式补充 SQL 才能完成预览。批准会把经过审查的确切迁移计划应用到生产。
Colony 提供什么
- 源码存储 —— 租户 Git 仓库与个人工作树中的规范工作区源码;产物/对象存储仅保存不可变构建产物
- 构建编排 —— 开发引导在启动时加载已配置的本地 checkout。托管的预览与发布操作调用工作区锁定版本的 Bolt 工具链和
vite build,在经过验证的临时物化目录中构建并发布不可变产物,完成后删除该目录 - 发布注册表 —— 控制存储跟踪每个租户环境已部署的
releaseId及其产物artifactId),以及回滚历史与工作区源码快照 - 租户数据库 —— 本地开发与测试使用普通 Postgres;托管的预发布与生产环境每个线上租户使用一个 Neon 分支,每个活动预览最多再使用一个自动休眠的 Neon 分支
- 同步传输 —— 托管并代理 Bolt’s 的同步路由,让租户应用到达其副本、流与变更( 同步引擎 )
- 身份认证与组织 —— Bolt Cookie 会话、邮箱 OTP 与团队邀请
- 计费 —— 一个 Stripe 订阅:基础价格加按用量的计算与 AI 用量,并在 Checkout 授予试用
- 工作区工作室 —— 源码编辑、预览构建、发布请求与完整租户拓扑的浏览器 UI
Colony 不拥有什么
Colony 不导入 任何 bolt TypeScript 内部实现。它不直接内嵌租户逻辑。集合操作通过 host.invoke 代理进 bolt 运行时,在那里评估策略与 SQL。策略评估、审批门与 SQL 编译始终在 bolt 运行时内进行。
双数据库模型
- 系统库 —— 组织、路由与发布元数据、计费标识
- 租户库 —— 每个组织的 Postgres,含集合数据、策略、审批与应用记录
控制存储持有路由与发布状态。身份存在于租户运行时;集合读写通过 bolt 运行时代理进租户库。
订阅
- 基础价格 —— 通过 Checkout 订阅的一个 Stripe 订阅,首次订阅客户有配置好的试用期
- 按用量计费 —— 计算与 AI 用量通过 Stripe 计费表(billing meters)计费;部署配置列出计量价格
参见 定价 。