Web 版必须提供 PostgreSQL 或 MySQL 连接串,否则无法保存账号和项目;登录 Cookie 带 Secure 标记,纯 HTTP 访问需在镜像名后加 --insecure-cookie;首次启动需从日志取 setup token 创建管理员账号。
docker run -p 7380:7380 -e CYBERAPI_BRIDGE_STORE=postgres://user:password@host:5432/cyberapi vicanso/cyberapi-webREADME 未说明硬件要求;桌面版支持 macOS、Windows 和 Linux,Web 版镜像支持 linux/amd64 与 linux/arm64。
用 Rust 和 GPUI 写的原生 HTTP API 客户端,同一套代码同时提供桌面版和自托管 Web 版
基于 Rust 和 GPUI 构建的轻量级 API 调试客户端,体积小巧、启动和响应更快,适合替代笨重的 REST API 测试工具。
核心能力
- 用 GPUI 在 GPU 上渲染界面,数千个 API 的项目也能一次打开
- 支持 REST、GraphQL、gRPC、WebSocket 和 SSE 事件流
- 展示 DNS、TCP、TLS 与服务器耗时,以及实际发出的请求
- 用 {{g(api, data.token)}} 把上一个响应串进下一个请求
- 桌面端登录后离线可用,按需与自托管服务同步项目
容易踩的坑
- nightlyNightly 2026-11-08 (0f1efaf)pre-release2026-11-08 · 2026-11-08 22:43 UTC
查看更新说明
Version 0.6.2-nightly.20261108.0f1efaf, built from main at 0f1efaf522869829e3eb251ea168bf3a4523c81e on 2026-11-08 22:43 UTC.
A development build, replaced every night. The macOS app is signed and notarized; the Windows and Linux packages are not signed.
- v0.6.1version 0.6.1最新正式版2026-11-08 · 2026-11-08 12:33 UTC
0.6.1 - 2026-11-08
⛰️ Features
- (bridge) Enable zstd and gzip response compression with zstd preferred - (1306f3f)
- (directory) Support marking accounts as demo to disallow password changes - (1f28db0)
- (template) Resolve bare {{variable}} placeholders and Postman dynamic variables - (d90644d)
- (update) Stream download progress, parse release API assets, and auto-relaunch on install - (247bd27)
- Show and toggle parameter required status and recheck web session on focus - (a9f17c3)
- Set public preview from the home Edit project dialog - (3ba0d9b)
- Let a project publish its online documentation - (0fe7f94)
- Toggle line comments in request editors and strip commented JSON trailing commas - (0a97cd8)
- Refine workspace tabs, parameter rows, menus, and card source badges - (0b4d46e)
- Make the online docs page searchable and stop recursive schemas - (556b06a)
- Open a project from its outline and sync the edits - (1d247ef)
🐛 Bug Fixes
- (web) Keep wasm name section for wasm-bindgen in web-release and version asset URLs - (3bea632)
📚 Documentation
- Add live web demo link and credentials to README - (628df45)
- Record follow-up optimization plan in issue-plan.md - (523e1e8)
- Update document - (4185d88)
⚙️ Miscellaneous Tasks
- (package) Install binaryen version_132 from GitHub releases for web build - (5c54030)
- v0.6.0version 0.6.02026-11-08 · 2026-11-08 08:09 UTC
查看更新说明
0.6.0 - 2026-11-08
⛰️ Features
- (bridge) Enable zstd and gzip response compression with zstd preferred - (1306f3f)
- (directory) Support marking accounts as demo to disallow password changes - (1f28db0)
- (template) Resolve bare {{variable}} placeholders and Postman dynamic variables - (d90644d)
- Show and toggle parameter required status and recheck web session on focus - (a9f17c3)
- Set public preview from the home Edit project dialog - (3ba0d9b)
- Let a project publish its online documentation - (0fe7f94)
- Toggle line comments in request editors and strip commented JSON trailing commas - (0a97cd8)
- Refine workspace tabs, parameter rows, menus, and card source badges - (0b4d46e)
- Make the online docs page searchable and stop recursive schemas - (556b06a)
- Open a project from its outline and sync the edits - (1d247ef)
🐛 Bug Fixes
- (web) Keep wasm name section for wasm-bindgen in web-release and version asset URLs - (3bea632)
📚 Documentation
- Add live web demo link and credentials to README - (628df45)
- Record follow-up optimization plan in issue-plan.md - (523e1e8)
- Update document - (4185d88)
⚙️ Miscellaneous Tasks
- (package) Install binaryen version_132 from GitHub releases for web build - (5c54030)
- v0.5.0version 0.5.02026-11-01 · 2026-11-01 13:59 UTC
查看更新说明
0.5.0 - 2026-11-01
⛰️ Features
- (A6) Check that a response conforms to a JSON Schema - (494b9c1)
- (A7) Load test an API on the desktop - (1855b16)
- (B10) Opt-in local polling of bound sources to match API field docs - (35c7783)
- (B7) A project keeps the address it was imported from, and syncs from it again - (9e9b112)
- (B8) Import a .http file, and its environment files - (6def49d)
- (B9) Bind an import source to a folder and sync it there - (856603a)
- (D5) Folders and APIs have variables of their own - (4fcc5ab)
- (D6) An environment marked as production asks before a send that may change something - (8c27841)
- (D7) More template functions, and now() shifted - (fc7c3ab)
- (F1) Align the tab bar and tree header at 36px and disambiguate same-name tabs - (b8fc268)
- (F10) Per-parameter descriptions in query, headers and form bodies - (5857741)
- (F11) Show and edit request and response field schemas in Docs - (0f3b9aa)
- (F5) Copy or move an API or a folder to another project - (755eb2c)
- (F6) Undo a delete from the tree, and the desktop backs up every day - (714f098)
- (F7) Open a tab in a window of its own on the desktop - (cbf8a58)
- (F8) Find an API by its path in the command palette - (fbc81ae)
- (F9) Pick a file on any multipart row, and import binary fields as file:// - (dc409b8)
- (G8) Compare a project's version with now, or with the version after it - (7220ffe)
- (source) Follow the document on sync except values and secrets - (55bf382)
- (source) Add periodic auto-sync with configurable interval for bound OpenAPI sources - (bbaa963)
- (source) Highlight breaking schema changes in source sync preview - (69fea4a)
- (workspace) Keep pinned APIs out of the open tabs bar - (2d6646e)
- Show path, query, and header types from OpenAPI - (5dda0f0)
- Add OIDC sign-in, snapshot assertions, and page file picks - ([b687e54](https://github.com/vica
- v0.4.0version 0.4.02026-10-28 · 2026-10-28 14:55 UTC
查看更新说明
0.4.0 - 2026-10-28
⛰️ Features
- (A1) MCP's get_api lists an API's assertions; the docs say what assertions do - (52ebeb9)
- (A1) An Assert tab edits an API's assertions, each marked against the response shown; the status line counts how many held. The Raw HTTP tab is Wire (报文), to fit - (e62e454)
- (A1) An API's assertions on its status, headers, JSON, body, time and size, kept in its request; model 6 - (a93243f)
- (A3, A2) Run a folder or the project, once or for each row of a data file, values taken from one answer for the requests after it - (4c94709)
- (A4) Cyberapi-cli run — a project file's APIs run from a terminal or CI, as Run… runs them - (8bf2cd7)
- (B1, B2) A project or a folder exports as a Postman collection (v2.1) or an OpenAPI 3.0 document (YAML) too, from the export submenu - (3c08f44)
- (B3) Importing again into a project adds only what is new, into the folders of the same name, or also updates the APIs it has - (829eec1)
- (B3) An address in the import dialog is fetched, as the app sends, redirects followed and nothing kept - (5edd405)
- (B4) Imports bring how they sign in and their environments — Postman's and Insomnia's auth at every level, OpenAPI's security schemes as the project's, a Postman environment file and Insomnia's sub-environments as named environments; the project keeps its own auth, and an environment it has gets only what it lacks - (35a8460)
- (B5) Imports HAR archives, Hoppscotch collections and environments, Bruno .bru files and OpenCollection documents - (130b64f)
- (B6) Copy a request as Node.js axios, PHP Guzzle, Rust reqwest, Java's and C#'s HttpClient or Swift's URLSession - (05f4eac)
- (C2) Digest auth — a 401 that asks for Digest (MD5 or SHA-256, -sess, qop=auth) is answered once by sending again signed; an API, folder or project can sign in with it; cURL copies it as --digest; data model 7 - (9353619)
- (C4) OAuth tokens kept as cookies are, and an audience and a resource asked with - (06932bb)
- (C4) OAuth 2.0's client credentials and password grants, the token asked for before sending and kept in memory - (ba038e3)
- (C5) Client certificates by host (PEM, or PKCS#12 with its password) and authorities trusted besides the system's, in the desktop's settings; only the desktop's engine reads the files, never the bridge's; cURL copies them - (992d261)
- (D1) {{prompt(label, start)}} asks for a value as the request is sent: one dialog for all of them, what was typed kept by project until the app quits; an AI assistant's send that has one is refused - ([b98b1c3](https://github.com/vicanso/cyberapi/commit
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
中文 | English
https://github.com/user-attachments/assets/47018134-b823-40e1-93f5-a2047711a9c2
Features
Cyber API is a native API client for HTTP, GraphQL, gRPC and server-sent events. GPUI — the engine behind the Zed editor — draws it on the GPU, so a project with thousands of APIs opens at once.
- ⚡ Native and instant — macOS, Windows and Linux; no Electron, no web view.
- 🧩 Every kind of API — REST; GraphQL with schema completion; gRPC from server reflection or
.protofiles; WebSocket; event streams shown as they arrive. - 🔍 See what really happened — DNS, TCP, TLS and server time; the request as it went out; JSON as a tree or JSONPath; history, and the same checks from the app or
cyberapi-cliin CI. - 🔗 Less copy and paste — switch environments beside the project's name, inherit auth from a folder, chain a response with
{{g(api, data.token)}}, and follow an OpenAPI source while the values and secrets you typed stay. - 👥 Built for teams — a self-hosted web version from the same code; the desktop app signs in, works offline and syncs when you choose.
- 🤖 Ready for AI assistants — Claude Code, Cursor and other MCP clients read your APIs, secrets masked, and send them when you allow.
Sending a request, an event stream as it arrives, and syncing an OpenAPI document into the tree. GraphQL, the JSON tree, and the DNS / TCP / TLS timings are in the gallery.
Coming from Postman, Insomnia, Hoppscotch, Bruno or Swagger? Import the collection, or just paste a cURL command.
Install
Download for macOS, Windows or Linux from Releases; the app checks for new versions itself. Which file to pick, nightly builds, and moving over from the Tauri version: the install notes.
Web version (self-hosted)
Try the live demo at https://cyberapi.pingap.io/ — account cyberapi, password cyberapi123123 (demo account: read-only, password cannot be changed).
The web version is the same app compiled to WebAssembly and served by cyberapi-bridge, one binary that also keeps the accounts and projects in PostgreSQL or MySQL and sends the page's requests. It is an image on Docker Hub for linux/amd64 and linux/arm64, vicanso/cyberapi-web (latest, each version, and nightly from main), and a tarball on each release.
docker run -p 7380:7380 \
-e CYBERAPI_BRIDGE_STORE=postgres://user:password@host:5432/cyberapi \
vicanso/cyberapi-web
With no account yet the log shows a setup token; open the page and make the first administrator with it. The administrator invites everyone else. The login cookie is Secure, so put HTTPS in front of it, or add --insecure-cookie after the image name to try it over plain HTTP.
The deployment guide covers Docker Compose, the binary with systemd, HTTPS behind nginx (also under a sub-path), every option, which addresses requests may reach, accounts and invitations, signing in from the desktop, upgrades and backups.
Development
Rust (the version in rust-toolchain.toml is picked up by rustup). On Linux, first: libfontconfig1-dev libxcb-xfixes0-dev libxkbcommon-dev libxkbcommon-x11-dev libwayland-dev libssl-dev.
make dev # run the desktop app (a debug build uses its own database)
make lint # fmt check and clippy, as CI
make test # every test
make desktop-dist # package for this machine (cargo install --locked [email protected])
The web version needs the nightly toolchain with the wasm32-unknown-unknown target (picked up from cyberapi-web/rust-toolchain.toml) and wasm-pack (cargo install wasm-pack); its release form also needs wasm-opt (binaryen).
make db-up # PostgreSQL and MySQL in local containers (Apple's `container`)
make web-bundle # build the page
make bridge # http://127.0.0.1:7380/, setup token `dev`
make check-web # the wasm build's check
make web-dist # the deployment tarball; `make docker` builds the image
How the code is laid out, and why, is in docs/architecture.md; how server projects sync, in docs/server-sync.md (both in Chinese). Releases are cut with make version and a v* tag; see CHANGELOG.md.