Apiark
Privacy-first API platform built with Tauri v2. No login, no cloud, ~60 MB RAM. A lightweight Postman alternative.
Install / Use
/learn @berbicanes/ApiarkREADME
<p align="center"> <img src="docs/screenshots/rest-get.png" alt="ApiArk — REST GET Request" width="800" /> </p> <details> <summary><strong>More screenshots</strong></summary> <table> <tr> <td><strong>POST Request</strong></td> <td><strong>GraphQL</strong></td> </tr> <tr> <td><img src="docs/screenshots/rest-post.png" alt="POST Request" width="400" /></td> <td><img src="docs/screenshots/graphql.png" alt="GraphQL" width="400" /></td> </tr> <tr> <td><strong>WebSocket</strong></td> <td><strong>Server-Sent Events</strong></td> </tr> <tr> <td><img src="docs/screenshots/websocket.png" alt="WebSocket" width="400" /></td> <td><img src="docs/screenshots/sse.png" alt="SSE" width="400" /></td> </tr> <tr> <td><strong>PUT Request</strong></td> <td><strong>PATCH Request</strong></td> </tr> <tr> <td><img src="docs/screenshots/rest-put.png" alt="PUT Request" width="400" /></td> <td><img src="docs/screenshots/rest-patch-title.png" alt="PATCH Request" width="400" /></td> </tr> <tr> <td><strong>DELETE Request</strong></td> <td></td> </tr> <tr> <td><img src="docs/screenshots/rest-delete.png" alt="DELETE Request" width="400" /></td> <td></td> </tr> </table> </details>
Why ApiArk?
| | Postman | Bruno | Hoppscotch | ApiArk | |---|---|---|---|---| | Framework | Electron | Electron | Tauri | Tauri v2 | | RAM Usage | 300-800 MB | 150-300 MB | 50-80 MB | ~60 MB | | Startup | 10-30s | 3-8s | <2s | <2s | | Account Required | Yes | No | Optional | No | | Data Storage | Cloud | Filesystem | IndexedDB | Filesystem (YAML) | | Git-Friendly | No | Yes (.bru) | No | Yes (standard YAML) | | gRPC | Yes | Yes | No | Yes | | WebSocket | Yes | No | Yes | Yes | | SSE | Yes | No | Yes | Yes | | MQTT | No | No | No | Yes | | Mock Servers | Cloud only | No | No | Local | | Monitors | Cloud only | No | No | Local | | Plugin System | No | No | No | JS + WASM | | Proxy Capture | No | No | No | Yes | | Response Diff | No | No | No | Yes |
Download
| Platform | Download |
|----------|----------|
| Windows | .exe installer • .msi |
| macOS | Apple Silicon .dmg • Intel .dmg |
| Linux | .AppImage • .deb • .rpm |
# Homebrew (macOS)
brew tap berbicanes/apiark
brew install --cask apiark
# Scoop (Windows)
scoop bucket add apiark https://github.com/berbicanes/apiark
scoop install apiark
# APT (Debian/Ubuntu)
curl -fsSL https://berbicanes.github.io/apiark-apt/install.sh | sudo bash
sudo apt install apiark
Also available on the Microsoft Store.
</details> <details> <summary><strong>Build from source</strong></summary>Prerequisites: Node.js 22+, pnpm 10+, Rust toolchain, Tauri v2 system deps
git clone https://github.com/berbicanes/apiark.git
cd apiark
pnpm install
pnpm tauri build
</details>
Switching from Postman
- Export your Postman collection (Collection v2.1 JSON)
- Open ApiArk
Ctrl+K> "Import Collection" > select your file- Done. Your requests are now YAML files you own.
Also imports from: Insomnia, Bruno, Hoppscotch, OpenAPI 3.x, HAR, cURL.
Features
Multi-Protocol — REST, GraphQL, gRPC, WebSocket, SSE, MQTT, Socket.IO in one app. No tool has broader protocol coverage.
Local-First Storage — Every request is a .yaml file. Collections are directories. Everything is git-diffable. No proprietary formats.
Dark Mode + Themes — Dark, Light, Black/OLED themes with 8 accent colors.
TypeScript Scripting — Pre/post-request scripts with full type definitions. ark.test(), ark.expect(), ark.env.set().
Collection Runner — Run entire collections with data-driven testing (CSV/JSON), configurable iterations, JUnit/HTML reports.
Local Mock Servers — Create mock APIs from your collections. Faker.js data, latency simulation, error injection. No cloud, no usage limits.
Scheduled Monitoring — Cron-based automated testing with desktop notifications and webhook alerts. Runs locally, not on someone else's server.
API Docs Generation — Generate HTML + Markdown documentation from your collections.
OpenAPI Editor — Edit and lint OpenAPI specs with Spectral integration.
Response Diff — Compare responses side-by-side across runs.
Proxy Capture — Local intercepting HTTP/HTTPS proxy for traffic inspection and replay.
AI Assistant — Natural language to requests, auto-generate tests, OpenAI-compatible API.
Plugin System — Extend ApiArk with JavaScript or WASM plugins.
Import Everything — Postman, Insomnia, Bruno, Hoppscotch, OpenAPI, HAR, cURL. One-click migration.
Performance
Built with Tauri v2 (Rust backend + native OS webview), not Electron.
| Metric | Target | |---|---| | Binary size | ~20 MB | | RAM at idle | ~60 MB | | Cold startup | <2s | | Request send latency | <10ms overhead |
Data Format
Your data is plain YAML. No lock-in. No proprietary encoding.
# users/create-user.yaml
name: Create User
method: POST
url: "{{baseUrl}}/api/users"
headers:
Content-Type: application/json
auth:
type: bearer
token: "{{adminToken}}"
body:
type: json
content: |
{
"name": "{{userName}}",
"email": "{{userEmail}}"
}
assert:
status: 201
body.id: { type: string }
responseTime: { lt: 2000 }
tests: |
ark.test("should return created user", () => {
const body = ark.response.json();
ark.expect(body).to.have.property("id");
});
CLI
# Run a collection
apiark run ./my-collection --env production
# With data-driven testing
apiark run ./my-collection --data users.csv --reporter junit
# Import a Postman collection
apiark import postman-export.json
No Lock-In Pledge
If you decide to leave ApiArk, your data leaves with you. Every file is a standard format. Every database is open. We will never make it hard to switch away.
Community
- GitHub Discussions — Ideas, Q&A, show & tell
- GitHub Issues — Bug reports and feature requests
Translations
ApiArk UI supports internationalization via react-i18next. Currently available in English.
Help us translate ApiArk into your language! See the locales/ directory and submit a PR.
Development
# Install dependencies
pnpm install
# Run in development mode
pnpm tauri dev
# TypeScript check
pnpm -C apps/desktop exec tsc --noEmit
# Build for production
pnpm tauri build
Project Structure
apiark/
├── apps/
│ ├── desktop/ # Tauri v2 desktop app
│ │ ├── src/ # React frontend
│ │ └── src-tauri/ # Rust backend
│ ├── cli/ # CLI tool (Rust)
│ ├── mcp-server/ # MCP server for AI editors
│ └── vscode-extension/ # VS Code extension
├── packages/
│ ├── types/ # Shared TypeScript types
│ └── importer/ # Collection importers
└── docs/ # Documentation and lega
Related Skills
himalaya
332.0kCLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
node-connect
332.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
81.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Writing Hookify Rules
81.7kThis skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.
