cielago

Like Postman but it actually works. Terminal native HTTP request builder with OpenAPI support.
Features
- OpenAPI 3.x import — turn a spec (file or URL) into a collection with requests, params, example bodies, servers, and docs prefilled.
- Ad-hoc collections — no spec needed; paste a full URL and it's split into server, path, and query params for you.
- Vim-style TUI — three panes (requests / editor / response),
j/knavigation,:command line,/incremental search. - Variables —
{{name}}from the collection, plus dynamic ones like{{uuid}},{{timestamp}},{{randomInt(1,100)}}. - Auth per collection — a fixed bearer token, an API key in a header of your choice, or the OAuth2 client-credentials flow (tokens cached in memory only). Press
Ato configure. - Secrets from your shell — any secret field (bearer token, API key, OAuth client secret) can be a
$(…)command, resolved at send time, e.g.$(op read "op://vault/item/field"). - Server switcher — swap base URLs so requests stay portable across envs.
- Syntax highlighting — JSON and XML in both request bodies and responses.
- Plain JSON storage — collections live in
~/.config/cielago/collections/.
Installation
Homebrew
brew install stevedylandev/tap/cielago
Cargo
cargo install cielago
Prebuilt binaries
Grab a binary for your platform from the releases page, or run the install script:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/stevedylandev/cielago/releases/latest/download/cielago-installer.sh | sh
From source
cargo install --path .
Or build without installing:
cargo build --release
./target/release/cielago --help
Usage
cielago # open the last-used collection in the TUI
cielago open [name] # open a specific collection
cielago import <spec|url> # import an OpenAPI 3.x spec
cielago new <name> [--server u] # create an empty collection and open it
cielago list [-l] # list collections (-l adds counts + paths)
cielago info <name> # servers, counts, auth, groups
cielago edit <name> # edit the collection JSON in $EDITOR
cielago rename <name> <new> # rename a collection and its file
cielago delete <name> [-f] # delete a collection
cielago path <name> # print the collection's JSON path
<name> matches loosely — Some API, some api, and some-api all resolve to the same collection.
Keys
| Key | Action |
|---|---|
1/2/3, Tab |
Focus sidebar / editor / response |
z |
Maximize focused pane |
[ / ] |
Previous / next editor tab |
Enter |
Send request |
/ |
Search requests |
E / A |
Servers / OAuth config |
: |
Command line (:w, :q, :new, :open, …) |
? |
Help |
| Context | Keys |
|---|---|
| Sidebar | n/r/d/y new/rename/delete/duplicate, t cycle label source |
| Tables | space toggle row, i edit, a add, d delete, m cycle method, p edit URL |
| Body/response | e open in $EDITOR, j/k/d/u/g/G scroll |
Press ? in the TUI for the full list.
Development
cargo build
cargo test
cargo clippy --all-targets
cargo fmt