SkillAgentSearch skills...

Resterm

Terminal API client for HTTP/GraphQL/gRPC with support for SSH tunnels, WebSockets, SSE, Workflows, Profiling, OpenAPI, Kubernetes port-forwarding and response diffs.

Install / Use

/learn @unkn0wn-root/Resterm
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<h1 align="center"> <img src="_media/resterm_logo.png" alt="Resterm" width="200" /> <br> Resterm </h1> <p align="center"> <em>A terminal client for REST, GraphQL, gRPC, WebSocket, and SSE.</em> </p> <p align="center"> <img src="_media/resterm_base.png" alt="Screenshot of Resterm TUI base" width="720" /> </p>

Resterm is a keyboard-driven API client that lives in your terminal and keeps everything local. It stores requests as plain files, supports SSH tunnels, Kubernetes port-forwarding, and OAuth 2.0, and gives you a fast feedback loop with history, diffs, tracing, and profiling.

Quick links: Screenshots, Installation, Quick Start, Features and Documentation.

Why Resterm

  • Requests live in plain .http / .rest files.
  • Conditional logic - @when, @skip-if, @if/@elif/@else, @switch/@case, and @for-each.
  • Multi-step workflows with @workflow / @step.
  • Captures, variables, and assertions (@capture, @var, @assert).
  • RestermScript - a small, safe expression language purpose.
  • OAuth 2.0 (client credentials, password, auth code + PKCE), SSH tunnels, and Kubernetes port-forwards are built in - no extra tools.
  • Timeline tracing, profiling, and compare runs across environments.
  • Streaming transcripts and an interactive console for WebSocket and SSE sessions.
  • No cloud sync, no accounts, no telemetry. Everything stays local.
  • There is no AI integration and there will never be.

Screenshot tour

<details> <summary>See the UI in action</summary> <p align="center"> <strong>Workflows</strong> </p> <p align="center"> <img src="_media/resterm_workflow.png" alt="Screenshot of Resterm with Workflow" width="720" /> </p> <p align="center"> <strong>Trace and Timeline</strong> </p> <p align="center"> <img src="_media/resterm_trace_timeline.png" alt="Screenshot of Resterm with timeline" width="720" /> </p> <p align="center"> <strong>Profiler</strong> </p> <p align="center"> <img src="_media/resterm_profiler.png" alt="Screenshot of Resterm profiler" width="720" /> </p> <p align="center"> <strong>RestermScript</strong> </p> <p align="center"> <img src="_media/resterm_script.png" alt="Screenshot of Resterm with RestermScript" width="720" /> </p> <p align="center"> <strong>OAuth browser demo (old UI design)</strong> </p> <p align="center"> <img src="_media/oauth.gif" alt="Resterm OAuth flow" width="720" /> </p> </details>

Quick Start

  1. Install Resterm using the command that matches your OS.

    # Linux/macOS (Homebrew)
    brew install resterm
    
    # Linux (install script)
    curl -fsSL 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
    
  2. Bootstrap a tiny workspace.

    mkdir my-api && cd my-api
    resterm init
    
  3. Run it and send your first request.

    resterm
    

    Press Ctrl+Enter in the editor to send the highlighted request.

If you do not want files yet, just run resterm, type a URL in the editor, and press Ctrl+Enter. If you already have a curl command, paste it into the editor and press Ctrl+Enter to import it.

Key files

These are the files you will see most often in a Resterm workspace.

  • .http / .rest files store your requests, metadata, and named steps.
  • resterm.env.json holds environment variables and secrets for one or more environments.
  • resterm.env.example.json is a safe template you can commit and share.
  • .rts files contain RestermScript helpers for reuse and small bits of logic.
  • RESTERM.md is optional project notes created by resterm init.

Overview

Protocols and transports cover the following.

  • HTTP, GraphQL, gRPC, WebSocket, and SSE are supported out of the box.
  • SSH tunnels include host key verification, keep-alives, retries, and persistent sessions.
  • Kubernetes port-forwards target pods, services, deployments, and statefulsets with named port resolution, pod readiness checks, retries, and persistent sessions.

Workspace and files focus on the following.

  • .http / .rest files are discovered automatically and the request list stays in sync as you edit.
  • The request editor includes inline syntax highlighting, search, and contextual metadata hints.
  • Environment files are treated as first-class input. resterm init adds resterm.env.json to .gitignore but any custom env files passed via the CLI are not ignored automatically.

Automation and reuse include the following.

  • Variables, captures, constants, and multi-step workflows.
  • RestermScript (RTS) and optional JavaScript hooks handle request-time logic.
  • Curl commands and OpenAPI specs can be imported directly into request collections.

Debugging and inspection provide the following.

  • Pretty/raw/header/diff/history views are available with split panes.
  • Streaming transcripts are recorded and an interactive console is available for WebSocket and SSE.
  • Timeline tracing and profiling help find slow or flaky endpoints.

Security and auth cover the following.

  • OAuth 2.0 client credentials, password grant, and authorization code + PKCE are supported.
  • Tokens are cached per environment and refreshed automatically.

Customization includes the following.

  • Custom themes and keybindings.

Navigation & layout cheat sheet

A few keys that make Resterm feel “native” quickly:

  • Pane focus & layout

    • Tab / Shift+Tab - move focus between sidebar, editor, and response.
    • g+r - jump to Requests (sidebar).
    • g+i - jump to Editor.
    • g+p - jump to Response.
    • g+h / g+l - adjust layout:
      • When the left pane (sidebar) is focused: change sidebar width.
      • Otherwise: change editor/response split.
    • g+v / g+s - toggle response pane between inline and stacked layout.
    • g+1, g+2, g+3 + minimize/restore sidebar, editor, response.
    • g+z / g+Z - zoom the focused pane / clear zoom.
  • Environments & globals

    • Ctrl+E - switch environments.
    • Ctrl+G - inspect captured globals.
  • Working with responses

    • Ctrl+V / Ctrl+U - split the response pane for side-by-side comparison.
    • When response pane is focused:
      • Ctrl+Shift+C or g y - copy the entire Pretty/Raw/Headers tab to the clipboard (no mouse selection needed).

[!TIP] If you only remember three shortcuts…

  • Ctrl+Enter - send request
  • Tab / Shift+Tab - switch panes
  • g+p - jump to response

Installation

Linux / macOS (Homebrew)

brew install resterm

[!NOTE] Homebrew installs should be updated with Homebrew (brew upgrade resterm). The built-in resterm --update command is for binaries installed from GitHub releases or install scripts.

Linux / macOS (Shell script)

[!IMPORTANT] Pre-built Linux binaries depend on glibc 2.32 or newer. If you run an older distro, build from source on a machine with a newer glibc toolchain or upgrade glibc before using the release archives.

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

Update

resterm --check-update
resterm --update

The first command reports whether a newer release is available. The second downloads and installs it (Windows users receive a staged binary to swap on restart).

Quick Configuration Overview

  • Environments are JSON files (resterm.env.json) discovered in the request directory, workspace root, or CWD. Dotenv files (.env, .env.*) are opt-in via --env-file and are single-workspace. Prefer JSON when you need multiple environments in one file.
  • Flags you probably reach for most are --workspace, --file, --env, --env-file, --timeout, --insecure, --follow, --proxy, --recursive, --from-curl, --from-openapi, and --http-out.
  • Config is stored at $HOME/Library/Application Support/resterm, %APPDATA%\resterm, or $HOME/.config/resterm and can be overridden with RESTERM_CONFIG_DIR.

Collections

You can export a workspace into a Git-friendly Resterm bundle. The exported bundle always includes a manifest.json with checksums, so imports can verify file integrity before writing anything.

When Resterm se

Related Skills

View on GitHub
GitHub Stars1.4k
CategoryDevelopment
Updated6h ago
Forks36

Languages

Go

Security Score

100/100

Audited on Mar 30, 2026

No findings