アップデート一覧に戻る
New releaseJul 31, 2026

resterm v0.49.3

HTTP/GraphQL/gRPC対応のターミナルAPIクライアント。SSHトンネル、WebSockets、SSE、ワークフロー、プロファイリング、OpenAPI、Kubernetesのポートフォワーディング、ヘッドレスAPIをサポート。

共有

Resterm
Resterm

ターミナルネイティブな REST・GraphQL・gRPC・WebSocket・SSE 対応の API クライアント兼ワークベンチ。

Resterm TUI ベースのスクリーンショット

Resterm は API-as-code ワークベンチ、つまりもう少し馴染みのある言い方をすれば API クライアントであり、diff・レビュー・バージョン管理が可能なプレーンな .http ファイルと .rest ファイルを中心に構築されています。対話的なリクエスト編集と、宣言型ワークフロー、アサーション、モックサーバー、トレーシング、プロファイリング、ヘッドレス自動化を組み合わせます。すべてはお使いのマシン上に留まります。アカウント不要、クラウド同期なし、テレメトリなし。

GUI コレクション中心の Postman 風クライアントをお探しなら、Resterm はおそらく 向いていません が、それでも試してみてください!

[!NOTE] Resterm は v1 になりました! 新機能と破壊的変更については v1.0.0 リリースノート を参照してください。

クイックリンク: スクリーンショットインストールクイックスタートドキュメント

スクリーンショットツアー

UI の動作を見る(クリックで展開)

ワークフロー

ワークフロー表示の Resterm のスクリーンショット

トレースとタイムライン

タイムライン表示の Resterm のスクリーンショット

プロファイラー

Resterm プロファイラーのスクリーンショット

Explain

Resterm の Explain タブのスクリーンショット

RestermScript

RestermScript 表示の Resterm のスクリーンショット

ライトテーマ

ライトテーマの Resterm のスクリーンショット

OAuth ブラウザデモ(旧 UI デザイン)

Resterm の OAuth フロー

Resterm の特長

  • HTTP、GraphQL、gRPC、WebSocket、SSE を標準でサポート。
  • 自動化はリクエストファイルの中に: 条件分岐(@when@if/@elif/@else@for-each)、複数ステップのワークフロー(@workflow / @step)、キャプチャ、変数、アサーション(@capture@var@assert)。
  • RestermScript は Resterm のために作られた小さな式言語で、必要に応じて JavaScript フックも使えます。
  • Vim スタイルの操作。コンテキストに応じた下部バーのヒント、検索可能なオフラインヘルプ、カーソル位置での K ヘルプ、/ 検索、:w:q:help:docs などのコマンドを備えます。
  • 認証とトンネリングを内蔵: OAuth 2.0(client credentials、password、PKCE 付き auth code)、既存の CLI を利用した認証、SSH トンネル、Kubernetes port-forward。追加ツールは不要です。
  • CLI ランナー: スクリプト実行と CI のための resterm run。JSON と JUnit 出力に対応。
  • モックサーバー は、模倣対象のリクエストの隣に宣言します。マッチングルール、シーケンス、呼び出し検証、ホットリロードに対応。
  • 環境をまたいだ タイムラインのトレーシング、プロファイリング、実行結果の比較
  • WebSocket と SSE のための ストリーミングのトランスクリプト と対話型コンソール。
  • AI 連携は 一切ありません

クイックスタート

  1. Resterm をインストールします(スクリプト、Windows、手動インストールについては インストール を参照)。

    brew install resterm
    
  2. ワークスペースを初期化します。

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

    resterm init は、インターネット接続なしで動作する小さなプロジェクトを生成します。生成される requests.http には、ローカルモックシナリオと、相互に連携するいくつかのリクエストが含まれます。これらは、アサーション、ベアラー認証、JSON マッチング、json-rules@for-each をカバーしています。

  3. 起動して最初のリクエストを送信します。

    resterm
    

    エディタで Ctrl+Enter を押すと、ハイライトされたリクエストを送信できます。

まだファイルがない? その場合は resterm を実行して URL を入力し、Ctrl+Enter を押すだけです。curl コマンドの貼り付けもそのまま使えます。

CLI

resterm run は TUI を開かずに .http / .rest ファイルを実行します。CI で実行されるのはこちらです。

resterm run --request CreateUser requests.http

生成されたプロジェクトはローカルモックサーバーと通信します。先に別のターミナルで起動してください:

resterm mock requests.http

TUI では、代わりに g Shift+M を押すと、ワークスペースから同じモックサーバーを起動できます。

CLI ドキュメント では、セレクタ、出力形式、その他の例を説明しています。

モックサーバー

リクエストを格納しているのと同じファイルで HTTP モックを提供できます。

  • クエリ、ヘッダー、JSON ボディで受信リクエストをマッチングし、名前付きまたはデフォルトのレスポンスを選択します。
  • レスポンスのシーケンスを使ってポーリングやリトライのフローをモデル化できます。リソースや呼び出し元ごとの独立したカーソルにも対応します。
  • レスポンスを固定時間遅延させたり、randomnormaljitter を使ってリクエストごとに異なる遅延を設定したりできます。
  • パス、クエリ、ヘッダー、ボディの値からレスポンスを構築でき、動的データ用のジェネレータも用意されています。
  • @expect で呼び出し回数を検証したり、RestermScript から受信トラフィックを検査したりできます。
  • ソースファイルとフィクスチャをホットリロードできます。TLS もオプションで利用可能です。

1 つのルートに 2 つのシナリオ:

### 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"}

1 つのファイルでもディレクトリ全体でも配信できます:

resterm mock ./requests.http
resterm mock --recursive --addr 127.0.0.1:9090 ./requests

詳細は モックサーバーリファレンスresterm mock CLI ガイド動作例 を参照してください。

ヘッドレス

headless パッケージは、TUI と CLI を支えるのと同じエンジンの公開 Go API です。独自の Go コードや CI から、リクエスト、ワークフロー、アサーション、実行比較、プロファイルを実行できます。

自分でランナーを構築したくない場合は、resterm-runner があります。

キーボード早見表

  • ペインのフォーカスとレイアウト
    • Tab / Shift+Tab: サイドバー、エディタ、レスポンスの間を移動します。
    • g+rg+ig+p: リクエスト、エディタ、レスポンスへジャンプします。
    • g+h / g+l: 水平方向にリサイズします。サイドバーにフォーカスがあるときはサイドバーの幅を、それ以外のときはエディタ/レスポンスの分割幅を変更します。
    • g+j / g+k: スタック表示時はエディタ/レスポンスの高さをリサイズし、ナビゲータではブランチを折りたたみ/展開します。
    • g+v / g+s: レスポンスペインをインラインとスタックレイアウトの間で切り替えます。
    • g+1g+2g+3: サイドバー、エディタ、レスポンスを最小化または復元します。
    • g+z / g+Z: フォーカス中のペインをズーム、ズームを解除します。
  • 環境とグローバル変数
    • Ctrl+E: 環境を切り替えます。
    • Ctrl+G: キャプチャされたグローバル変数を確認します。
  • ヘルプとコマンド
    • ?: 検索可能なオフラインヘルプの索引を開きます。
    • K(エディタのノーマルモード): カーソル位置のディレクティブ、テンプレート、キーワードのヘルプを開きます。
    • :help <topic> / :man <topic>: 組み込みトピックを開きます。:docs <topic> はバージョン対応の完全マニュアルを開きます。
    • Ctrl+O: ファイル/ワークスペースのポップアップを開きます。入力してフィルタリングし、Up / Down でスクロール、Tab でディレクトリに入ります。
    • :: コマンドラインを開きます。Up / Down で候補を選択、Tab で補完、Enter で選択を確定して実行します。:mock start --source:edit などのパス引数は、同じポップアップ内でファイルシステムを閲覧します。
  • レスポンス
    • Ctrl+V / Ctrl+U: レスポンスペインを分割して並べて比較します。
    • Ctrl+Shift+C または g y(レスポンスにフォーカス時): Pretty、Raw、Headers タブ全体をコピーします。
    • g x: 送信せずに、アクティブなリクエストの Explain プレビューを表示します。
    • g e: 現在のファイルを外部エディタで開きます。

[!TIP] 3 つだけ覚えるなら:

  • Ctrl+Enter でリクエストを送信
  • Tab / Shift+Tab でペインを切り替え
  • g+p でレスポンスへジャンプ

インストール

Linux / macOS(Homebrew)

brew install resterm

[!NOTE] Homebrew でインストールした場合は Homebrew で更新してください(brew upgrade resterm)。組み込みの resterm --update コマンドは、GitHub リリースまたはインストールスクリプトからインストールしたバイナリを対象としています。

Linux / macOS(シェルスクリプト)

[!IMPORTANT] プリビルドの Linux バイナリは glibc 2.32 以降に依存しています。古いディストリビューションでは、新しい glibc ツールチェーンでソースからビルドするか、リリースアーカイブを使用する前に glibc をアップグレードしてください。

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

または 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

スクリプトはお使いのアーキテクチャを検出し、最新リリースをダウンロードしてバイナリをインストールします。

手動インストール

[!NOTE] 手動インストールのヘルパーは curljq を使用します。jq はパッケージマネージャでインストールしてください(brew install jqsudo apt install jq など)。

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"

ソースからビルド

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

アップデート

resterm --check-update
resterm --update

最初のコマンドは新しいリリースが利用可能かどうかを報告します。2 番目のコマンドはダウンロード、検証、その場でのインストールを実行します。Windows では、古いバイナリは resterm.exe.old として新しいバイナリの隣に残り、次回のアップデート時に削除されます。

設定

  • 環境は JSON ファイル(resterm.env.json)で、リクエストディレクトリ、ワークスペースルート、または CWD から検出されます。1 つのファイルで、api、app、credentials などの名前付き環境や独立したグループを定義でき、それらが 1 つの環境に結合されます。Dotenv ファイル(.env.env.*)は --env-file によるオプトインで、単一ワークスペース向けです。グループ化された環境_examples/grouped/ にある実行可能なサンプルを参照してください。
  • 設定は OS ごとに保存され、RESTERM_CONFIG_DIR で上書きできます:
    • macOS: ~/Library/Application Support/resterm
    • Windows: %APPDATA%\resterm
    • Linux/Unix: ~/.config/resterm

コレクション

ワークスペースを Git フレンドリーなバンドルとしてエクスポートし、別のワークスペースにインポートできます。バンドルにはチェックサム付きの manifest.json が含まれるため、インポート時はまずファイルの整合性が検証されます。環境値は REPLACE_ME プレースホルダーとしてエクスポートされるため、シークレットがマシンの外に出ることはありません。

resterm collection export --workspace ./my-api --out ./shared/my-api-bundle
resterm collection import --in ./shared/my-api-bundle --workspace ./my-local-api

--dry-run を付けるとインポートをプレビューでき、--force で既存ファイルを上書きできます。ドキュメント: コレクションの共有

Curl インポート

curl コマンドをエディタに貼り付けて Ctrl+Enter を押すと、構造化されたリクエストに変換されます。Resterm は一般的なフラグを理解し、繰り返されるデータセグメントをマージし、マルチパートアップロードをそのまま保持します。sudo$ などのシェルプレフィックスは無視されます。CLI でも --from-curl で同じ変換ができます。

次のコマンド:

curl -X POST https://api.example.com/login \
  -H "Content-Type: application/json" \
  --user demo:secret \
  -d '{"user":"demo"}'

は次のようになります:

### POST https://api.example.com/login
# @auth basic demo secret
POST https://api.example.com/login
Content-Type: application/json

{"user":"demo"}

ドキュメント: インラインリクエストインポート例

RestermScript

RestermScript(RTS)は Resterm のために作られた小さな式言語です。リクエスト形式、ワークフロー、ディレクティブを直接対象とするため、スクリプトは簡潔で予測可能です。さらに必要な場合に備えて JavaScript フックも利用できます。

簡単な例(RTS モジュール + リクエスト):

// rts/helpers.rts
module helpers
export fn authHeader(token) {
  return token ? "Bearer " + token : ""
}
# @use ./rts/helpers.rts
# @when env.has("feature")
# @assert response.statusCode == 200
GET https://api.example.com/users/{{= vars.get("user") }}
Authorization: {{= helpers.authHeader(vars.get("auth.token")) }}

完全なリファレンス: docs/restermscript.md

詳細解説

OAuth 2.0

client credentials、password grant、PKCE 付き authorization code に対応しています。auth code フローでは、Resterm がブラウザを開き、127.0.0.1 上でローカルコールバックサーバーを実行して、リダイレクトを捕捉し、コードを交換します。トークンは環境ごとにキャッシュされ、期限切れになると更新されます。ドキュメント: docs/resterm.md#oauth-20-directive_examples/oauth2.http

ワークフローとスクリプティング

@workflow@step でリクエストを連結し、ステップ間でデータを受け渡し、必要に応じて JS フックを追加できます。ドキュメントとサンプル: docs/resterm.md#workflows_examples/workflows.http

実行結果の比較

@compare または --compare を使用して同じリクエストを複数の環境で実行し、g+c でレスポンスを並べて差分を確認できます。ドキュメント: docs/resterm.md#compare-runs

トレーシングとタイムライン

予算付きの @trace を追加すると、DNS、connect、TLS、TTFB、転送のタイミングを取得できます。Resterm は超過をハイライトし、スパンを OpenTelemetry にエクスポートできます。ドキュメント: docs/resterm.md#timeline--tracing

ストリーミング(WebSocket と SSE)

@ws ステップ付きの @websocket または @sse を使用して、ストリームのスクリプト化と記録ができます。Stream タブにはトランスクリプトが保持され、対話型コンソールも含まれます。ドキュメント: docs/resterm.md#streaming-sse--websocket

gRPC

トランスクリプト、メタデータ、ボディ展開に対応した Unary 呼び出しとストリーミング呼び出し。ドキュメント: docs/resterm.md#grpc

OpenAPI インポート

--from-openapi を使用して、ローカルファイルまたは http(s) URL から OpenAPI 3 仕様を .http コレクションに変換できます。生成するブロックは --openapi-mode requestsmocksboth で選択します。リモート取得時はグローバルの --insecure--proxy フラグが尊重されます。ドキュメント: docs/cli.md#import-examples

SSH トンネル

@ssh プロファイルを使用して、HTTP、gRPC、WebSocket、SSE のトラフィックを踏み台サーバー経由でルーティングできます。ドキュメント: docs/resterm.md#ssh-tunnels_examples/ssh.http

Kubernetes port-forward

同じ考え方を @k8s プロファイルで実現し、Pod、Service、Deployment、StatefulSet を対象にできます。ドキュメント: docs/resterm.md#kubernetes-port-forwards_examples/k8s.http

テーマとキーバインド

設定ディレクトリ内の themes/*.tomlbindings.toml または bindings.json で、色とキーバインドをカスタマイズできます。ドキュメント: docs/resterm.md#themingdocs/resterm.md#custom-bindings

ドキュメント

  • docs/resterm.md は、リクエスト構文、ディレクティブ、スクリプティング、トランスポートを解説しています。
  • docs/cli.md は、resterm run、インポーター、コレクション、履歴を解説しています。
  • 互換性 は、v1 における Resterm の互換性保証を説明しています。

TUI 内では ? を押すか、:help を実行してください。インストールしているリリースの完全な Web マニュアルが必要な場合は :docs を使用してください。

ライセンス

Apache License 2.0

カテゴリ