cyberapi

vicansoApache-2.0活跃维护

基于 Rust 和 GPUI 构建的轻量级 API 调试客户端,体积小巧、启动和响应更快,适合替代笨重的 REST API 测试工具。

API tool based on gpui, it is smaller and faster.

v0.6.1发布于 2026-11-08 12:33 UTC435star +11 / 7 天38fork同步于 2026-11-10 11:59 UTC

怎么上手

由 README 提炼,执行前请确认
docker run -p 7380:7380 -e CYBERAPI_BRIDGE_STORE=postgres://user:password@host:5432/cyberapi vicanso/cyberapi-web
硬件要求按 README 说明

README 未说明硬件要求;桌面版支持 macOS、Windows 和 Linux,Web 版镜像支持 linux/amd64 与 linux/arm64。

有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

用 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)}} 把上一个响应串进下一个请求
  • 桌面端登录后离线可用,按需与自托管服务同步项目

容易踩的坑

Web 版必须提供 PostgreSQL 或 MySQL 连接串,否则无法保存账号和项目;登录 Cookie 带 Secure 标记,纯 HTTP 访问需在镜像名后加 --insecure-cookie;首次启动需从日志取 setup token 创建管理员账号。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.6.1
  1. 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.

  2. 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)
  3. 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)
  4. 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
  5. 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

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    中文 | 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 .proto files; 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-cli in 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.

    📖 Every feature in detail →

    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.

    License

    Apache-2.0