API Manager is an API documentation, testing, and Mock workbench built with Tauri 2 (Rust + React) and a Postman-inspired layout. Directories are collections and every API is a single JSON file, so your interface definitions can be reviewed, versioned and shared with Git right next to your code.
🌍 Trilingual UI (简体中文 / 繁體中文 / English) · 🖥️ Windows / macOS / Linux · 📦 Open source (MIT)
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- 📁 Directories as collections — pick a working directory when launching the app; the folder tree is your API collection, one group per directory
- 📄 One API per JSON file — API definition, request parameters, Mock data and examples are all plain JSON files, Git-friendly by nature
- 🕘 Versioning — save multiple snapshots per API, diff two versions side by side, and roll back to any historical version
- 🔀 VCS aware — detects
.git/.svnin the workspace and offers one-click sync / commit & push from the title bar (remotes are configured in Settings → Remote Sync) - 🔍 Search & advanced search — find APIs by name or path, or narrow down by protocol type and HTTP method
- ⭐ Favorites — right-click an API → Favorite to collect it in the Favorites view (drag-and-drop ordering, dedicated editor pane)
- 🧪 Send requests — GET / POST / PUT / DELETE / PATCH / HEAD / OPTIONS; inspect status code, latency, size, headers and body, with JSON syntax highlighting and one-click JSON / XML formatting
- 🌐 path params / Query / Headers / Body fully supported (Body modes: raw / JSON / XML / form / binary file)
- 🧩 Template variables —
{param}path templates plus{{path.id}},{{query.page}},{{method}},{{path}}and{{variable}}globals, resolved in URL / Headers / Query / Body / Mock response - 🕘 Request history — every request is recorded automatically; re-run it or refill it into the editor with one click
- 📋 Request examples — save a request + response snapshot as a named example, apply it back onto the API, or export all examples of one API as a single
.httpfile - ✏️ Batch edit — Query / Headers / Body(form) tabs accept
key: valuelines, one per line, and preserve the enabled state of matching rows
- 🔌 Create APIs over HTTP / WebSocket / Socket.IO / GraphQL / WebDAV / MCP / TCP / UDP / MQ — one workspace, one tree, one history for every protocol
- 🔁 WebSocket / Socket.IO — connect, send messages and watch the incoming frame/event log in real time
- 🧮 GraphQL — query document plus variables editor
- 🗂️ WebDAV — the WebDAV methods
PROPFIND/PROPPATCH/MKCOL/COPY/MOVE/LOCK/UNLOCK/REPORTare available next to the standard HTTP methods - 🤖 MCP — call an MCP endpoint over HTTP with the same request builder and response viewer
- 📦 TCP / UDP — packet editor with field definitions (name / type / length / value) and a built-in packet inspector
- 📨 MQ — Kafka / RabbitMQ / RocketMQ / ActiveMQ / ZeroMQ / Pulsar / NATS plus MQTT / MQTT brokers (MQTT / EMQX / HiveMQ / Mosquitto / NanoMQ / VerneMQ): keep the connection config and topic, then generate producer / consumer code (10+ languages); the tree shows the icon of the selected message broker
- 🎭 One-click local Mock server (default port 5050) — automatically scans every API with Mock enabled and serves it locally
- ⚙️ Per-API Mock config — status code, response headers, delay, and a template body
- 🧩 Template support —
{{path.id}}/{{query.page}}/{{method}}/{{path}}and global{{variable}}placeholders are resolved per request - 🚀 No backend needed — front-end work can start before the real API exists
- 📝 API docs — a built-in documentation view that derives parameters (types, nested fields, descriptions) from the request config and Mock body, supports manual overrides, and can be exported as Markdown
- ✍️ Markdown description editor (Vditor) — the API Description tab is a full Markdown editor with instant preview and a highlighted read mode; all Vditor assets are bundled locally, so it works completely offline
- 🏷️ apiDoc comments — inspect the apiDoc annotations of an API, and preview Markdown documents inside the workspace
- 📤 One-click export (28 formats) — Postman Collection, OpenAPI 3.0 (JSON and YAML — YAML is the default format), Apifox, Apipost, Apizza, Bruno, Insomnia, Hoppscotch, YApi, Eolink, NEI, Doclever, EasyDoc, Docway, io-docs, MeterSphere, Rap2, JMeter, apiDoc, Apidog, RAML, WADL, HAR, and documentation sites (Docsify / MkDocs / Markdown / HTML)
- 📥 Multi-format import (26 formats) — Postman Collection, OpenAPI / Swagger (JSON & YAML), Markdown, Apifox, Apipost, cURL and many more; which entries appear in the import menu is configurable in Settings → Import
- 🔄 Collection variables migrate automatically — importing a Postman Collection merges its top-level
variablearray into an environment set with the same name
- 📦 Object manager — manage data structures as groups + objects; properties support type, referenced object, Mock value and description; import from JSON or SQL
CREATE TABLE; generate code in multiple languages and MySQL DDL in one click - 🎲 Data generation — batch-generate test data from an object's properties (JSON / SQL / CSV) with a custom table name, record count and export directory
- 🧾 Generation logs — every run records elapsed time and file size, and can be re-generated with one click
- 🧬 Code generation — request code for 20+ languages / frameworks (curl, JavaScript, Python, Java, Go, Rust, …)
- 🌐 Global environment variables — switch dev / test / prod with one click;
{{variable}}placeholders are replaced in URL / Headers / Query / Body / Mock responses (see Global Environment Variables) - ⌨️ Global shortcuts — 9 fully rebindable shortcuts for view switching, import/export, settings and environments (see Keyboard Shortcuts); record a new key combination in Settings → Shortcuts
- 🗂️ Postman-style layout — API tree on the left (search, groups, CRUD, duplicate), request editor in the middle, response panel below, all panels resizable
- 📊 Statistics — API counts, Mock usage and request-method distribution per group / workspace
- 🖥️ System tray — closing the window minimizes to tray; the tray menu can show/hide the window, start/stop Mock, switch the display mode and language, check for updates, or quit
- 🔔 Update check — checks GitHub Releases on startup and offers a one-click jump to the download page
- ℹ️ About tab — Settings → About renders the whole tech stack (Tauri / Rust / React / TypeScript / Vite …) as shields.io badges plus the full open-source component list (name, version, jump link); badges degrade to text labels when offline
- 🎨 Themes — dark / light / follow system, applied instantly
- 🌍 Trilingual UI — 简体中文 / 繁體中文 / English, switchable at any time
All packages are built by GitHub Actions for every release and published on the Releases page.
| Platform | Packages |
|---|---|
| Windows | API.Manager_1.0.0_x64-setup.exe (NSIS) · API.Manager_1.0.0_x64_en-US.msi · API.Manager_1.0.0_x64_portable.exe (standalone, no install) |
| macOS | API.Manager_1.0.0_x64.dmg (Intel) · API.Manager_1.0.0_aarch64.dmg (Apple Silicon) |
| Linux | API.Manager_1.0.0_amd64.AppImage · API.Manager_1.0.0_amd64.deb · API.Manager-1.0.0-1.x86_64.rpm |
On Windows you can also build a single portable
api-manager.exeyourself — see Development & Build.
Defaults (all of them can be rebound in Settings → Shortcuts; on macOS use Cmd instead of Ctrl):
| Shortcut | Action |
|---|---|
| Ctrl+A | Switch to the API management view |
| Ctrl+O | Switch to the Object management view |
| Ctrl+H | Switch to the Request history view |
| Ctrl+G | Switch to the Data generation logs view |
| Ctrl+F | Switch to the Favorites view |
| Ctrl+E | Open the Export dialog (switches to the API view first) |
| Ctrl+I | Open the Import menu (switches to the API view first) |
| Ctrl+S | Open the Settings dialog (press again to close) |
| Ctrl+M | Open the Environment management dialog (press again to close) |
- Shortcuts are ignored while typing in an input / textarea / contenteditable element, and never switch the view behind an open dialog
- Recording a new shortcut: open Settings → Shortcuts, click the key button of a row and press the combination; Esc cancels, Backspace / Delete clears the binding,
↺restores the default of one row, and Restore all defaults resets everything - Conflicting bindings are flagged with a ⚠ badge; the first matching action wins
workspace/
├── __info.json # root description (collection info)
│ # fields: name, description, baseUrl, mockPort
├── __envs.json # global environment variables (optional)
│ # fields: active, environments[{name, variables[]}]
├── user-management/ # group = directory
│ ├── __info.json # group description: name, description, order
│ ├── get-user.json # one API = one JSON file
│ └── create-user.json
└── order-management/
├── __info.json
└── list-orders.json
{
"name": "获取用户信息",
"method": "GET",
"path": "/api/users/{id}",
"url": "",
"description": "根据用户 ID 获取用户信息",
"headers": [{ "key": "Authorization", "value": "Bearer xxx", "enabled": true, "description": "" }],
"query": [{ "key": "page", "value": "1", "enabled": true, "description": "" }],
"params": [{ "key": "id", "value": "1001", "enabled": true, "description": "用户 ID" }],
"body": { "mode": "json", "raw": "{ ... }", "form": [] },
"mock": {
"enabled": true,
"status": 200,
"headers": [],
"delay": 200,
"body": "{ \"code\": 0, \"data\": { \"id\": \"{{path.id}}\" } }"
},
"examples": []
}When
urlis empty, the request URL = root__info.jsonbaseUrl+path; whenurlis set, it takes priority.
{{path.id}}— path parameter (matches{id}in path){{query.page}}— Query parameter{{method}}— request method{{path}}— full path{{variable}}— global environment variable (from the active environment;path/method/path.*/query.*are reserved for system variables)
The environment dropdown in the toolbar switches the active environment; click 🌐 to open environment management, split into two dialogs:
① Environment set management: create full variable sets, reorder by drag-and-drop; right-click a set name to edit (rename) / duplicate / delete — multiple sets (e.g. dev / test / prod) can coexist. ② Variable value management: select a set, click "✏ 管理变量值" to add / edit / delete variables within it. Each variable has a current value, a default value (used automatically when the current value is empty), and a description.
- When sending requests,
{{variable}}in URL / Headers / Query / Body is replaced with the active environment's value - Mock response bodies support
{{variable}}too (applied after starting/refreshing the Mock server) - Configuration is stored in
__envs.jsonat the workspace root and can be version-controlled with Git
Example: set baseUrl in __info.json to {{baseUrl}} and the request target changes when you switch environments.
Postman import: when importing a Collection, the top-level
variablearray is merged by key into the environment set with the same name (created if missing, named after the collection; auto-activated if no environment is active) — no manual entry needed.
Settings (Ctrl+S) is organized into 12 tabs:
| Tab | What it configures |
|---|---|
| 📁 Workspace | Workspace name and path |
| 🌐 Language | 简体中文 / 繁體中文 / English |
| 🎨 Appearance | Dark / light / follow system, panel preview |
| 📦 Versions | Version snapshot toggle |
| 🛡️ Mock Server | Local Mock switch and port |
| 💻 Code Generation | Default language for generated request code |
| 📤 Export | Default export format + which formats show up in the export dialog |
| 📥 Import | Which formats show up in the import menu |
| 🧾 Default Headers | Headers automatically attached to new APIs |
| ⌨️ Shortcuts | Record / reset the global shortcuts |
| 🔄 Remote Sync | Git / SVN remote sync options |
| ℹ️ About | App version, project links, tech-stack badges and the open-source component list |
- Clicking the window close button hides the app to the tray (the app keeps running)
- Left-click the tray icon: show the window; right-click: menu
- Tray menu: show window / hide window / start·stop Mock server / check for updates / display mode / language (single submenu, check to switch) / quit
- The Mock menu item text updates with the Mock server status
- Node.js ≥ 18
- Rust (Windows MSVC toolchain)
- WebView2 (bundled with Windows 10/11)
- just (command runner)
Common Commands (justfile)
just init # install dev prerequisites (Rust toolchain + Node.js)
just dev # run in dev mode (frontend HMR + Rust dev)
just test # run all tests (Rust unit tests + frontend type check + frontend build)
just build # full package: exe + NSIS / MSI installer (optional)
just release # build the standalone executable and collect it into ./release/ (no install needed)
just exe # build only the release executable (fast)
just tsc # frontend type check
just check # Rust compile check
just icon # regenerate app icons (ultramarine theme)
just clean # clean build artifacts
just push "msg" # commit and push to remote
just # list all commandsThe justfile supports both Windows (cmd) and WSL (bash). If Chinese arguments look garbled on a Windows console, run
chcp 65001first to switch to UTF-8.
just releaseoutput:release/api-manager.exe— a standalone executable; no installation needed, copy it to any Windows machine and run (Win10/11 ships the WebView2 runtime)just build(optional) output:src-tauri/target/release/bundle/nsis/API Manager_1.0.0_x64-setup.exe— NSIS installer;bundle/msi/API Manager_1.0.0_x64_en-US.msi— MSI
just testOpen the app, pick an empty directory as the workspace, and the "Generate demo cases" prompt can create the sample groups (user management, order management, ...) with built-in Mock enabled.
| Layer | Stack |
|---|---|
| Desktop shell | |
| Frontend | |
| Backend (Rust) | |
| Data & protocols | |
| Editor & highlighting | |
| Tooling |
- Theme color: Ultramarine
#2E59A7 - Every dependency and its declared version is also listed inside the app: Settings → About
MIT © bluefrog
















