S7 Products / ReqTone
ReqTone
Native API client — REST · GraphQL · SSE
A desktop API client for people who would rather not run a browser inside a browser. The shell is native, the networking is Rust on a real thread, and everything you build lives in one local SQLite file that belongs to you.
- Shell
- Tauri v2
- Core
- Rust + reqwest
- Storage
- SQLite
- Version
- 1.3.0
The product
Built for the loop you actually run.
Send, read, tweak, send again — a few hundred times a day. That loop is the whole job, and most API clients treat it as an afterthought behind a sync service, a login screen and a workspace invitation.
ReqTone is built around the loop and nothing else. Projects, folders and requests nest as deep as the service does. Tabs carry their project's colour so a wall of open endpoints still reads at a glance. An edited URL, header or body raises a dirty marker before you can lose it, and reopening the app brings back every tab, sub-tab and draft body exactly as you left it.
It is for developers and teams who work against APIs all day and want the tool to be fast, quiet, and entirely theirs.
- 01 Send — one path, streaming by default
- 02 Read — status, latency, size, frames as they land
- 03 Tweak — Monaco, live validation, scoped variables
- 04 Again — replay from a searchable history
Engineering
Six decisions, with the trade-offs attached.
Each one of these cost something, which is the only kind of decision worth writing down.
-
01
A native shell, not a bundled browser
ReqTone renders in the webview the operating system already provides and does its networking in Rust with
reqwest, on a real thread, instead of shipping a browser engine and a JavaScript runtime alongside the app. The cost: the UI inherits whatever webview the OS gives it — which is why both themes are tested on all three platforms rather than assumed. -
02
Your data is a file you own
Collections, project trees, environments, auth profiles and history are rows in an ordinary SQLite database in your application directory. Copy it, diff it, back it up, keep it on an encrypted volume, point the app at a different one, or open it in any SQLite browser. Export to JSON or Postman format is there too, so leaving is a file operation rather than a support ticket.
-
03
Nothing waits on the network to start
No account, no licence check, no auto-updater — and a standing rule that nothing on the startup path may block on a network call. The app opens with the cable out. What it does contact is the endpoint in your request, an OAuth token URL you configured, and your own sync server if you turn one on.
-
04
Streaming is the default path, not a mode
Every request goes down the same streaming code, so a response renders as it is written and the window stays usable while the stream is open. There is no separate event-stream request type to switch into and no second implementation to diverge — which also means a
POSTwith a JSON body streams, which is what most LLM endpoints need. -
05
Scopes resolve one way
A variable resolves request first, then project, then global. A staging token and a sandbox token can both be called
{{token}}without either surprising you, and the manager shows which values are unused and whether a value lands in params, body or headers. -
06
Getting work in and out is a file operation
Postman Collection v2.1, OpenAPI and Swagger 3.0 in JSON or YAML, raw cURL commands and
.reqtonearchives all import — bringing folder trees, headers, query params, auth profiles and bodies with them. Export runs the same way. Scripts are the known gap: pre-request and test scripts written in JavaScript do not transfer.
Features
Everything in the window.
Every subsystem below exists to take a step out of that loop, not to fill a comparison chart.
Workspace
- Projects → folders → requests, nested as deep as you like
- Project colour accents — the active tab carries its parent project's border colour
- Dirty-state dots — an edited URL, header or body raises a marker
- Session restore — every tab, sub-tab and draft body comes back
Streaming
- One send path — no streaming mode to switch into
- Live chunks and an elapsed timer — usable while the stream is open
- Inspectable frames — events, data and errors categorised as they land
- Copy any chunk straight out of the frame list
Editors
- Dual-pane GraphQL — query above, variables below, separate Monaco instances
- Operation names resolved so a variables typo never reads as a query error
- Live JSON validation — inline markers and a valid/invalid pill
- Form and multipart — key-value grids, file attachments, boundaries handled
Auth
- Bearer, API key, Basic and OAuth2 profiles
- Set once at the project, inherited by everything beneath it
- Per-endpoint override without disturbing its siblings
- Variables interpolate in auth headers too
Variables
- Three scopes — request beats project, project beats global
- Unused values flagged in the manager
- Usage shown per row — params, body or headers
- Space N promotes a selection into a scoped variable, Space V inserts one
Storage
- One
db.sqlite— collections, environments, auth, history - One-click workspace switching — separate databases, separate blast radius
- No startup network call — no licence check, no update beacon
- Portable — copy the file, or export clean JSON / Postman format
Inspection
- Status, latency and size in one pill row above the body
- Fuzzy header filter — find
set-cookiein a 40-header response - Cookies with domain, path and flags laid out
- Binary rendering and PDF preview in the response pane
History
- Every run written to a searchable drawer in a background transaction
- Replay — restore a past payload and headers in one click
- Filter by method or status to narrow to the failures that matter
- Grouped search across the whole drawer
Set-up
- Imports Postman v2.1, OpenAPI / Swagger 3.0, raw cURL,
.reqtone - An agent can write the collection — a ready-made prompt, no configuration
- Your tree, not a flat dump — controllers become folders
- Example bodies from your own DTOs rather than empty strings
Where it stands
Out on Windows. Honest about the rest.
ReqTone v1.3.0 is published for Windows 10 and 11 — free, with no account. The installer is not code-signed yet, so Windows SmartScreen warns before it runs; the download page on reqtone.com shows the two clicks past that warning and the SHA-256 to check the file against first. macOS and Linux are not published yet.
Status as published on reqtone.com
- Windows
- Published — setup .exe, not yet signed
- macOS
- Build job unverified
- Linux
- No pipeline yet
- Version
- v1.3.0
- Price
- Free — no account
- Built with
- Rust · Tauri v2 · SQLite