Modern API testing workspace inspired by Bruno. Fast native desktop app with file-based collections, git integration, and offline-first design.
- File-based collections stored as OpenCollection YAML on disk
- Multi-workspace support with embedded and external collections
- Full git integration with staging, commits, branches, push/pull, stash, and conflict resolution
- Environment variables with
{{variable}}template syntax and secret masking - Multi-tab editor with split panes, auto-save, and keyboard-driven navigation
- Authentication support for Basic, Bearer, API Key, OAuth 2.0, and AWS SigV4
- Load testing with concurrent request execution and percentile latency stats
- Monaco editor for JSON/XML/text bodies with syntax highlighting and theme sync
- Contract Lock — attach SLA/API contracts to collections or folders, track changes, and preview PDFs natively
- Light/dark theme with system preference detection
- Cross-platform native desktop app (Linux, macOS, Windows)
- No cloud, no account — your data stays on your machine
Most API clients are Electron apps — they ship a full copy of Chromium and a Node.js runtime with every install. That baseline alone costs 300–500 MB of RAM before you open a single request.
Rocket is built differently:
| Rocket | Postman / Insomnia | |
|---|---|---|
| Runtime | Rust + OS WebView | Electron (Chromium + Node.js) |
| Idle memory | No bundled Chromium | ~400–600 MB RSS |
| Install size | ~16 MB | ~300–500 MB |
| Background sync | None | Cloud sync, telemetry, updater |
| Startup | Fast (native binary) | Slow (JS engine warmup) |
How:
- Tauri uses the OS WebView — WebKitGTK on Linux, WKWebView on macOS, WebView2 on Windows. No bundled Chromium.
- Rust backend — no garbage collector, no JVM, no Node runtime. Services are small structs wired via trait objects and dropped when not needed.
- No cloud, no polling — there is no background process phoning home. Every I/O operation is triggered by user action, against local files only.
Rocket uses the OS WebView (WebKitGTK on Linux, WKWebView on macOS, WebView2 on Windows) rather than bundling Chromium. Total memory depends on what WebKit processes the OS already has running.
# Install frontend dependencies
yarn install
# Full Tauri dev mode (launches desktop window + Vite HMR)
yarn tauri dev
# Frontend only (Vite server at http://localhost:1420)
yarn dev# Production build
yarn tauri build
# Frontend only
yarn build# TypeScript
yarn tsc --noEmit
# Rust
cargo check
# Frontend tests
yarn test
# Rust tests
cargo testFrontend (React 19) --> Tauri IPC --> Rust Services --> Filesystem (~/.rocket-api/)
| Crate | Role |
|---|---|
rocket-shared |
Common types, errors, events |
rocket-collection |
Collection/folder/request domain model + contract types |
rocket-environment |
Environment variables and {{var}} resolution |
rocket-history |
Request execution history |
rocket-workspace |
Workspace domain model |
rocket-http |
HTTP executor, auth schemes, load testing |
rocket-git |
Git operations via libgit2 |
rocket-app |
Orchestration services |
rocket-infra |
Filesystem implementations |
rocket-import |
Bruno collection importer |
src-tauri |
Tauri commands and app initialization |
| Technology | Purpose |
|---|---|
| React 19 + TypeScript 5.8 | UI framework |
| Zustand 5.0 | State management |
| shadcn/ui + Radix UI | Component library |
| TailwindCSS 4.2 | Styling |
| Monaco Editor | Code editing |
| Lucide React | Icons |
~/.rocket-api/
workspaces.yml # Workspace registry
My Workspace/
workspace.yml # Workspace config
collections/
my-api/
opencollection.yml # Collection settings
get-users.yml # Request files
auth/
login.yml
.rocket/
contracts/
<id>.yml # Contract definition (git-tracked)
attachments/
<id>/
document.pdf # Attached files (max 2 MB each)
environments/
production.yml
staging.yml
history/
cookies/
Contract Lock lets you attach formal agreements (SLAs, API contracts) to a collection or any folder within it, track changes over time, and surface violations directly in your workspace.
- Attach one or more reference documents (PDF, DOCX, TXT, Markdown, PNG/JPG) up to 2 MB each
- Scope a contract to the entire collection, a specific folder, or a single request
- Track provider, consumer, project, version, effective date, and optional expiry
- Automatic status badges: Active, Expiring soon (≤ 30 days), Expired
- Changelog records API drift against the locked baseline
- Click a
.pdfattachment to open it in a native preview window - Attachment files are copied into
.rocket/contracts/attachments/<id>/inside the collection — fully git-portable, deleted automatically when the contract is removed
Contracts are stored as YAML files under .rocket/contracts/ inside the collection directory. Because the .rocket/ folder lives alongside your request files, it is committed alongside them in any git workflow.
src/ # React frontend
components/
collections/ # Collection sidebar tree
editor/ # Monaco wrapper and themes
contract/ # Contract Lock UI
git/ # Git UI panel
layout/ # App shell, sidebar, status bar
panes/ # Tab system and editor groups
request/ # Request editor, params, auth, body
response/ # Response viewer
workspace/ # Workspace overview, environments
hooks/ # Custom React hooks
lib/ # Utilities, Tauri API bridge
stores/ # Zustand stores
types/ # TypeScript type definitions
crates/ # Rust backend
rocket-shared/
rocket-collection/
rocket-environment/
rocket-history/
rocket-workspace/
rocket-http/
rocket-git/
rocket-app/
rocket-infra/
src-tauri/ # Tauri shell
src/
commands/ # IPC command handlers
lib.rs # App initialization
docs/
manual/ # User manual with screenshots
| Shortcut | Action |
|---|---|
Cmd/Ctrl+Enter |
Send request |
Cmd/Ctrl+S |
Save request / Save to Collection |
Cmd/Ctrl+W |
Close tab |
Cmd/Ctrl+Tab |
Next tab |
Cmd/Ctrl+Shift+Tab |
Previous tab |
Cmd/Ctrl+1-9 |
Jump to tab by index |
- User Manual — how to use the app
- Architecture — codebase guide for contributors
- Crate-level docs in each
crates/*/CLAUDE.md
MIT
