A lightweight desktop HTTP and WebSocket client, built with Tauri 2, React 19, and TypeScript.
- HTTP requests — send requests with custom methods, headers, query params, and bodies (JSON, text, form, multipart), with full request/response history.
- WebSocket client — connect, send text/binary messages, and watch the live message log; every session is recorded with its messages.
- Saved requests — save HTTP and WebSocket requests to a flat, reorderable list for reuse.
- Environments & variables — define global and per-environment key-value variables and reference them anywhere with
{{variable}}syntax. - History — browse, inspect, search, and clear past HTTP requests and WebSocket sessions.
- Import/export — back up or share environments, variables, and saved requests as JSON.
All data (saved requests, environments, variables, history) is stored locally in a SQLite database in the app's data directory — nothing leaves your machine.
- Backend: Rust, Tauri 2, sqlx (SQLite), reqwest (HTTP), tokio-tungstenite (WebSocket)
- Frontend: React 19, TypeScript, Zustand (state), Tailwind CSS v4, CodeMirror (editors), Radix UI (primitives)
- Build tooling: Vite
- Node.js (v18+) and npm
- Rust and Cargo
- Platform dependencies for Tauri — see the Tauri prerequisites guide for your OS
Install dependencies:
npm installRun the app in development mode (starts the Vite dev server and opens the native window):
npm run tauri devType-check and build the frontend only:
npm run buildBuild the full native app bundle for your platform:
npm run tauri buildsrc/ Frontend (React + TypeScript)
components/ Shared UI components
features/ UI grouped by domain (request builder, response panel, sidebar, history, import/export)
stores/ Zustand stores (one per domain)
lib/ Types, Tauri command wrappers, variable interpolation
src-tauri/ Backend (Rust)
src/commands/ Tauri commands, one module per domain
src/models.rs Shared data models
migrations/ SQLite schema migrations
See CLAUDE.md for a deeper look at the architecture.