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
Download for Windows Visit reqtone.com All S7 products Available · v1.3.0 for Windows · free

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.

the loop

  1. 01 Send — one path, streaming by default
  2. 02 Read — status, latency, size, frames as they land
  3. 03 Tweak — Monaco, live validation, scoped variables
  4. 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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 POST with a JSON body streams, which is what most LLM endpoints need.

  5. 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.

  6. 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 .reqtone archives 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-cookie in 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