开源 · 模块化单体

给编码 Agent 用的多租户 SaaS 底座

内核不含业务代码。业务以模块挂上,按租户开关。人与 Cursor / Claude 走同一条 Spec → gen → check 闭环——不是又一份脚手架。

快速开始GitHub 仓库

本地启动
三条命令跑起来
开箱即用
CMS · 认证 · 计费
一种部署
单进程 Docker Compose

不是那三种东西

不是脚手架喷发器Agent 写的代码进仓库、过闸门。没有「生成完就扔掉」的一次性骨架。
不是微服务框架编译期组装、一个进程。租户、官网、工作台按 Host 分流,而不是再拆一套服务。
不是低代码平台没有天花板:模块是 TypeScript 包,契约与测试都是代码。闸门强制边界,不代替写代码。

人与 Agent 共用一条闭环

AGENTS.md 与 Skills 是产品的一部分。新模块填 MODULE.spec,改现有模块填 FEATURE.spec;留空则 Agent 必须追问,禁止瞎猜。

  1. 01

    填 Spec

    声明 id、权限、模型、触达面。空白就是问题,不是发挥空间。

  2. 02

    生成并装配

    骨架与注册表一次写对,避免漏挂路由或租户守卫。

  3. 03

    机器闸门

    契约、依赖、文案校验拦住越权与漏装配;CI 跑同一套。

每个 SaaS 都要重写的那一层,已经写好

按租户开关:未开通不挂路由、不进侧栏、不产生数据。

站点官网 CMS 与 SSR、文档库、站点会员、自定义域名。主域就是产品站,租户站按 Host 绑定。
平台认证与 JWT、多租户与套餐配额、PBAC、审计、通知、任务中心。
运营错误日志、慢查询与慢请求、平台计费与站点收款。可观测性不是事后再接。

案例 · Yestino

全球科技热点与实时趋势追踪。同一进程、按 Host 分流、自定义域名、events 资讯模块——不是演示站,是线上产品。

打开 yestino.com

这套底座在线上扛着

  • 多租户 CMS 与 SSR
  • 自定义域名
  • events 资讯模块
  • 单进程,按 Host 分流