为那些你不再盯着看的依赖,提供一套早期预警系统。
在 AI 时代,你发布的 Node.js 项目多过你能维护的数量。Sentinello 会盯住其中的每一个,揭示其 npm 依赖中已知的 CVE —— 让被遗忘的项目永远不会演变成事故。
一条命令即可运行:
docker run -d \
--name sentinello \
-p 3870:3000 \
-v sentinello-data:/app/data \
-v sentinello-nvm:/root/.nvm \
-v ~/Developer:/roots/personal:ro \
ghcr.io/walkofcode/sentinello:latest无需账号。没有 SaaS。没有遥测。一个 Docker 镜像和一个 SQLite 文件 —— 你的代码和结果绝不离开你的机器。
工作原理
三个步骤。无需在你的项目中安装代理,也无需创建账号。
把它指向你的代码
将你的仓库挂载到 /roots,或在“设置 → Roots”中添加。每个目录都会在启动时被自动注册和发现。
持续扫描
后台工作进程按计划将你的依赖与已知 CVE 比对,并在需要时安装每个项目所固定的 Node 版本。
在一个队列中分诊
所有项目的每一条结果都汇入一个可按严重程度筛选的队列 —— 还可选择向 Slack、Telegram 或 Webhook 发送告警。
功能
尽在一个自托管门户 —— 没有外部服务,数据不会离开你的网络。
单一分诊队列
在一个地方查看并分诊整个组合的 CVE —— 而不是散落在十几个检出目录里的 npm audit。
按项目浏览
进入任意仓库,查看其当前发现、修复版本、扫描历史和静音设置。
按库浏览
切换到某个易受攻击的包,查看它影响的每一个项目 —— 然后一次性在所有项目中将其静音。
持续扫描
后台工作进程按计划重新扫描,新的公告会自动出现,无需你记得去检查。
按严重程度筛选
按严重程度排序和筛选结果,先处理严重项,再处理噪声。
通知
通过 Slack、Telegram 或一个普通 Webhook 接收失败与发现的告警 —— 使用你选择的语言。
公告导出
将项目或库的发现导出为 Markdown,并附带可为你的团队或 LLM 自定义的修复提示。
一个镜像,一个文件
一个 Docker 镜像和一个 SQLite 文件。没有数据库服务器,没有消息队列,没有云端依赖。
自动注册的 Roots
挂载到 /roots 下的任何内容都会在启动时被注册和扫描 —— 目录名会成为它的标签。
按项目区分的 Node
遵循每个项目的 .nvmrc,将其固定的 Node 版本安装并缓存一次。
10 种语言
门户界面、扫描原因代码和状态均已本地化为 10 种语言。
通知与 Webhook
在项目出现漏洞的那一刻就收到提醒——并触发你自己的自动化来修复它。
Slack
通过 incoming webhook 将发现结果发布到任意频道,原生支持加粗和项目符号。
Telegram
通过机器人向聊天或群组发送告警——以正确的格式呈现,而非原始标记。
Webhook
向任意端点发起 POST,把告警路由到团队已经在用的地方。
两种 Webhook 形式
选择适合你所构建内容的负载。
结构化 JSON
根目录、项目以及漏洞列表——每项包含库、版本、推荐版本和公告。可供自动修复代理直接处理。
纯文本公告
与门户中相同的公告导出内容,以文本形式呈现——可直接交给 LLM 进行分诊和修复。
按根目录或项目划分
将所有内容发送到一处,或将某个特定根目录——或单个项目——连接到它自己的频道或 Webhook。
截图
实际效果一览 —— 门户正在扫描几个演示项目。点击任意截图即可放大查看。
自托管
几分钟即可自托管。复制、粘贴、打开 localhost。生产环境请固定一个版本标签。
docker run -d \
--name sentinello \
-p 3870:3000 \
-v sentinello-data:/app/data \
-v sentinello-nvm:/root/.nvm \
-v ~/Developer:/roots/personal:ro \
ghcr.io/walkofcode/sentinello:latest挂载到 /roots 下的任何内容都会在启动时被自动注册 —— 目录名会成为它的标签 —— 因此发现和扫描会自行开始。挂载是可选的;你也可以从门户中添加 Roots。
我们为何打造它
在 AI 时代,你发布的多过你能维护的。
如今,一个人一年里就会启动、交付并放下十几个项目。营销站点、客户仪表盘、悄悄上线到生产环境的业余项目 —— 在最后一次有人查看它们之后,它们仍在长久地运行。
只需一个被遗忘、带有严重远程代码执行漏洞的依赖就足够了。最简单的站点也可能成为入侵的入口。
Sentinello 正是这条长尾的早期预警系统。它会盯住你指向它的每一个项目,让你几个月前发布的东西里出现的新 CVE 在一个地方浮现 —— 赶在它酿成灾难之前。
路线图
如今 Sentinello 已盯住你的 Node.js 依赖。这是它的发展方向 —— 以及你可以提出的需求。
更多漏洞来源
计划中在 npm 公告数据库之外 —— 接入 OSV 等更多数据源,让发现更全面、更及时。
更多集成
计划中更多通知渠道,以及把 Sentinello 接入你团队已在使用的工具的方式。
静态分析(SAST)
计划中不仅检测依赖中的已知 CVE,还能发现你自己源码中的风险模式。
密钥与许可证扫描
计划中在同一个组合、同一个队列中,标记被提交的密钥和许可证问题。
告诉我们你接下来想集成或扫描什么 —— 在 GitHub 上提交 issue,一起塑造路线图。
适合谁
Sentinello 适合所有在生产环境里拥有的东西多过自己能盯住的人 —— 独立开发者、小团队、忙于客户项目的工作室。
- 你发布的业余项目和客户站点,在上线后很久仍需保持安全。
- 你想要覆盖整个组合的视图,而不必为每个仓库接入 CI。
- 比起把代码清单交给 SaaS,你更愿意自托管。
如果你是一家大型机构,已经在成熟的流水线中接入了 Snyk 或 Dependabot,那就继续用它们 —— Sentinello 并不想取代企业级 SCA。它面向的是你那部分无人盯防的代码组合。它是开源且采用 MIT 许可证的,因此你可以确切地读到它在做什么。