- Sidebar file browser — collections as a directory tree.
- Tabbed request panel — params, headers, vars, body, auth, info, scripts, options.
- Multiple body types — raw, JSON, form-urlencoded, multipart.
- Auth — Basic, Bearer, API Key, OAuth2 client credentials.
- Syntax-highlighted JSON responses, with streaming for SSE/chunked endpoints.
- Variables from
.env, Brunoenvironments/*.bru, and Postman environment files — closest one wins; switch envs from the URL bar. - Post-response variable extraction — chain requests from extracted tokens, IDs, etc.
- Fuzzy search across every request in your collections.
- Request history with one-key replay.
- Import / export
curl— paste a one-liner in, or copy the current request out. - Save edited requests back to disk; save responses to file.
- Cycle methods with
^T. No mouse, ever. - Single static binary. macOS, Linux, Windows.
a terminal ui
http client._
Browse and send HTTP requests from your terminal without leaving the keyboard.
Reads .http, .bru, .graphql, Postman collections, and OpenAPI specs out of the box.
~/projects · binman
BINMAN
dev
Collection
▼bg-http/
▼bruno/
▼users/
GET get-user.bru
POST create-post.bru
GET list-posts.bru
▼postman/
▶jsonplaceholder.json
▼test/
GET test.http
Request
Params
Headers
Vars
Body
Auth
Info
Scripts
Options
KEYVALUE
KeyValue
Response
Body
Headers
Cookies
Scripts
Trace
// what
// install
macOS · Homebrew
$ brew tap bgunnarsson/binman $ brew install binman
Pre-built binary
# grab from releases $ chmod +x binman-* $ mv binman-* /usr/local/bin/binman
From source · Go 1.22+
$ git clone …/binman.git $ cd binman $ go build -o binman ./cmd/binman
// formats
.http
Plain text. First line is
METHOD URL, headers follow, blank line, then body..bru
Bruno. Native parse of
get { url: … } / headers { … } blocks..graphql
GraphQL. Plain operation files; binman wraps the query in a JSON body and sets
Content-Type automatically..json
Postman. Drop an exported collection in; binman expands it as a tree.
.yaml / .json
OpenAPI 3.x / Swagger 2.x. Detected by content, grouped by tag,
Content-Type added automatically for JSON bodies.// config
Reads
~/.config/binman/config on startup (or $XDG_CONFIG_HOME/binman/config).
HTTP_FILES is required; binman won't start without it.
# ~/.config/binman/config
HTTP_FILES = /path/to/your/collections
// env
Drop
.env files anywhere in your tree. binman walks up from the request file to the root; the closest one wins. Use .env.staging, .env.production etc. to switch from the URL bar. Bruno environments/*.bru and *.postman_environment.json files are picked up automatically and appear in the same dropdown.
collections/
.env ← applies to everything below
cms/
.env.staging ← labelled "staging"
delivery/
.env ← overrides parent for this dir
get.http ← picks up the closest .env
// keys
^JSend request
EscFocus sidebar
^TCycle HTTP method
TabCycle focus through panels
^SSave
EnterOpen file / expand dir
^YCopy as cURL
^FFind
^EEdit selected env file
^HToggle history
[ ]Prev / next tab
^CCancel / quit
^QQuit