A terminal-based REST API client inspired by lazygit.
- Beautiful TUI - Clean interface using Bubbletea + Lipgloss
- Keyboard-Driven - Navigate with numbers 1-5, vim-style j/k, and arrow keys
- Fast & Lightweight - Built with Go, instant startup
- Full HTTP Support - GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
- Multiple Content Types - JSON, XML, plain text, form-urlencoded, multipart
- Auto-Formatting - Automatic JSON pretty-printing
- Status Indicators - Color-coded HTTP status codes
# Build and run
go build -o postty
./postty| Key | Action |
|---|---|
Tab |
Cycle to next pane |
Shift+Tab |
Cycle to previous pane |
1 |
Jump to URL pane (from Method/Header/Response) |
2 |
Jump to Method pane (from Method/Header/Response) |
3 |
Jump to Body pane (from Method/Header/Response) |
4 |
Jump to Content-Type pane (from Method/Header/Response) |
5 |
Jump to Response pane (from Method/Header/Response) |
↑/↓ or j/k |
Navigate lists (in Method/Content-Type) / Scroll (in Result) |
PgUp/PgDown |
Scroll half page (in Result pane) |
Home/End or g/G |
Jump to top/bottom (in Result pane) |
Enter |
Send request (or new line in Body pane) |
Alt+Enter |
Send request from Body pane |
Esc |
Quit (from any pane) |
q |
Quit (from Method/Header/Response only) |
Ctrl+C |
Quit (from any pane) |
Notes:
- When typing in URL or Body panes, all characters (including q and 1-5) are typed into the input. Use
Tabto navigate between panes while in text input fields. - When viewing large responses in the Result pane, use arrow keys or j/k to scroll through the content
- In the Body pane, press
Enterfor new lines andAlt+Enterto send the request
- Press
1orTabto focus URL pane (default pane on startup) - Type:
https://jsonplaceholder.typicode.com/posts/1 - Press
Enter - View formatted response in Result pane
- Press
Tab→ Navigate to Method pane - Select POST with
↓ - Press
Tabor1→ Focus URL pane - Enter URL:
https://jsonplaceholder.typicode.com/posts - Press
Tabtwice → Navigate to Body pane - Enter body:
{ "title": "Test", "body": "Hello", "userId": 1 } - Press
Tab→ Navigate to Content-Type - Ensure
application/jsonis selected - Press
Enterto send
# Run tests
go test -v
# Run with coverage
go test -v -coverprofile=coverage.out
go tool cover -html=coverage.out
# Run integration tests
go test -tags=integration -v
# Build
go build -o postty
# Install to $GOPATH/bin
go install
# Install to custom location
go build -o /usr/local/bin/postty