Rusty Requester icon

Rusty Requester

A native, offline, lightweight API client built with Rust and egui — a Postman alternative that doesn't chew through hundreds of MB of RAM just to send HTTP requests, run collections, and inspect responses.

One-line install (macOS & Linux)
curl -fsSL https://raw.githubusercontent.com/chud-lori/rusty-requester/main/install.sh | bash
~15 MB
binary
~30 MB
idle RAM
<100 ms
cold start
0
accounts · telemetry · webview

Why Rusty Requester?

Most API clients today are Electron apps — Chromium + Node wrapped around a form builder. That buys cross-platform consistency at the cost of hundreds of MB of RAM and a supply chain of thousands of npm packages. Rusty Requester is a single ~15 MB native binary: Rust + egui, no webview, no Node, no account.

Plenty of developers are on older / low-spec machines that can't stomach a 500 MB Electron app idling at half a gig of RAM. This is built for them first — that's what the "Rusty" name encodes.

vs Postman / Insomnia / Bruno

PostmanInsomniaBrunoRusty Requester
RuntimeElectronElectronElectronRust + egui (native)
Download size~500 MB~200 MB~200 MB~15 MB
Idle RAM400–800 MB300–500 MB200–400 MB~30 MB
Cold start2–5 s1–3 s1–2 s<100 ms
Account requiredyesyes (since 2023)nono
Telemetryyesyesoff by defaultnone
Storagecloud-firstcloud or localgit-native fileslocal + .rr files
Supply chain~1000+ npm~1000+ npm~800 npm~150 Rust crates

Bruno is the closest match in spirit (offline, file-based, OSS) — it's a good product. The differentiator is runtime: it still ships Chromium.

What's inside

Tabbed request editor

Multiple in-flight requests, drag to reorder, double-click to rename, pin tabs that survive restart.

Environment variables

Per-environment substitution in URL, headers, body, auth. Cookie jar persists across runs.

JSON / Tree / HTML / SSE views

Syntax-highlighted JSON with Postman-style fold chevrons on every { / [. Server-Sent Events streaming for LLM APIs.

Collection Runner

Run all collections or a selected folder with optional CSV/JSON data rows, live progress, saved presets, detail drilldowns, assertions, extractors, and safe reports.

Paste-as-cURL

Paste any curl command — method, headers, body, auth, cookies parse automatically. Including bash ANSI-C quoting ($'…').

Response diff

Compare current send against any previous response of the same request. Highlights additions, deletions, and value changes.

Theme preview

Switch Dark, Light, or Postman in Settings and preview the full app immediately before saving or cancelling the change.

Request and action palettes

Fuzzy-find any request across all collections, or run any action by name. Use Cmd on macOS and Ctrl on Linux/Windows.

One-click in-app update

When a new version ships, click Update now. The installer runs in the background, the app relaunches itself.

Safe sharing by default

Redacted cURL and code snippets preserve request shape while masking obvious auth, cookie, query, and body secrets. Raw copy stays explicit.

Collection Git sync

Link a collection to a folder or Git repo, keep readable .rr request files current as you edit, inspect status/diff, pull, commit, and push through local Git credentials. Private repos work without storing provider tokens.

Security & trust

An API client lives on a trust boundary — you type a URL, a stranger's server sends bytes back. The headline guarantees:

Full threat model in SECURITY.md.

Install

One command on macOS or Linux:

curl -fsSL https://raw.githubusercontent.com/chud-lori/rusty-requester/main/install.sh | bash
  • macOS — universal (Apple Silicon + Intel) DMG. Installs into /Applications, strips Gatekeeper quarantine, registers with Launch Services.
  • Linux — x86_64 glibc 2.35+ (Ubuntu 22.04 / Debian 12 / Fedora 36+ / RHEL 9). Installs to ~/.local/bin, drops a .desktop entry. No sudo.
  • Updates — the app checks a static latest.json file on GitHub Pages first, avoiding unauthenticated GitHub API rate limits.
  • Manual install — grab the DMG or tarball from the Releases page.
  • Build from sourcegit clone + cargo build --release. Requires Rust 1.73+.
  • Uninstall — same one-liner with UNINSTALL=1 prepended. Add PURGE=1 to wipe data too.