目录

Insomnia 项目导读:覆盖 GraphQL/REST/gRPC/WebSocket 的开源 API 客户端

Insomnia 项目导读:覆盖 GraphQL/REST/gRPC/WebSocket 的开源 API 客户端

目标读者:后端/全栈工程师,需要在多个协议上调试、测试、设计 API 的开发者 前置知识:用过 Postman 或同类 API 客户端,对 HTTP/GraphQL/gRPC 有基本概念 预计阅读时间:11 分钟 | 难度:⭐⭐


一、核心判断

Insomnia 是一个老牌、跨协议、跨平台的开源 API 客户端,主仓库由 Kong 维护,最近一次 push 在 2026-06-25,仓库存在 10 年(2016-04-23 创建),39,703 stars、2,346 forks,TypeScript + Electron,Apache-2.0 协议。

它要解决的问题不是"再做一个 Postman",而是把**多协议(REST / GraphQL / WebSockets / SSE / gRPC)+ 多存储(Local Vault / Git Sync / Cloud Sync)+ 多形态(桌面 GUI + inso CLI)**在同一份 collection 模型上串起来,并通过 Kong 的商业化产品(Cloud Sync、Mock Server、Enterprise SSO)提供付费增值。

理解 Insomnia 的关键不在 GUI 而在 monorepo 的边界设计

  • insomnia(主包,Electron 桌面应用)
  • insomnia-inso(命令行工具,CI/CD 集成入口)
  • insomnia-api / insomnia-data(核心 API 与数据访问)
  • insomnia-scripting-environment(pre-request / post-response 脚本沙箱)
  • insomnia-testing / insomnia-smoke-test(测试基础设施)
  • insomnia-analytics(共享埋点)

桌面 GUI、inso CLI、第三方插件、未来的 SDK 共用 insomnia-apiinsomnia-data 这两层核心能力,UI 与编排逻辑彼此独立。

二、系统地图

角色
packages/insomniaElectron + React 桌面端,路由层用 react-router
packages/insomnia-insoNode.js CLI,主入口 src/cli.ts/src/index.ts,子命令 lint-specification / run-collection / export-specification / script
packages/insomnia-api不依赖 Electron 的 API 业务逻辑
packages/insomnia-data数据持久化抽象(NeDB 兼容、SQLite 后端迁移中)
packages/insomnia-scripting-environment脚本沙箱,对接 ndb / request / response / 环境变量对象
packages/insomnia-testing单元测试工具与 collection runner
packages/insomnia-smoke-testPlaywright 端到端测试
packages/insomnia-analytics桌面与 CLI 共享的埋点 SDK

注意点:仓库默认分支是 develop(不是 main),新 PR 默认开向 develop。克隆时记得 git clone -b develop

三、3 种存储后端

Insomnia 的差异化在存储层。同一份 collection 可以选择三种落地方式之一,互不强制:

存储适用人群数据落点
Local Vault个人本地开发,不上云本机加密目录,零外部依赖
Git Sync团队想用 Git 做 collection 协作任意第三方 Git 仓库(GitHub、GitLab、内部 Gitea)
Cloud Sync多设备、跨地域协作Kong 提供的云端,可选端到端加密(E2EE)

README 强调:“拥有 Insomnia 账号不强制你把数据上云”——账号只用于产品能力和云端协作,敏感 collection 仍可走 Local Vault 或 Git Sync。

另外有一个 Private Environments 特性:环境变量永远存在本地,从不进入云,与所选存储后端解耦,对企业里"环境变量不能出公司"是重要卖点。

四、协议覆盖

Insomnia 不只是 HTTP 客户端。README 明确列出的协议矩阵:

协议调试设计测试Mock
REST / HTTP✅ (OpenAPI 编辑器)
GraphQL
WebSockets
SSE(Server-Sent Events)
gRPC✅ (.proto)
任意 HTTP 兼容协议

“Any other HTTP compatible protocol"是 README 的原话,实际是通过自定义插件 + raw HTTP 调试实现。

每个协议对应一个 UI 视图:REST 是经典的 Request/Response tab,GraphQL 带 schema explorer,gRPC 通过 .proto 文件导入方法。

五、inso CLI

insomnia-inso 是把 Insomnia 能力带到 CI/CD 流水线的关键。安装与启动:

# 安装 monorepo 依赖
npm i

# 启动 watch 模式编译 inso
npm run inso-start

# 跑 inso
./packages/insomnia-inso/bin/inso -v

inso 的子命令覆盖四大场景:

子命令用途
lint-specification校验 OpenAPI/AsyncAPI 规范
run-collection在 CI 里跑 collection(也可走 run test
export-specification把 collection 导出成 spec
script执行预请求/后响应脚本,便于回归测试

典型 CI 流程:

# 1. 校验接口规范
inso lint-specification openapi.yaml

# 2. 跑回归测试
inso run test "Echo Test Suite" -w ./fixtures --env Dev --verbose

# 3. CI 失败时直接退出非零状态

Node.js 与 Electron 用的 node-libcurl 预编译版本不同,README 给出切换命令:

npm run install-libcurl-node      # inso 用
npm run install-libcurl-electron  # 桌面端用

六、插件与扩展

桌面端开放插件系统,Insomnia Plugin Hub 提供官方与社区插件。常见用途:

  • 自定义主题(insomnia-plugin-documenter
  • 文档生成(insomnia-documenter,把 collection 导出成静态文档站)
  • 第三方认证/OAuth 流程
  • 自定义渲染器(把响应体渲染为 Markdown、PlantUML 等)

packages/insomnia-scripting-environment 把脚本里能访问的对象(pm/insomnia/require/网络模块)封在沙箱里,避免插件影响主进程。

七、安全与合规

README 明确写到 Insomnia 账号体系的合规边界:

  • ISO27001
  • SOC 2 Type II
  • ISO27018
  • Gold CSA STAR

这套合规在桌面应用里属于少见配置。如果你的企业有这些合规要求,使用 Cloud Sync + 启用 E2EE 是一条相对省力的路。

八、维护状态

  • 活跃度高:最近一次 push 在 2026-06-25,2026-06-25 元数据仍在刷新。
  • 桌面端走 Electron + React;插件兼容旧 API,但 README 提示 v1.108+ 才有 .copilot-plugin 自动发现(与 Understand Anything 那条无关)。
  • inso CLI 单独发版,当前 12.5.1-alpha.0。
  • Kong 收购后定位:核心功能持续开源,Cloud Sync / 高级协作走付费;不存在"突然闭源"的风险,但要注意 license 是 Apache-2.0,第三方可商用但不可用 Insomnia 商标。

九、采用顺序与边界

场景推荐度说明
日常 REST/GraphQL 调试⭐⭐⭐⭐⭐比 Postman 更轻、原生 Git Sync 是杀手锏
gRPC 服务开发⭐⭐⭐⭐⭐比 grpcui/grpcurl 强在带 GUI + 测试
团队 API 协作(Git Sync)⭐⭐⭐⭐commit-driven review 是 Postman 做不到的
CI/CD 接口测试(inso)⭐⭐⭐⭐inso 是 Postman/Newman 的真正开源替代
Mock Server⭐⭐⭐走 Cloud Sync 才有;自托管能力有限
离线/内网企业部署⭐⭐⭐Local Vault + Git Sync 可解,但失去协作能力

对大多数个人开发者,Insomnia 比 Postman 强在三件事:原生 Git Sync、原生 GraphQL、原生 gRPC;对大多数团队,强在 CI 里直接 inso run test 跑同一份 collection。如果你的工作流以 REST 为主、只在 Postman UI 里点鼠标、不接 CI,迁移收益相对有限。