Quiver
A file-based REST client where requests remain readable, scriptable, and version controlled.
API requests are source code in all but name. They change with the software, benefit from review, and ought to survive the application that created them. I built Quiver because I wanted a capable REST client without an opaque database or proprietary export format.
Every request is a small KDL file. Collections are directories, folders are directories, and environments are ordinary TOML. The whole workspace can be searched, diffed, reviewed, and committed with the application it exercises.
Resolve at the moment of use
Request fields are not limited to static strings. URLs, headers, and bodies can contain expressions resolved when the request is sent: environment values, variables, timestamps, UUIDs, encoded or hashed data, secrets, and values extracted from earlier responses.
Dependencies between requests form a graph. Quiver detects cycles, sorts requests into execution order, and caches the responses needed farther down the chain. Secrets can come from process environment variables or Proton Pass without being written into a collection.
The KDL parser and serializer perform a canonical round trip. A request opened and saved by the GUI or terminal interface does not produce unrelated formatting churn in Git.
Lua for the cases templates cannot cover
Sandboxed Lua hooks can run before a request and after its response. They can alter the outgoing request, inspect response data, and carry values such as access tokens into later calls.
The sandbox excludes filesystem, operating-system, package-loading, and debug facilities. Collections remain expressive without granting downloaded scripts access to the host machine.
One engine, several ways to work
Quiver is arranged around a headless Rust engine. The command line, Ratatui interface, and egui desktop application are thin shells over the same behaviour.
The CLI works well in scripts and CI. The keyboard-driven TUI keeps browsing, editing, environments, sending, and responses inside a terminal. The desktop application adds request tabs, a structured JSON editor with expression completion, response tree and JSONPath views, a Lua console, and environment and variable editors.
Quiver also imports OpenAPI and Bruno collections. Everything compiles into a single binary per platform.
The underlying experiment is simple: a developer tool can have a rich interface while its lasting value remains in understandable files owned by the user.
Want to try it?
It is not yet available for public consumption, but watch this space.