Pre-releasev0.1.0 is not published yet — Tauri v2, Rust and SQLite·Build status →
reqtone / why reqtone

How it is built, and what that costs

A native shell, one file you own, and a send path built for streaming. Six decisions shaped this client, and each of them cost something — here they are with the trade-offs attached.

shell Tauri v2core Rust + reqweststorage SQLite
Design decisions

Six things that shaped it

Each of these is a choice with a downside attached, which is the only kind worth writing down.

01

A native shell, not a bundled browser

ReqTone is a Tauri v2 application. It renders in the webview your operating system already provides and does its networking in Rust with reqwest, on a real thread, rather than shipping a browser engine and a JavaScript runtime alongside the app. The trade is that the UI inherits whatever webview your 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 OS application directory. You can 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 without asking us. 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

There is no account, no licence check and no auto-updater, and it is a standing rule in the project that nothing on the startup path may block on a network call. The app opens with the cable out. What it contacts is covered in full on the privacy page — the short version 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 path, 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 that behaves differently — which also means a POST with a JSON body streams, which is what most LLM endpoints need.

05

Scopes resolve one way

A variable is resolved 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 .reqtone archives all import, bringing folder trees, headers, query params, auth profiles and bodies with them. Export runs the same way, to clean JSON or Postman format. And when a service has no collection to import at all, a ready-made prompt has a coding agent read the backend and write the import file — a folder per controller, a request per route, example bodies built from your own DTOs.

Migration

Bringing an existing collection over

Three steps, and nothing is removed from wherever you exported it.

1

Export the collection

ReqTone reads Postman Collection v2.1, OpenAPI / Swagger 3.0 in JSON or YAML, raw cURL commands, and its own .reqtone archives.

2

Import it

Data → Import, pick the file. The project tree, headers, params, auth profiles and bodies come across intact.

3

Point the variables at your environments

Imported environments land as project-scoped variables. Promote anything shared across projects to global and you are done.

Note
Pre-request and test scripts written in JavaScript do not transfer — ReqTone does not run a JS sandbox. Everything else in a v2.1 collection does.
Status

Worth knowing before you get attached.

ReqTone v0.1.0 has not been released for any platform yet. The status page says exactly what builds today and what has not been built at all.

v0.1.0 · not released yet · Windows, macOS and Linux planned