Vayu - 集 REST/GraphQL 客户端与原生负载测试器于一体的桌面应用
像使用 Postman 一样构建请求。以每秒数万次的请求速率对同一端点进行负载测试 - 由原生 C++ 引擎驱动。完全本地化。无需账户,无云端,无配额限制。
Vayu 是一款面向 Windows、macOS 和 Linux 的免费开源桌面应用,它将 API 团队通常分开的两个工具合二为一:一个具备集合、环境和脚本功能的完整 REST + GraphQL 请求构建器,以及一个由 C++20 引擎驱动的高吞吐量负载测试器。对于来自 Postman 或 Insomnia 的用户来说,请求界面会显得熟悉 - 但在底层,原生事件循环实现了 Electron + Node.js 客户端无法达到的负载测试吞吐量,且所有字节均保留在您的机器上。
实际效果
负载测试仪表盘:并发数 64 时达到 52,738 req/s,共 738,406 个请求,成功率 100%。吞吐量、延迟百分位和错误计数器从 C++ 引擎实时流式传输,同时 UI 保持响应,每次运行都保留在历史记录侧边栏中。
支持集合、分层环境和 Postman 兼容脚本的 REST 和 GraphQL 请求构建器。
Vayu 为何存在
大多数 API 团队会并行使用两款工具。在开发阶段,使用 Postman、Bruno 或 Insomnia 来构建和发送请求。到了进行负载测试时,则使用 k6、JMeter 或 wrk。两套 UI,两种配置格式,两个需要同步端点的地方——每次想要确认变更在真实流量下是否依然有效时,都需要进行上下文切换。
Vayu 将该工作流整合到一个应用中。只需构建一次请求,让负载测试器指向同一端点,并在引擎驱动流量时观看实时仪表盘——无需第二份配置,无需独立的 CLI,也无需离开工作区。由于整个技术栈都在您的机器上运行,无需账户、无遥测数据、无云端往返,因此它也能在企业防火墙后以及 SaaS 客户端根本无法使用的隔离网络中正常工作。
性能
HTTP 核心是一个用 C++20 编写的多工作线程 libcurl 事件循环,通过本地 HTTP 边车与 Electron UI 隔离,确保渲染永远不会被请求负载阻塞。实际上,这使得单台笔记本电脑能够跑满千兆链路,同时仪表盘仍能逐帧流式传输指标——远超基于 Node.js 的 Electron 工具在同一硬件上所能达到的水平。
证明 - 与 wrk 和 vegeta 的正面对决。 相同的模拟服务器,相同的机器,相同的会话,匹配的并发数(64),从独立引擎测量:
| 客户端 | req/s | 对比 wrk |
|---|---|---|
| Vayu | 56,880 | 105% |
| wrk | 54,280 | 100% |
| vegeta | 51,847 | 96% |
Vayu 与 wrk 持平并略微超过 vegeta - 三者都收敛到相同的约 57k 系统吞吐量上限,且在该上限下机器仍有 79% 的空闲,因此是目标端饱和,而非客户端。完整的方法论、并发扫描、workers A/B 测试、调优说明以及单命令复现脚本见 引擎基准测试。
并且来自 UI,而不仅仅是 CLI。 从应用自身的负载测试面板启动的 60 秒运行,持续达到 51,922 req/s - 3,115,391 个请求,零错误,零丢失,p50 1.20 ms / p99 1.52 ms,图表全程实时流式传输:

与 k6、JMeter 和 Postman 集合运行器的更广泛比较正在进行中 - 请跟踪 问题看板 以了解其进展。
Vayu 与 Postman、Bruno、k6、JMeter 的对比
| 功能 | Vayu | Bruno | k6 | Apache JMeter | Postman |
|---|---|---|---|---|---|
| 执行引擎 | C++ (Native) | Node.js / Electron | Go | Java (JVM) | Node.js / Electron |
| API 客户端 + 负载测试 | 两者兼备,单一应用 | 仅客户端 | 仅负载测试 | 仅负载测试 | 仅客户端 |
| 负载测试吞吐量 | 数万 RPS | 受 JS 运行时限制 | 高 (Go 协程) | 中等 (线程密集) | 需使用独立工具 |
| 脚本支持 | QuickJS (pm.* 语法) | JavaScript (ES6) | JavaScript (ES6) | Groovy / BeanShell | JavaScript |
| UI | 原生桌面应用 | 原生桌面应用 | 仅 CLI | Java Swing (过时) | 原生桌面应用 |
| UI 响应性 | 高 (sidecar 架构) | 良好 | N/A | 高负载下卡顿 | 大型集合时变慢 |
| 内存占用 | 低 (直接内存) | 低–中等 | 低–中等 | 高 (内存密集) | 高 (Electron + Chrome) |
| 隐私 / 离线 | 100% 本地,无需账户 | 100% 本地 | 本地 / 云端混合 | 100% 本地 | 重度依赖云端 (可选本地) |
| Postman 集合导入 | 支持 (v2.0 + v2.1) | 支持 (通过转换器) | 有限支持 | 不支持 | 原生支持 |
| OpenAPI 导入 | 支持 (2.0 + 3.0) | 不支持 | 不支持 | 不支持 | 支持 |
| 开源 | 是 (双重许可) | 是 (MIT) | 是 (AGPL v3) | 是 (Apache 2.0) | 部分 |
来自 Postman、Insomnia 或 OpenAPI 规范?
迁移只需几秒。将现有导出文件拖入 Vayu,工作区即会重建为原生集合 - 文件夹、变量、认证以及请求前/后脚本均可完整迁移,此外还包括来自 Insomnia 工作区的环境,或 Postman 单独导出的环境文件。
- Postman - Collection v2.0 和 v2.1 JSON 导出,以及环境和全局变量导出
- Insomnia - v4 导出
- OpenAPI / Swagger - 3.0 和 2.0 规范(JSON 或 YAML);从规范生成可直接使用的集合
功能
- 原生负载测试 - 多工作进程 C++ 事件循环可维持数万 req/s,并通过 SSE 实时流式传输指标;无需额外工具
- REST + GraphQL 请求构建器 - GET、POST、PUT、PATCH、DELETE 等;支持 JSON、form-data、URL-encoded、原始文本及 GraphQL 请求体
- 集合与文件夹层级 - 支持嵌套集合,每个集合可配置变量、认证及前置/后置脚本
- 一键导入 - 支持 Postman v2.0/v2.1、Postman 环境变量与全局变量、Insomnia v4、OpenAPI 3.0、Swagger 2.0
- 分层环境 - 变量解析遵循 全局 → 集合链 → 当前环境 的流程,并支持在任意层级进行覆盖
- 符合预期的认证方式 - Bearer token、Basic auth、API key(header 或 query)以及 OAuth 2.0(client credentials、password 以及带 PKCE 的交互式 authorization code);在引擎端解析并沿集合树向下继承
- 兼容 Postman 的测试脚本 - 基于 QuickJS 引擎实现
pm.test()、pm.expect()、pm.environment.set()、pm.response.*- 大多数 Postman 脚本可无需修改直接运行 - 可组合脚本 - 前置/后置请求脚本沿层级向下组合(根 → 文件夹 → 请求)
- 默认私有 - 100% 离线执行;无遥测、无账户、无云同步
- 跨平台 - 提供 Windows (x64)、macOS (universal) 和 Linux (AppImage) 的原生安装程序
下载
Windows
使用 winget 安装:
winget install athrvk.Vayu
或直接下载安装程序:
- Download Vayu-x64.exe
- Run the installer and follow the setup wizard
- Launch Vayu from the Start menu
macOS
bash -c "$(curl -fsSL https://athrvk.github.io/vayu/install.sh)"
将最新版本安装到 /Applications。您只需输入一次密码。Vayu 以未签名形式分发 - 安装程序会对其进行临时签名并清除隔离属性,使其打开时不会显示“已损坏的应用”警告。
要更新,请再次运行相同的命令。 这也是 Vayu 在 macOS 上自我更新的方式 - 该应用会检查新版本并为您提供此命令,而不是自行修补,因为临时签名是 macOS 无法验证的。更新会就地替换应用,并保留您的收藏、历史记录和设置。如果 Vayu 正在运行,它会建议先退出(之后会重新打开);如果您已经使用最新版本,则不会执行任何操作。添加 --force 以强制重新安装,或设置 VAYU_ASSUME_YES=1 以跳过提示。
如果您自己的 ~/Applications 文件夹中已有 Vayu(从 .dmg 中拖出),更新将安装到该位置,而不是在 /Applications 中安装第二个副本。
要固定特定版本:
VAYU_VERSION=0.2.1 bash -c "$(curl -fsSL https://athrvk.github.io/vayu/install.sh)"
要卸载:
bash -c "$(curl -fsSL https://athrvk.github.io/vayu/install.sh)" -- --uninstall
添加 --purge 以同时删除设置和数据。或者将 Vayu.app 从 /Applications 拖到废纸篓。
Linux
bash -c "$(curl -fsSL https://athrvk.github.io/vayu/install.sh)"
与 macOS 相同的命令。在 Linux 上,它会将 AppImage 安装到 ~/.local/share/vayu 并注册一个启动器条目,因此 Vayu 会出现在你的应用程序菜单中,而不是作为可执行文件位于 ~/Downloads 中。无需 root - 它写入的所有内容都在你的主目录下。如果 ~/.local/bin 在你的 PATH 上,你还会获得一个 vayu 命令。
重新运行以更新;添加 -- --uninstall(以及用于你的数据的 --purge)以将其移除。仅限 x86_64,与发布的构建版本一致。
或者,你可以自己从 最新 release(Vayu-<version>-x86_64.AppImage)下载 AppImage,chmod +x 它并运行它 - 它是自包含的,无论哪种方式都没有向导,也不需要 root。
如果 Vayu 无法启动,你的系统可能缺少 AppImages 所需的 FUSE 2:在 Debian/Ubuntu 上运行
sudo apt install libfuse2,或者使用APPIMAGE_EXTRACT_AND_RUN=1运行一次。
架构
Vayu 作为两个协作的进程运行:一个轻量级的 Electron UI(即 Manager)和一个原生 C++ 守护进程(即 Engine),后者作为本地 sidecar 与其并列。Manager 负责工作区——包括集合、环境、请求构建器和仪表盘——而 Engine 负责底层通信:连接池、事件循环、脚本执行和指标。这种分离设计使得在引擎全速压测端点时,UI 仍能保持流畅;渲染器无需与请求负载共享线程。
┌────────────────────┐ ┌────────────────────┐
│ THE MANAGER │ local │ THE ENGINE │
│ (Electron/React) │◄───────►│ (C++) │
│ │ sidecar │ │
│ • Request Builder │ │ • Event Loop │
│ • Collections │ │ • QuickJS Runtime │
│ • Load Dashboard │ │ • Multi-Worker │
└────────────────────┘ └────────────────────┘
参见 架构文档 以获取完整的进程模型和 IPC 详情。
技术栈
| 层级 | 技术 |
|---|---|
| UI | Electron + React 19 + TypeScript 5 |
| UI 状态 | Zustand |
| 服务器状态 | TanStack Query |
| 样式 | Tailwind CSS v4 |
| HTTP 引擎 | C++20 + libcurl |
| 脚本 | QuickJS (嵌入式 JS 引擎) |
| 数据库 | SQLite via sqlite_orm |
| 构建 | CMake + vcpkg (C++), pnpm + Vite (应用) |
文档
完整文档:athrvk.github.io/vayu - 可搜索,并在每次推送到 master 时从 docs/ 构建。
| 文档 | 描述 |
|---|---|
| 架构 | Sidecar 模式、进程模型、IPC |
| 引擎 API 参考 | C++ 引擎的完整 HTTP API |
| 引擎基准测试 | 与 wrk 和 vegeta 的 RPS 正面对比 - 方法论、结果和调优 |
| 数据库模式 | SQLite 表定义和 JSON 结构 |
| 变量解析 | {{variables}} 如何在运行时解析 |
| 从源码构建 | 先决条件、CMake 预设、所有构建命令 |
| 贡献指南 | 开发环境设置、代码风格、PR 流程 |
贡献
欢迎贡献 - 从 bug 报告和功能想法到文档和代码。贡献指南 涵盖了本地开发环境搭建、代码风格、测试要求、PR 流程以及发布/版本控制工作流。
FAQ
Vayu 是免费的吗? 是的。Vayu 完全免费且开源。引擎采用 AGPL-3.0 许可;UI 采用 Apache-2.0 许可。没有付费层级,没有订阅,也没有功能限制。
Vayu 与 Bruno 或 Insomnia 有何不同? 那些是优秀的 API 客户端,但它们不进行负载测试——为此,你需要将 k6 或 JMeter 作为第二工具。Vayu 在一个应用中同时完成这两项任务:构建请求,然后使用原生 C++ 引擎对同一端点进行负载测试。
负载测试有多快? C++ 引擎在现代硬件上可维持每秒数万个请求;请参阅 Performance 部分。具体数字取决于你的机器、目标服务器和网络状况。
Vayu 可以离线使用吗? 是的。所有执行均在本地进行。Vayu 在正常使用期间从不联系外部服务器——没有遥测,没有许可证检查,没有云同步。
Vayu 需要账户吗? 不需要。下载、安装后即可立即使用,无需注册。
我可以导入我的 Postman 集合吗? 是的——支持 Postman Collection v2.0 和 v2.1 JSON 导出,包括文件夹、集合变量、身份验证设置以及请求前/后脚本。Postman 环境位于单独的导出文件中;将其放入即可作为 Vayu 环境导入。Postman 全局变量导出以相同方式导入,合并到 Vayu 的全局作用域中。Insomnia 工作区环境也可以导入。
我可以导入 OpenAPI / Swagger 规范吗? 可以。放入一个 OpenAPI 3.0 或 Swagger 2.0 文件(JSON 或 YAML),Vayu 将根据规范生成一个可直接使用的集合。
Vayu 支持哪种脚本语法?
QuickJS 实现了 pm.* API(pm.test()、pm.expect()、pm.environment.get/set()、pm.response.*),因此大多数 Postman 测试脚本无需修改即可运行。
Vayu 支持哪些平台? Windows (x64)、macOS(Apple Silicon + Intel 通用)以及 Linux (x86_64 AppImage)。
许可证
Vayu 采用双重许可:
- 引擎 (
/engine) - GNU AGPL v3: 如果您修改了引擎并将其作为网络服务提供,您必须公开您的更改。 - UI (
/app) - Apache 2.0: 宽松许可;可在任何项目中自由使用。
您可以免费将 Vayu 用于任何目的,无论是商业用途还是个人用途。