a terminal-based REST/GraphQL/gRPC client.
Warning
Resterm is still in early stages so bugs and undesired behaviors can be expected.
Resterm is a terminal-first client for working HTTP, GraphQL, and gRPC services. It pairs a Vim-like-style editor with a workspace explorer, response diff, history and scripting so you can iterate on requests without leaving the keyboard.
- Editor with inline syntax highlighting, search (
Ctrl+F
), and clipboard motions. - Workspace navigator that filters
.http
/.rest
files, supports recursion and keeps request lists in sync as you edit. - Inline requests and curl import for one-off calls (
Ctrl+Enter
on a URL or curl block). - Pretty/Raw/Header/Diff/History views with optional split panes and pinned comparisons.
- Variable scopes, captures, and JavaScript hooks for pre-request mutation and post-response testing.
- GraphQL helpers (
@graphql
,@variables
,@query
) and gRPC directives (@grpc
,@grpc-descriptor
, reflection, metadata). - Built-in OAuth 2.0 client plus support for basic, bearer, API key, and custom header auth.
- Latency with
@profile
to benchmark endpoints and render histograms right inside the TUI.
The full reference, including request syntax, metadata, directive tables, scripting APIs, transport settings and advanced workflows, lives in docs/resterm.md
.
Note
The install helper uses curl
and jq
. Install jq
with your package manager (brew install jq
, sudo apt install jq
, etc.).
# Detect latest tag
LATEST_TAG=$(curl -fsSL https://api.github.com/repos/unkn0wn-root/resterm/releases/latest | jq -r .tag_name)
# Download the matching binary (Darwin/Linux + amd64/arm64)
curl -fL -o resterm "https://github.com/unkn0wn-root/resterm/releases/download/${LATEST_TAG}/resterm_$(uname -s)_$(uname -m)"
# Make it executable and move it onto your PATH
chmod +x resterm
sudo install -m 0755 resterm /usr/local/bin/resterm
$latest = Invoke-RestMethod https://api.github.com/repos/unkn0wn-root/resterm/releases/latest
$asset = $latest.assets | Where-Object { $_.name -like 'resterm_Windows_*' } | Select-Object -First 1
Invoke-WebRequest -Uri $asset.browser_download_url -OutFile resterm.exe
# Optionally relocate to a directory on PATH, e.g.:
Move-Item resterm.exe "$env:USERPROFILE\bin\resterm.exe"
go install github.com/unkn0wn-root/resterm/cmd/resterm@latest
- Create or open a directory that contains
.http
/.rest
files (see_examples/
for samples). - Launch Resterm:
resterm --workspace path/to/project
(or if your .http/.rest file is in the same dir. - just typeresterm
and it will be autodiscovered). - Pick a request from the sidebar and press
Ctrl+Enter
to send it. Responses appear in the right pane. - Use
Ctrl+E
to switch environments,Ctrl+G
to inspect captured globals, andCtrl+V
/Ctrl+U
to split the response pane when comparing calls. - Move between panes with
Tab
/Shift+Tab
, jump directly withg+r
(requests),g+i
(editor),g+p
(response), and adjust the editor/response width withg+h
/g+l
.
A minimal request file:
### Status check
# @name status
GET https://httpbin.org/status/204
User-Agent: resterm
### Authenticated echo
# @name bearerEcho
# @auth bearer {{auth.token}}
GET https://httpbin.org/bearer
Accept: application/json
- Environment files:
resterm.env.json
(or legacyrest-client.env.json
) discovered in the file directory, workspace root, or current working directory. - CLI flags:
--workspace
,--file
,--env
,--env-file
,--timeout
,--insecure
,--follow
,--proxy
,--recursive
. - Config directory:
$HOME/Library/Application Support/resterm
,%APPDATA%\resterm
, or$HOME/.config/resterm
(override withRESTERM_CONFIG_DIR
).
See the documentation docs/resterm.md
for a complete breakdown of variable resolution, scripting helpers, history storage, and transport overrides.
- Command palette & keymap customisation
- Richer response tooling (streaming previews, save-to-file, diffing)
- Better scripting support (shared helpers, setup/teardown, better assertions)
- Themes & layout configuration
- Support more curl flags