resterm

module
v1.15.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 16, 2026 License: Apache-2.0

README

Resterm
Resterm

An API-as-code workbench for the terminal.
resterm.app · docs

Screenshot of Resterm TUI base

Resterm is a code-first API client built around plain .http/.rest files. A request is a few lines of text you can read, diff and keep in git, and the same goes for workflows and local mocks. You send them from the terminal UI while you work, and resterm run runs the same files in CI. If your API sits behind an SSH bastion or inside a Kubernetes cluster, Resterm opens the tunnel or port-forward for you.

Why Resterm

  • Test complete API flows. Log in, capture a token, create a resource, and verify the response. Add assertions, loops, conditions, retries, and scripts directly in your request files.
  • Turn real traffic into local mocks. Record HTTP requests and responses, then save them as runnable requests or mock definitions. Keep mocks alongside the requests that use them.
  • Compare responses and track changes. Diff responses across environments or against previous runs, inspect timings, and profile repeated requests.
  • Run locally and in CI. Use the terminal UI during development and resterm run for automation. Export JSON or JUnit reports.
  • Work across protocols. Send HTTP, GraphQL, and gRPC requests, and work with WebSocket and SSE streams.

No account and no telemetry.

[!NOTE] Resterm has no MCP server or built-in AI features. If you want your LLM to understand Resterm, point it at the Markdown docs in docs/ or at resterm.app/docs.

Screenshots

Trace and timeline

Screenshot of Resterm with timeline

Click to see more of the UI

Workflows

Screenshot of Resterm with Workflow

Profiler

Screenshot of Resterm profiler

Explain

Screenshot of Resterm Explain Tab

RestermScript

Screenshot of Resterm with RestermScript

Install

macOS and Linux:

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

Windows:

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

With Go 1.25 or newer:

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

Prebuilt binaries for macOS, Linux and Windows are on the releases page. The Linux binaries need glibc 2.32 or newer.

To update a Homebrew installation, run brew upgrade resterm. For release binaries or installations made with the scripts, run resterm --update. If you installed with Go, rerun the go install command above. More in the install guide.

Quick start

mkdir my-api && cd my-api
resterm init
resterm

resterm init creates a requests.http file with a few sample requests and local mocks to answer them, so you don't need a real API to try it. Press g Shift+M to start the mock server, move the cursor to a request and press Ctrl+Enter to send it. Press ? for help at any time.

You don't need init either. Run resterm, type a URL or paste a curl command, and press Ctrl+Enter.

The same file also runs without the UI. Start the mocks in one terminal and run a request in another:

resterm mock requests.http                       # terminal 1
resterm run --request CreateUser requests.http   # terminal 2

Request files

Resterm reads the standard .http format and adds # @ directives on top for settings and automation:

# @setting base-url https://api.example.com/v1/

### Create users
// Send this request once for each name in the list.
# @for-each ["david", "tom"] as name
# @when env.meta.name == "dev"
# @assert response.statusCode == 201
POST users
Content-Type: application/json

{"name":"{{= name }}"}

A @setting before the first request applies to the whole file. ### starts a new request. Directives above a request can repeat it, skip it or check the response.

There are more examples in _examples/, and every directive is listed in the request file reference.

Documentation

The full docs are at resterm.app/docs. Good places to start are workflows, mock servers, recording, the CLI and RestermScript.

Inside the TUI, :help <topic> opens the built-in manual and :docs <topic> opens the same page on the website.

To run request files from your own Go code, see the headless package.

Sponsor

Resterm is and always will be free and open source. If you like my work, you can sponsor it on GitHub.

License

Apache License 2.0.

Directories

Path Synopsis
cmd
resterm command
Package headless runs Resterm requests and workflows without the TUI.
Package headless runs Resterm requests and workflows without the TUI.
internal
cli
diag
Package diag defines structured diagnostics and renderers shared by the CLI, TUI, parsers, and execution runtimes.
Package diag defines structured diagnostics and renderers shared by the CLI, TUI, parsers, and execution runtimes.
eol
files
Package files classifies and enumerates the workspace files resterm reads: requests, scripts, environments, and their data companions.
Package files classifies and enumerates the workspace files resterm reads: requests, scripts, environments, and their data companions.
fsx
helpdoc
Package helpdoc provides the embedded documentation shown by the TUI.
Package helpdoc provides the embedded documentation shown by the TUI.
k8s
launch
Package launch opens URLs and files with the platform's default application.
Package launch opens URLs and files with the platform's default application.
mdterm
Package mdterm renders the markdown subset that release notes actually use as terminal text: ATX headings, nested lists, fenced code blocks, horizontal rules, inline-only blockquotes, emphasis, code spans, links and bare URLs.
Package mdterm renders the markdown subset that release notes actually use as terminal text: ATX headings, nested lists, fenced code blocks, horizontal rules, inline-only blockquotes, emphasis, code spans, links and bare URLs.
mock
Package mock serves HTTP responses compiled from @mock definitions in .http files.
Package mock serves HTTP responses compiled from @mock definitions in .http files.
recorder
Package recorder forwards HTTP traffic and exports requests and mocks.
Package recorder forwards HTTP traffic and exports requests and mocks.
rts
ssh
str
ui
ui/textarea
Package textarea provides a heavily changed multi-line text input component for Bubble Tea applications.
Package textarea provides a heavily changed multi-line text input component for Bubble Tea applications.
vars/dynamic
Package dynamic implements the built-in {{$...}} template helpers.
Package dynamic implements the built-in {{$...}} template helpers.
website
capture command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL