
resterm v1.5.6
Terminal-API-Client für HTTP, GraphQL und gRPC. Einfache .http-Dateien zum Diffen und Versionieren, mit Workflows, Mocks, Profiling, Tracing, OpenAPI-Import, SSH-Tunneln, Kubernetes-Port-Forwards, WebSocket, SSE und einem CLI-Runner.
Resterm
Eine API-as-Code-Workbench für das Terminal.
Trace- und Timeline-Ansicht
Resterm ist ein API-Client, der Requests in einfachen .http- und .rest-Dateien speichert, die wie der Rest deines Codes Seite an Seite in deinem Repo liegen können. Du kannst die Terminal-UI verwenden oder dieselben Dateien in CI mit resterm run ausführen.
Quick Links: Screenshots, Installation, Schnellstart, Request-Dateien, Dokumentation.
Screenshots
Die UI in Aktion sehen (zum Erweitern klicken)
Workflows
Profiler
Explain
RestermScript
Warum Resterm
- HTTP-, GraphQL-, gRPC-, WebSocket- und SSE-Unterstützung.
- Automatisierung in Request-Dateien: Bedingungen (
@when,@if/@elif/@else,@for-each), mehrstufige Workflows (@workflow/@step), Captures, Variablen und Assertions (@capture,@var,@assert). - Tunnel in der Request-Datei:
@sshund@k8sleiten einen Request durch eine SSH-Bastion oder einen Kubernetes-Port-Forward, den Resterm für dich öffnet und schließt, mit Profilen pro Datei oder Workspace. - HTTP-Traffic aufzeichnen und als Requests oder Mock-Responses in Resterm-
.http-Dateien exportieren. - RestermScript, eine kleine, für Resterm entwickelte Ausdruckssprache, mit JavaScript-Hooks, wenn du sie möchtest.
- Vim-ähnliche Steuerung mit Shortcut-Hinweisen, durchsuchbarer Offline-Hilfe,
Shift+k-Hilfe unter dem Cursor,/-Suche und Befehlen wie:w,:q,:helpund:docs. - Auth: OAuth 2.0 (Client Credentials, Password, Authorization Code mit PKCE) und
@auth command, um Tokens aus CLIs wiederzuverwenden, die du bereits installiert hast, wiegh auth token. - CLI-Runner:
resterm runfür skriptgesteuerte Läufe und CI, mit JSON- und JUnit-Ausgabe. - Mock-Server, die neben den Requests deklariert werden, die sie nachbilden, mit Matching-Regeln, Sequenzen, Call-Verification und Hot Reload.
- Timeline-Tracing, Profiling und Vergleich von Läufen über Umgebungen hinweg.
- Streaming-Transkripte und eine interaktive Konsole für WebSocket und SSE.
- Keine KI-Integration
Installation
macOS und 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
Aus dem Quellcode, mit Go 1.25 oder neuer:
go install github.com/unkn0wn-root/resterm/cmd/resterm@latest
[!IMPORTANT] Vorgebaute Linux-Binärdateien setzen glibc 2.32 oder neuer voraus. Auf einer älteren Distribution baue aus dem Quellcode mit einer neueren glibc-Toolchain oder aktualisiere glibc, bevor du die Release-Archive verwendest.
Homebrew-Installationen werden mit brew upgrade resterm aktualisiert. Binärdateien von der Releases-Seite oder den Installationsskripten verwenden resterm --check-update und resterm --update, was herunterlädt, verifiziert und direkt installiert. Unter Windows bleibt die alte Binärdatei als resterm.exe.old neben der neuen liegen und wird beim nächsten Update bereinigt.
Manuelle Installation
Binärdateien für macOS, Linux und Windows (amd64 und arm64) findest du auf der Releases-Seite. Die folgenden Befehle machen dasselbe wie das manuelle Herunterladen von der Release-Seite. Die Unix-Version benötigt curl und jq.
# Find the latest release 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)"
# Install on 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 move to a directory on PATH:
Move-Item resterm.exe "$env:USERPROFILE\bin\resterm.exe"
Schnellstart
mkdir my-api && cd my-api
resterm init
resterm
resterm init erstellt ein kleines Projekt, das du sofort verwenden kannst. Die generierte requests.http enthält lokale Mock-Szenarien und einige Requests, die aufeinander aufbauen und Assertions, Bearer-Auth, JSON-Matching, json-rules und @for-each abdecken. Drücke g Shift+m, um den Mock-Server zu starten, dann Ctrl+Enter, um den Request unter dem Cursor zu senden.
Du kannst Resterm auch direkt ohne init öffnen. Führe resterm aus, gib eine URL ein und drücke Ctrl+Enter. Du kannst auch einen curl-Befehl einfügen – das funktioniert ebenfalls.
Dieselbe Datei läuft auch ohne die TUI:
resterm run --request CreateUser requests.http
Request-Dateien
Resterm unterstützt die Standard-HTTP-Syntax, geht aber mit # @-Direktiven für Konfiguration und Automatisierung weit darüber hinaus:
# @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.mode == "development"
# @assert response.statusCode == 201
POST users
Content-Type: application/json
{"name":"{{= name }}"}
Ein @setting vor dem ersten Request gilt für die gesamte Datei. ### beginnt einen neuen Request, und Direktiven können den darunterstehenden Request wiederholen, einschränken oder prüfen. Mehr in _examples/ und der Direktiven-Referenz.
Mock-Server
Mock-Responses werden in denselben Dateien wie die Requests definiert (müssen es aber nicht). Beispiel, zwei Szenarien auf einer Route:
### Payment accepted
# @mock method=POST path=/payments name=accepted default=true latency=150ms
HTTP/1.1 202 Accepted
Content-Type: application/json
{"id":"pay_123","status":"pending"}
### Payment declined
# @mock method=POST path=/payments name=declined
# @match query={"mode":"decline"} headers={"X-Tenant":"demo"} json={"amount":0}
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
{"error":"amount must be positive"}
Eine Datei oder ein ganzes Verzeichnis bereitstellen:
resterm mock ./requests.http
resterm mock --recursive --addr 127.0.0.1:9090 ./requests
Matching auf Query, Header und Body, Response-Sequenzen für Polling-Tests, Call-Verification und Hot Reload werden in der Mock-Server-Referenz behandelt. Funktionierendes Beispiel: _examples/mocks.http.
Traffic aufzeichnen
Du kannst deine Anwendung durch den Resterm-Proxy leiten, und er zeichnet den Traffic in einer Resterm-.http-Datei auf, als Requests, Mocks oder beides.
resterm record --upstream https://api.example.com --out captured.http --mode both
Richte die API-Basis-URL deiner Anwendung auf http://127.0.0.1:9000 und beende die Aufzeichnung dann mit Ctrl+C. Die TUI macht dasselbe mit :record start --upstream <origin>, plus :record as-request und :record as-mock, um Aufzeichnungen in die geöffnete Datei einzufügen.
Mehr in der Recording-Referenz.
Mehr
| Bereich | Docs |
|---|---|
| Automatisierung | Workflows, Polling und Retries, Läufe vergleichen, Timeline und Tracing, Profiling |
| Transports | gRPC, GraphQL, WebSocket und SSE |
| Auth und Konnektivität | OAuth 2.0, Auth aus deiner eigenen CLI, SSH-Tunnel, Kubernetes-Port-Forwards |
| Scripting | RestermScript, JavaScript-Hooks, Headless-Go-API, resterm-runner |
| Ein- und Ausgabe | curl-Import, OpenAPI-Import, Collection-Sharing, Response-Historie und Diffing |
| Einrichtung | Umgebungen und Variablen, Konfiguration, Themes, Tastenbelegungen |
Tasten
Drücke ? für die allgemeine Resterm-Hilfe und Shift+k für Hilfe zu dem, was sich unter dem Cursor befindet. Die vollständige Tabelle findest du in der UI-Tour. Für den Schnellstart brauchst du nur:
Ctrl+Entersendet den RequestTab/Shift+Tabwechselt zwischen den Bereicheng pspringt zur Response
Dokumentation
docs/resterm.mdbehandelt Request-Syntax, Direktiven, Scripting und Transports.docs/cli.mdbehandeltresterm run, Importer, Collections und Historie.docs/restermscript.mdist die RestermScript-Referenz.- Kompatibilität listet auf, was über v1 hinweg stabil bleibt.
Innerhalb der TUI öffnet :help <topic> das eingebettete Handbuch und :docs <topic> die Web-Version für die installierte Release.