업데이트로 돌아가기
New releaseAug 6, 2026

resterm v0.51.3

SSH 터널, WebSockets, SSE, 워크플로우, 프로파일링, OpenAPI, Kubernetes 포트 포워딩, CLI 및 mocks를 지원하는 HTTP/GraphQL/gRPC용 터미널 API 클라이언트입니다.

공유

Resterm
Resterm

REST, GraphQL, gRPC, WebSocket 및 SSE를 위한 터미널 네이티브 API 클라이언트이자 워크벤치입니다.

Resterm TUI 기본 화면 스크린샷

Resterm은 diff, 검토 및 버전 관리가 가능한 일반 .http.rest 파일을 기반으로 구축된 API-as-code 워크벤치, 즉 더 익숙한 용어로 표현하면 API 클라이언트입니다. 대화형 요청 편집과 선언적 워크플로우, 어서션, mock 서버, 트레이싱, 프로파일링 및 헤드리스 자동화를 결합합니다. 모든 것은 사용자 머신에만 보관됩니다. 계정도, 클라우드 동기화도, 텔레메트리도 없습니다.

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(클라이언트 자격 증명, 비밀번호, PKCE 인증 코드), 기존 CLI 기반 인증, SSH 터널 및 Kubernetes 포트 포워딩. 추가 도구가 필요 없습니다.
  • CLI 러너: 스크립트 실행 및 CI를 위한 resterm run, JSON 및 JUnit 출력 지원.
  • mock 서버는 모방하는 요청 옆에 선언되며, 매칭 규칙, 시퀀스, 호출 검증 및 핫 리로드를 지원합니다.
  • 타임라인 트레이싱, 프로파일링 및 환경 간 실행 비교.
  • WebSocket 및 SSE를 위한 스트리밍 트랜스크립트와 대화형 콘솔.
  • AI 통합은 절대 없습니다.

빠른 시작

  1. Resterm을 설치합니다(스크립트, Windows 및 수동 설치 방법은 설치 참조).

    brew install resterm
    
  2. 워크스페이스를 생성합니다.

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

    resterm init은 인터넷 연결 없이도 작동하는 소규모 프로젝트를 생성합니다. 생성된 requests.http에는 로컬 mock 시나리오와 서로 연계되는 몇 가지 요청이 포함되어 있습니다. 이들은 어서션, Bearer 인증, 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

생성된 프로젝트는 로컬 mock 서버와 통신합니다. 먼저 다른 터미널에서 시작하세요:

resterm mock requests.http

TUI에서는 g Shift+M을 눌러 워크스페이스에서 동일한 mock 서버를 시작할 수 있습니다.

CLI 문서에는 셀렉터, 출력 형식 및 더 많은 예제가 포함되어 있습니다.

Mock 서버

요청을 담고 있는 동일한 파일이 HTTP mock을 제공할 수 있습니다.

  • 쿼리, 헤더 또는 JSON 본문으로 들어오는 요청을 매칭한 다음, 이름이 지정된 응답 또는 기본 응답을 선택합니다.
  • 리소스 또는 호출자별 독립 커서를 포함하여, 응답 시퀀스로 폴링 및 재시도 흐름을 모델링합니다.
  • 응답을 고정 시간만큼 지연시키거나, random, normal, jitter로 요청마다 다른 지연 시간을 지정합니다.
  • 동적 데이터용 생성기와 함께 경로, 쿼리, 헤더 및 본문 값으로 응답을 구성합니다.
  • @expect로 호출 횟수를 검증하거나 RestermScript에서 수신된 트래픽을 검사합니다.
  • 선택적 TLS와 함께 소스 파일 및 픽스처를 핫 리로드합니다.

하나의 라우트에 두 가지 시나리오:

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

단일 파일 또는 전체 디렉터리를 제공합니다:

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

자세한 내용은 Mock 서버 참조, resterm mock CLI 가이드작동 예제를 참조하세요.

헤드리스

headless 패키지는 TUI와 CLI를 구동하는 동일한 엔진의 공개 Go API입니다. 자체 Go 코드 또는 CI에서 요청, 워크플로우, 어서션, 실행 비교 및 프로파일을 실행하는 데 사용하세요.

직접 러너를 구축하고 싶지 않다면 resterm-runner가 있습니다.

키보드 치트 시트

  • 패널 포커스 및 레이아웃
    • Tab / Shift+Tab: 사이드바, 편집기 및 응답 간 이동.
    • g+r, g+i, g+p: 요청, 편집기 또는 응답으로 이동.
    • g+h / g+l: 가로 크기 조정. 사이드바가 포커스된 경우 사이드바 너비를 변경하고, 그 외에는 편집기/응답 분할을 변경합니다.
    • g+j / g+k: 세로로 쌓인 경우 편집기/응답 높이를 조정하고, 네비게이터에서 분기를 접거나 펼칩니다.
    • g+v / g+s: 응답 패널을 인라인과 세로 레이아웃 간에 전환합니다.
    • g+1, g+2, g+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] 세 가지 단축키만 기억하세요:

  • Ctrl+Enter 요청 보내기
  • Tab / Shift+Tab 패널 전환
  • g+p 응답으로 이동

설치

Linux / macOS (Homebrew)

brew install resterm

[!NOTE] Homebrew 설치는 Homebrew로 업데이트해야 합니다(brew upgrade resterm). 내장된 resterm --update 명령은 GitHub 릴리스 또는 설치 스크립트에서 설치된 바이너리용입니다.

Linux / macOS (Shell script)

[!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 jq, sudo 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

첫 번째 명령은 최신 릴리스가 있는지 보고합니다. 두 번째 명령은 새 릴리스를 다운로드하고 검증한 후 제자리에 설치합니다. Windows에서는 이전 바이너리가 resterm.exe.old로 새 바이너리 옆에 남으며 다음 업데이트 시 정리됩니다.

구성

  • 환경은 요청 디렉터리, 워크스페이스 루트 또는 CWD에서 발견되는 JSON 파일(resterm.env.json)입니다. 파일은 api, app, credentials 등과 같은 명명된 환경 또는 독립 그룹을 정의할 수 있으며, 이들이 결합되어 하나의 환경이 됩니다. 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

클라이언트 자격 증명, 비밀번호 권한 부여 및 PKCE 인증 코드를 지원합니다. 인증 코드 흐름의 경우 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, 연결, TLS, TTFB 및 전송 타이밍을 캡처합니다. Resterm은 초과 시간을 강조하고 스팬을 OpenTelemetry로 내보낼 수 있습니다. 문서: docs/resterm.md#timeline--tracing.

스트리밍(WebSocket 및 SSE)

@websocket@ws 단계와 함께 사용하거나 @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 requests, mocks 또는 both로 선택합니다. 원격 가져오기는 전역 --insecure--proxy 플래그를 따릅니다. 문서: docs/cli.md#import-examples.

SSH 터널

@ssh 프로파일로 배스천 호스트를 통해 HTTP, gRPC, WebSocket 및 SSE 트래픽을 라우팅합니다. 문서: docs/resterm.md#ssh-tunnels_examples/ssh.http.

Kubernetes 포트 포워딩

@k8s 프로파일로 동일한 개념을 적용하며, 파드, 서비스, 디플로이먼트 또는 스테이트풀셋을 대상으로 합니다. 문서: 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.mdresterm run, 가져오기 도구, 컬렉션 및 기록을 다룹니다.
  • 호환성은 v1에 대한 Resterm의 호환성 보장을 설명합니다.

TUI 내부에서 ?를 누르거나 :help를 실행하세요. 설치된 릴리스의 전체 웹 매뉴얼이 필요하면 :docs를 사용하세요.

라이선스

Apache License 2.0.

카테고리