Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Terminal client for .http/.rest files with HTTP, GraphQL and gRPC support, workflows, profiling and response diffs.

License

jabari-max/resterm

 
 

Repository files navigation

Resterm

a terminal-based REST/GraphQL/gRPC client.

Screenshot of resterm TUI base

Split panes with response diffing side-by-side

Screenshot of resterm TUI fulleditor

Split panes response and profiler

Screenshot of resterm profiler

Workflow run with step-by-step validation

Screenshot of resterm workflow run

Resterm is a terminal-first client for working with HTTP, GraphQL, and gRPC services. No cloud sync, no signups, no heavy desktop app. Simple, yet feature rich, terminal client for .http/.rest files. It pairs a Vim-like-style editor with a workspace explorer, response diff, history, profiler and scripting so you can iterate on requests without leaving the keyboard.

Highlights

  • Editor with inline syntax highlighting, search (Ctrl+F), clipboard motions, and inline metadata completions (type @ for contextual hints).
  • 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, JavaScript hooks, and multi-step workflows with per-step expectations and overrides.
  • 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.
  • Multi-step workflows let you compose several named requests into one workflow (@workflow + @step), override per-step variables, and review aggregated results in History.

Installation

Quick Install

Linux / macOS:

curl -fsSL https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.sh | bash

or with wget:

wget -qO- https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.sh | bash

Windows (PowerShell):

iwr -useb https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.ps1 | iex

These scripts will automatically detect your architecture, download the latest release, and install the binary.

Manual Installation

Note

The manual install helper uses curl and jq. Install jq with your package manager (brew install jq, sudo apt install jq, etc.).

Linux / macOS

# 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

Windows (PowerShell)

$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"

From source

go install github.com/unkn0wn-root/resterm/cmd/resterm@latest

Quick Start

  1. Create or open a directory that contains .http / .rest files (see _examples/ for samples). If you want to start right away without any .http - just open resterm...
  2. ... or launch Resterm: resterm --workspace path/to/project (or if your .http/.rest file is in the same dir. - just type resterm and it will be autodiscovered).
  3. Pick a request from the sidebar and press Ctrl+Enter to send it. Responses appear in the right pane. If you don't have any .http file, just switch to the editor (Tab) and type https://<some_url_dot_something> and press Ctrl+Enter.
  4. Move between panes with Tab / Shift+Tab, jump directly with g+r (requests), g+i (editor), g+p (response), and adjust the focused pane layout with g+h / g+l (sidebar width when the left pane is focused, editor/response split otherwise).
  5. Use Ctrl+E to switch environments, Ctrl+G to inspect captured globals, and Ctrl+V / Ctrl+U to split the response pane when comparing calls.

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

Inline curl import

Drop a curl command into the editor and press Ctrl+Enter anywhere inside to turn it into a structured request. Resterm understands common flags (-X, -H, --data*, --json, --url, --user, --compressed, -F/--form, etc.), merges repeated data segments, and respects multipart uploads.

sudo curl \
  --compressed \
  --url "https://httpbin.org/post?source=resterm&case=multipart" \
  --request POST \
  -H "Accept: application/json" \
  -H "X-Client: resterm-dev" \
  --user resterm:test123 \
  -F [email protected] \
  --form-string memo='Testing resterm inline curl
with multiline value' \
  --form-string meta='{"env":"test","attempt":1}'

If you copied the command from a shell, prefixes like sudo or $ are ignored automatically. Resterm loads the file attachment, preserves multiline form fields, and applies compression/auth headers without extra tweaks.

Workflows

  • Combine existing requests with @workflow + @step blocks to build repeatable scenarios that run inside the TUI.
  • Set per-step assertions (expect.status, expect.statuscode) and pass data between steps via vars.request.* and vars.workflow.* namespaces.
  • View progress in the sidebar, and inspect the aggregated summary in History after the run.
  • See docs/resterm.md for the full reference and _examples/workflows.http for a runnable sample workflow.

Quick Configuration Overview

  • Environment files: resterm.env.json (or legacy rest-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 with RESTERM_CONFIG_DIR).

Documentation

The full reference, including request syntax, metadata, directive tables, scripting APIs, transport settings and advanced workflows, lives in docs/resterm.md.

About

Terminal client for .http/.rest files with HTTP, GraphQL and gRPC support, workflows, profiling and response diffs.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 98.9%
  • Other 1.1%