Open Source · Vim-Inspired · Built with Go

The API Client your
Terminal deserves

A lightweight, Vim-inspired TUI for instant OpenAPI discovery and testing. Stay in the terminal. Stay in the flow.

$
brew install 4nddrs/tap/snag
MIT License
macOS - Linux - Windows
Zero heavy deps
OpenAPI 3.x

// Interactive Demo

See it in action

Three-panel TUI — browse grouped endpoints, inspect requests, read responses.

⚡ SNAG Example APIs for SNAG v1.0.1
■ Endpoints
AUTH
> POST /auth/login
> POST /auth/logout
> GET /auth/me
CATEGORIES
> GET /categories
> POST /categories
> GET /categories/{category_id}
> PUT /categories/{category_id}
> DELETE /categories/{category_id}
COUPONS
> GET /coupons
> POST /coupons
> GET /coupons/{code}
> DELETE /coupons/{coupon_id}
> PATCH /coupons/{coupon_id}/deactivate
ORDERS
> GET /orders
> POST /orders
PRODUCTS
> GET /products
> POST /products
> GET /products/{product_id}
> PATCH /products/{product_id}/stock
REVIEWS
> GET /reviews
> POST /reviews
> GET /reviews/{review_id}
> PUT /reviews/{review_id}
> DELETE /reviews/{review_id}
SYSTEM
> GET /health
> GET /stats
> DELETE /stats/reset
TAGS
> GET /tags
> POST /tags
> PUT /tags/{tag_id}
> DELETE /tags/{tag_id}
USERS
> GET /users
✏ Request
GET /users
Get all users
No parameters required
🔍 Response 75%
{
"age" : 30 ,
"email" : "alice@example.com" ,
"id" : 1 ,
"name" : "Alice Johnson"
} ,
{
"age" : 25 ,
"email" : "bob@example.com" ,
"id" : 2 ,
"name" : "Bob Smith"
} ,
{
"age" : 35 ,
"email" : "carol@example.com" ,
"id" : 3 ,
"name" : "Carol White"
} ,
{
"age" : 21 ,
"email" : "4nddrs@gmail.com" ,
"id" : 4 ,
"name" : "andres"
}
j/kscroll · d/upage · g/Gtop/bottom · ycopy · tabswitch panel 200 5ms

// Why SNAG

Built for the terminal-native

No browser tabs. No heavy GUI. Pure keyboard-driven API exploration.

Navigation

Vim-Style Navigation

Your hands never leave the home row. Navigate endpoints with j/k, select with , and jump to any section with Vim motions you already know.

  • j / k Navigate up & down
  • / Search a endpoint
  • tab Switch between sections
  • e Edit the prompt
  • r Execute request
  • q Close / quit
"Keep your hands on the home row."
Compatibility

Universal OpenAPI

Feed it any OpenAPI 3.x spec — local file or remote URL — generated from Python, Go, Node, Rust, or any other stack. SNAG parses it instantly and surfaces every endpoint, schema, and parameter.

  • FastAPI Python 🐍
  • Echo Go 🔵
  • Express Node.js 🟩
  • Axum Rust 🦀
"One tool. Every backend."
DX

No-JSON Editing

Forget crafting JSON payloads by hand. SNAG introspects your OpenAPI schema and renders interactive prompts for every parameter — the right type, validated on the spot.

  • path Auto-filled from spec
  • query Type-safe input prompts
  • body Field-by-field editing
  • headers Persistent across requests
"Edit parameters through prompts, not manual JSON syntax."

// Under the Hood

Technical Specs

Engineered for performance and simplicity.

🛠️
Built with Go
+ Bubble Tea

Compiled, single binary. No runtime required. Drop it in your PATH and go.

Ultra-lightweight
Zero heavy deps

No Electron, no Node, no Python. A single small binary that starts in milliseconds.

🖥
Cross-platform
macOS · Windows · Linux

Tested on macOS, Windows and major Linux distros. Install via Homebrew, Scoop or build from source.

📄
OpenAPI 3.x
Any generator

Supports JSON and YAML specs from FastAPI, Swagger, Redoc, and any compliant generator.

$ Installation
🍺 Homebrew macOS / Linux
$ brew install 4nddrs/tap/snag
🍨 Scoop Windows
$ scoop bucket add 4nddrs https://github.com/4nddrs/scoop-bucket
$ scoop install snag
💨 Go All platforms
$ go install github.com/4nddrs/snag@latest
🔧 From Source Go 1.21+
$ git clone github.com/4nddrs/snag
$ cd snag && go build .
$ ./snag <https://api.url/>