English | 简体中文 | 日本語
Nebutra

Sailor — Skip to production.

给 AI 写出来的产品铺好上线的路:认证、全球 + 中国支付、多租户、AI 网关,一条命令,零密钥本地就能跑。代码归你。以 Apache-2.0 开源。

面向 AI 编码智能体的开源 SaaS 底座(Apache-2.0):认证、银行卡与微信支付 / 支付宝收款、由 schema 生成行级安全(RLS)的多租户 Postgres、Hono API 网关——一条命令生成,空 .env 就能在本地跑起来。

每晚从零生成并启动 npm: create-sailor 许可证:Apache-2.0 GitHub stars

官网 · 文档 · 横向对比 · 讨论区 · LINUX DO

npx create-sailor@latest 的真实运行录屏:下载模板、写入项目、打印下一步

**你自己用**——生成项目,然后启动。不需要任何密钥,也不用装 Postgres(本地用 PGlite): ```bash npx create-sailor@latest my-app cd my-app && pnpm dev # 应用 :3001 · 官网 :3000 · 网关 :3002 ``` **交给你的智能体**(Claude Code、Cursor、Codex……)——装上 skill,再让它开工: ```bash npx skills add Nebutra/Nebutra-Sailor --skill sailor ``` | 开箱即有 | 代码位置 | | --- | --- | | 收款:Creem 收全球银行卡(Merchant of Record)+ 微信支付 / 支付宝;订阅、积分、权益、用量计费 | `packages/commerce/billing` | | 多租户:在 `schema.prisma` 里写一行 `/// @rls`,就会生成对应的 Postgres 策略(目前 91 条) | `packages/platform/db`、`packages/iam/tenant` | | 唯一的 API 入口:Hono 网关挂在 Next 的 `/api` 下(单进程),也可以单独部署 | `backends/gateway` | | 认证:Better Auth(含组织),外加一个 OIDC 身份提供方 | `packages/iam/auth`、`apps/idp` | | 每个领域只有一个供应商:Resend、S3 兼容存储(R2 / OSS)、QStash、Redis、pgvector 搜索、Sentry、PostHog、Turnstile。填上密钥就上线,没填就走本地降级 | `nebutra status --json` | | 智能体不容易悄悄写坏的护栏:`AGENTS.md` / `CLAUDE.md` / `DESIGN.md`,Biome 加只减不增的 lint 棘轮 | `pnpm lint` | | 设计系统:`@nebutra/ui`、W3C DTCG 设计令牌、541 个 Geist 图标、7 套品牌语言、Storybook | `packages/design` | | 国内开关:`NEBUTRA_LOCALE=cn` 让结账优先走微信支付 / 支付宝、短信优先走阿里云,项目里还带 ICP 备案页脚和 AIGC 标识组件;OSS 走同一个 S3 适配器 | `@nebutra/contracts/market` | | CLI:给智能体读的 `nebutra status`,设备码方式的 `nebutra login` | `npx nebutra` | **暂时没有的:** 供应商菜单(每个领域只有一个适配器,换供应商请按接口自己写一个);托管平台的选择(你拿到的是 Next `standalone` 构建产物和 Dockerfile);手机号优先登录(Better Auth 的手机号插件还没接上);三方合并式的模板升级;移动端和桌面端应用;以及“小”——这是一个完整的 monorepo,不是 50 个文件的入门模板。和其他脚手架的对比见 [nebutra.com/sailor/compare](https://nebutra.com/zh-Hans/sailor/compare)。 **许可证:** Apache-2.0——本仓库、所有 npm 包以及你生成的项目都是。详见下方[许可证](#许可证)。
## 技术栈 create-sailor 生成的结构:apps/web 通过 /api 调用 Hono 网关,网关访问带生成式行级安全的 Postgres;每项能力填上密钥即上线,否则本地降级或关闭 每一层只有一个答案——就是 Nebutra 生产环境在跑的那套([ADR 2026-09-24](docs/architecture/2026-09-24-sailor-convergence.md))。 | 层 | 选型 | | --- | --- | | 应用 | Next.js 16 · React 19 · TypeScript · Tailwind 4 | | API | Hono 网关(`backends/gateway`)· oRPC · Zod | | 数据 | Postgres + Prisma 7 · 生成式 RLS · pgvector · ClickHouse(用量计量)· 本地 PGlite | | 认证 | Better Auth(组织)· OIDC 身份提供方(`apps/idp`)· CASL 权限 | | 支付 | Creem + 微信支付 / 支付宝 | | 消息 | Resend · Twilio Verify + 阿里云短信 · QStash · Redis | | 存储 | 一个 S3 兼容适配器(Cloudflare R2、阿里云 OSS) | | 可观测性 | Sentry · PostHog · OpenTelemetry | | UI | `@nebutra/ui`(Radix)· W3C DTCG 设计令牌 · Geist 图标 · Storybook | | AI | Vercel AI SDK · MCP · 只有批处理 / ML 场景才用 Python FastAPI 服务 | | 工具链 | pnpm · Turborepo · Biome · Vitest · Playwright · changesets |
## 平台能力 Sailor 的每个领域**只有一个供应商**([ADR 2026-09-24](docs/architecture/2026-09-24-sailor-convergence.md)):以下每个平台包都从环境变量读取密钥,没有密钥时降级到本地实现,所以空 `.env` 也能 `pnpm dev`。每个包都内置 in-memory 实现用于测试,并通过 [tests/architecture/](tests/architecture/) 下的架构测试强制约束 TypeScript 契约。
能力包支持的 Provider(自动检测)
身份认证@nebutra/authBetter Auth(组织、Passkey)
身份提供方@nebutra/oauthOIDC (oidc-provider) · Redis 会话
权限@nebutra/permissionsCASL — RBAC + ABAC,Hono 中间件,React <Can />
多租户@nebutra/tenantAsyncLocalStorage 上下文 · Prisma RLS 桥接
验证码@nebutra/captchaCloudflare Turnstile
密钥保险库@nebutra/vaultAWS KMS 信封加密 · 本地 HKDF(开发)
审计日志@nebutra/audit追加式哈希链
缓存@nebutra/cacheRedis(Upstash REST 协议)· in-memory
限流@nebutra/rate-limit滑动窗口 · 令牌桶(Upstash)
队列@nebutra/queueQStash · in-memory
搜索@nebutra/searchPostgres — pgvector + 全文检索
存储 / 上传@nebutra/uploads一个 S3 兼容适配器(Cloudflare R2、阿里云 OSS)· 本地文件系统
通知@nebutra/notifications内置分发 — 应用内 · 邮件 · 推送 · 短信 · 即时聊天
Webhook@nebutra/webhooks内置 HMAC 签名投递,带重试
短信@nebutra/smsTwilio Verify + 阿里云
邮件@nebutra/emailResend + React Email 模板
计费@nebutra/billingCreem(全球卡组织,交易商户)+ 微信支付/支付宝 — 订阅、用量、权益
用量计量@nebutra/meteringClickHouse 实时聚合
事件总线@nebutra/event-bus多租户 Pub/Sub · Fan-out · Request-Reply
Saga 编排@nebutra/saga原生 TS 流程,自动回滚补偿
特性开关@nebutra/feature-flags数据库存储 + 环境变量覆盖
设计令牌@nebutra/design-syncW3C DTCG,仅 git
状态聚合@nebutra/statusOpenStatus · Atlassian StatusPage

## 项目结构 ``` Nebutra-Sailor/ ├── apps/ # 用户面应用 (Next.js) │ ├── landing/ # 营销官网 (nebutra.com) │ ├── web/ # SaaS 主控台 (app.nebutra.com) │ ├── studio/ # Sanity CMS (studio.nebutra.com) │ ├── sailor-docs/ # 公开产品文档 (nebutra.com/docs) │ ├── idp/ # 身份认证服务 (OAuth 2.0 / OIDC) │ ├── storybook/ # 组件 Playground │ ├── mail-preview/ # 邮件模板预览 │ ├── sleptons/ # Sleptons 配套应用 ├── packages/ # 共享 TS 库(W3b 已分类) │ ├── ai/ # 42 个 — 例如 agents、agent-runtime、ai-providers、startup-os、knowledge-rag、mcp │ ├── commerce/ # 9 个 — 例如 billing、metering、contracts、license、access-gate、waitlist │ ├── design/ # 9 个 — 例如 ui、tokens、design-tokens、brand、theme、icons、fonts │ ├── iam/ # 8 个 — auth、audit、vault、oauth、permissions、tenant、identity、captcha │ ├── integrations/ # 17 个 — 例如 queue、search、email、notifications、storage、webhooks、cache │ ├── ops/ # 5 个 — cli、create-sailor、preset、sanity、china-compliance │ └── platform/ # 21 个 — 例如 db、logger、repositories、rate-limit、feature-flags、i18n、status ├── backends/ # 无 UI 后端(按语言拆分,参考 vercel/vercel) │ ├── gateway/ # TypeScript / Hono — BFF、auth、租户、路由 │ └── python/ # FastAPI — 仅当 ML/批处理/专用库无法用 TS 时启用 │ ├── _shared/ # 跨服务原语(auth、db、queue 客户端) │ └── ai/ # LLM、Embeddings、Agent 编排 ├── infra/ # 基础设施(W2.2 按职责拆分) │ ├── iac/ # terraform + k8s + ecs + cloudflare + railway │ ├── runtime/ # nginx + docker + analytics + compose 文件 │ ├── data/ # database (RLS) + clickhouse (init + dbt) │ └── ops/ # observability + 部署脚本 ├── ops/ # 各品牌声明的平台状态,platform-reconcile 每日核对 ├── workflows/ # 事件驱动业务流(W2.3 抽离) │ ├── inngest/ # Serverless 后台任务 + 定时 │ └── pusher/ # 实时消息粘合层 ├── e2e/ # Playwright E2E 测试 (smoke / golden / sleptons) ├── tests/ # 架构不变量 + 压测 + UI 治理 └── docs/ # 架构文档 ```
## 文档 各组件均有独立 README,包含配置说明和 API 文档:
微服务 AI
公共包 UI · Tokens · Marketing · DB · Cache · Rate Limit · Event Bus · Saga · MCP · Analytics
设计文档
基础设施 Docker · Terraform · Inngest · Pusher · 可观测性

## CLI 与官网 ### 通过 npm 使用 CLI 新项目建议直接从 npm 创建,不需要先 clone 整个 monorepo 再裁剪: ```bash # 创建新的 Sailor 项目 npx create-sailor@latest npm create sailor@latest pnpm create sailor@latest bunx create-sailor@latest # 运维已有的 Sailor 项目 npx nebutra --help npm install -g nebutra ``` | 包 | 用途 | | -- | ---- | | [`create-sailor`](https://www.npmjs.com/package/create-sailor) | 创建新的 Nebutra Sailor 项目。没有任何选项要选:每次都是同一套收敛后的技术栈(智能体和 CI 用 `--json`)。 | | [`nebutra`](https://www.npmjs.com/package/nebutra) | 运维已有项目:`status`(哪些已上线、哪些还缺密钥)、`sync`、`db`、`dev`、设备码方式的 `login`。 | ### nebutra.com [`nebutra.com`](https://nebutra.com) 是 Nebutra Sailor 的公开产品入口,也是我们自己 dogfooding 这套平台的地方。后续更多产品能力、商业授权、托管能力、发布工作流和基于本仓库构建的真实案例都会在官网持续更新。 公开工具站在 [`forge.nebutra.com`](https://forge.nebutra.com) — 编解码、文本、哈希、文档与图片工具,同一套实现也可通过 API / MCP 调用。
## 快速开始 ### 环境要求
Node.jsv22+
pnpmv11.28.5+
Python3.11+ (微服务需要)
### 参与开发本仓库 要做产品,请用页面顶部的 `npx create-sailor@latest` 生成项目。克隆本仓库是为了给 Sailor 本身做贡献: ```bash # 克隆仓库 git clone https://github.com/Nebutra/Nebutra-Sailor.git cd Nebutra-Sailor # 安装依赖 pnpm install # 配置环境变量 cp .env.example .env # 生成 Prisma 客户端并启动开发服务器 pnpm db:generate && pnpm dev ``` ### 常用命令 | 命令 | 说明 | | ------------------ | ------------------------------ | | `pnpm dev` | 启动所有应用(开发模式) | | `pnpm build` | 构建所有包(自动同步品牌资产) | | `pnpm lint` | 代码检查 | | `pnpm typecheck` | 类型检查 | | `pnpm db:studio` | 打开 Prisma Studio | | `pnpm brand:sync` | 同步品牌资产到各应用 | | `pnpm brand:init` | 初始化白标品牌 | | `pnpm brand:apply` | 应用自定义品牌 |
## 白标定制 Fork 本仓库并自定义为你的品牌: ```bash # 交互式设置向导 pnpm brand:init # 将 logo 放入 brand.config/assets/ # 应用品牌 pnpm brand:apply ``` 详见 [WHITELABEL.md](WHITELABEL.md)。
## 参与贡献 我们欢迎所有贡献者!以下是参与方式: | | | | ------------ | -------------------------------------------------------------- | | **报告 Bug** | [提交 Issue](https://github.com/Nebutra/Nebutra-Sailor/issues) | | **功能建议** | 通过 Issue 提出 | | **提交 PR** | 添加功能或修复 Bug | ### 开发流程 ``` 1. Fork 本仓库 2. 创建功能分支 (git checkout -b feat/amazing-feature) 3. 提交更改 (git commit -m 'feat: 添加精彩功能') 4. 推送分支 (git push origin feat/amazing-feature) 5. 发起 Pull Request ```
## 版本与发布节奏 所有已发布的包目前都在 **0.x 版本区间**,公共 API 仍在收敛。按 [SemVer §4](https://semver.org/lang/zh-CN/#spec-item-4),主版本号为零意味着 **任何 0.x 发布都可能包含破坏性变更**——在生产环境请精确锁定版本 (`"nebutra": "0.3.1"`),不要用 caret 范围,等我们切到 1.0 之后再放开。 - 版本由 [changesets](https://github.com/changesets/changesets) 驱动。每个改动已发布包的 PR 都必须包含 `.changeset/*.md` 声明 patch/minor/major 意图——CI 会强制这个 gate。 - 每个包的 `CHANGELOG.md` 由 `changeset version` 生成并与版本号一同提交(例如 [`packages/ops/cli/CHANGELOG.md`](packages/ops/cli/CHANGELOG.md))。 - Release 工作流是**手动触发**(`workflow_dispatch`)——不会在 PR 合并后突然发版。我们会成批协调相关改动后才切版本。 - 1.0 之前的重大 API 改动(例如 CLI 命令重命名、包的目录重新分类)会先发 **release candidate**:`nebutra@0.4.0-rc.0` 落在 `next` dist-tag,浸泡 ≥ 1 周后才升为 `latest`。安装 RC:`npm i nebutra@next`。 - npm 发布会附带 **provenance attestation**(一旦 npm registry 端启用了 trusted-publishing;工作流端已经接好——见 [`release.yml`](.github/workflows/release.yml) 的 `NPM_CONFIG_PROVENANCE: "true"`)。验证已发布的 tarball:`npm view --json | jq .dist.attestations`。 我们会以发布 `1.0.0` 来标志 **API 稳定**。在那之前,请把当前的 API 理解为 "形态可生产,细节仍在演进"。
## 许可证 **Nebutra Sailor 以 [Apache License 2.0](./LICENSE) 开源。** 范围包括本仓库、 所有 npm 发布包(`@nebutra/*`、`nebutra`、`create-sailor`)、Sailor-Template 镜像, 以及 `create-sailor` 生成的每个项目(自带 Apache-2.0 `LICENSE` 和 `NOTICE`)。 用它做商业产品、闭源、作为托管服务运行、fork——全部免费,无费用、无授权密钥、 无需注册、无 Copyleft。再分发源码时,保留 `LICENSE` 和 `NOTICE`、保留原有版权 声明,并标注你改过的文件(Apache-2.0 第 4 条)。 商标是独立的:Apache-2.0 不授予商标权(第 6 条)。给自己的产品起一个无关的 名字不需要任何许可;使用 Nebutra 或 Sailor 名称需要商标授权 (见 [TRADEMARK.md](./TRADEMARK.md))。 **付费档卖的不是使用权**,而是代码许可证给不了的东西:支持承诺、响应 SLA、 赔偿、合规文件(DPA、安全材料、业务连续性承诺)以及商标授权。 Community $0 · Team $2,000/年 · Enterprise $30,000/年起——详见 [docs/legal/commercial-support.md](docs/legal/commercial-support.md)。 版权所有 2025–2026 无锡云毓智能科技有限公司。 > 2026-10-16 起改为 Apache-2.0(此前本仓库为 FSL-1.1-ALv2、npm 包为 MIT; > 2026-07-26 之前为 AGPL-3.0-only)。更早发布的版本保留其发布时的许可证。详见 > [docs/legal/license-history.md](docs/legal/license-history.md)。 授权问题请联系 **legal@nebutra.com** · [授权 FAQ](docs/legal/licensing-faq.md)
---
Nebutra

每一次上线,都是增长在场。

出品 Nebutra Intelligence · © 2024-至今 无锡云毓智能科技有限公司


官网

X

联系我们