| Response Viewer |
|---|
![]() |
A free, local, offline-first desktop HTTP client — a Postman alternative that runs entirely on your machine with no accounts, no cloud sync, and no telemetry. Free forever. No paid tiers, no paywalls, no subscriptions — ever. Your data never leaves your computer.
Built with Tauri v2, React 18, TypeScript, and Rust.
- Send HTTP requests — GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
- Request configuration — query params, headers, auth, body (JSON, plain text, XML, HTML, form-urlencoded, multipart form-data)
- Authentication — Bearer token, Basic auth, API key (header or query), OAuth2
- Environment variables — define variable sets, switch between them, interpolate
{{variables}}in URLs and values - Collections — save and organise requests, drag-and-drop reorder, export to JSON
- History — automatic request history (last 200 entries)
- Response viewer — status, duration, size, syntax-highlighted body (JSON, HTML, XML), headers table
- Copy response — one-click copy button on the response panel
- Resizable panels — drag the divider between request and response panels to resize
- Multi-tab — multiple open requests with independent state
- Right-click disabled — no browser DevTools exposed to end users
| Desktop shell | Tauri v2 |
| Frontend | React 18 + TypeScript |
| Build tool | Vite |
| Styling | Tailwind CSS v3 |
| State | Zustand v5 |
| Code editor | Monaco Editor |
| HTTP engine | Rust + reqwest |
- Node.js 18+
- Rust (stable) — install via rustup.rs
- Tauri CLI prerequisites — see Tauri v2 prerequisites for your OS
xcode-select --installsudo apt install libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf# Clone the repo
git clone https://github.com/Suhird/courier-http.git
cd courier-http
# Install frontend dependencies
npm installnpm run tauri devThis starts Vite for the frontend and compiles the Rust backend, then opens the app window. Hot-reload is active for the frontend; Rust changes require a full recompile.
npm run tauri buildOutput is in src-tauri/target/release/bundle/.
npm test349 tests covering utility functions, Zustand stores, hooks, and React components.
Test files are excluded from the production TypeScript build via
tsconfig.json. Run tests withnpm test; they use a separate vitest config.
cd src-tauri
cargo test58 tests covering model serialization, storage layer, command logic, and HTTP execution (uses wiremock for mock HTTP server tests — all 5 auth types covered).
courier-http/
├── index.html # app entry point
├── src/
│ ├── types/index.ts # shared TypeScript types
│ ├── lib/ # interpolate, tauri wrappers, utils
│ ├── hooks/ # useRequestSend
│ ├── store/ # Zustand stores (requests, collections, environments, history)
│ ├── components/
│ │ ├── shared/ # Badge, KeyValueTable, MonacoEditor
│ │ ├── layout/ # TabBar, StatusBar
│ │ ├── request/ # UrlBar, RequestBuilder and all request tabs
│ │ ├── response/ # ResponseViewer and sub-components
│ │ └── sidebar/ # Collections, History, Environments, SaveRequestModal
│ └── App.tsx
├── src-tauri/
│ ├── src/
│ │ ├── models/ # Rust data models (serde)
│ │ ├── storage/ # filesystem read/write (atomic)
│ │ ├── commands/ # Tauri command handlers
│ │ └── lib.rs # app entry, command registration
│ └── Cargo.toml
└── src/__tests__/ # frontend test suite
CourierHTTP is 100% free — no paid plans, no feature gates, no subscriptions, and that will never change.
All data stays on your machine. The app makes no network connections except the HTTP requests you explicitly send. There is no telemetry, no analytics, no crash reporting, no account system, and no cloud sync. Nothing you type, save, or send is ever transmitted anywhere other than the endpoints you choose.
All data is stored locally on disk. No cloud, no accounts, no telemetry.
| Data | macOS | Windows |
|---|---|---|
| Collections | ~/Library/Application Support/courier-http/collections/ |
%APPDATA%\courier-http\collections\ |
| Environments | ~/Library/Application Support/courier-http/environments/ |
%APPDATA%\courier-http\environments\ |
| History | ~/Library/Application Support/courier-http/history.json |
%APPDATA%\courier-http\history.json |
Pre-built installers for macOS (Apple Silicon + Intel) and Windows are available on the GitHub Releases page.
If the app is not code-signed, macOS Gatekeeper will block it on first open. Run once to clear the quarantine flag:
xattr -cr /Applications/CourierHTTP.app