中文 | English
Cyber API
A fast, native HTTP API client in Rust and GPUI: one codebase for the desktop and a self-hosted web version.
https://github.com/user-attachments/assets/47018134-b823-40e1-93f5-a2047711a9c2
Features · Install · All features · Web version · Deployment guide · Development
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 cargo-bundle@0.11.0)
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.