README.md 3.8 K raw
1
# cielago
2
3
![cover](https://files.stevedylan.dev/cielago-demo.jpg)
4
5
Like Postman but it actually works. Terminal native HTTP request builder with OpenAPI support.
6
7
<details>
8
<summary>Video Overview</summary>
9
10
<iframe width="560" height="315" src="https://www.youtube.com/embed/Jv6O-_WH3N8?si=Os5WNOyLasV69oEC" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
11
12
</details>
13
14
## Features
15
16
- **OpenAPI 3.x import** — turn a spec (file or URL) into a collection with requests, params, example bodies, servers, and docs prefilled.
17
- **Ad-hoc collections** — no spec needed; paste a full URL and it's split into server, path, and query params for you.
18
- **Vim-style TUI** — three panes (requests / editor / response), `j`/`k` navigation, `:` command line, `/` incremental search.
19
- **Variables** — `{{name}}` from the collection, plus dynamic ones like `{{uuid}}`, `{{timestamp}}`, `{{randomInt(1,100)}}`.
20
- **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 `A` to configure.
21
- **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")`.
22
- **Server switcher** — swap base URLs so requests stay portable across envs.
23
- **Syntax highlighting** — JSON and XML in both request bodies and responses.
24
- **Plain JSON storage** — collections live in `~/.config/cielago/collections/`.
25
26
## Installation
27
28
### Homebrew
29
30
```sh
31
brew install stevedylandev/tap/cielago
32
```
33
34
### Cargo 
35
36
```bash
37
cargo install cielago
38
```
39
40
### Prebuilt binaries
41
42
Grab a binary for your platform from the [releases page](https://github.com/stevedylandev/cielago/releases), or run the install script:
43
44
```sh
45
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/stevedylandev/cielago/releases/latest/download/cielago-installer.sh | sh
46
```
47
48
### From source
49
50
```sh
51
cargo install --path .
52
```
53
54
Or build without installing:
55
56
```sh
57
cargo build --release
58
./target/release/cielago --help
59
```
60
61
## Usage
62
63
```sh
64
cielago                          # open the last-used collection in the TUI
65
cielago open [name]              # open a specific collection
66
cielago import <spec|url>        # import an OpenAPI 3.x spec
67
cielago new <name> [--server u]  # create an empty collection and open it
68
cielago list [-l]                # list collections (-l adds counts + paths)
69
cielago info <name>              # servers, counts, auth, groups
70
cielago edit <name>              # edit the collection JSON in $EDITOR
71
cielago rename <name> <new>      # rename a collection and its file
72
cielago delete <name> [-f]       # delete a collection
73
cielago path <name>              # print the collection's JSON path
74
```
75
76
`<name>` matches loosely — `Some API`, `some api`, and `some-api` all resolve to the same collection.
77
78
### Keys
79
80
| Key | Action |
81
|---|---|
82
| `1`/`2`/`3`, `Tab` | Focus sidebar / editor / response |
83
| `z` | Maximize focused pane |
84
| `[` / `]` | Previous / next editor tab |
85
| `Enter` | Send request |
86
| `/` | Search requests |
87
| `E` / `A` | Servers / OAuth config |
88
| `:` | Command line (`:w`, `:q`, `:new`, `:open`, …) |
89
| `?` | Help |
90
91
| Context | Keys |
92
|---|---|
93
| Sidebar | `n`/`r`/`d`/`y` new/rename/delete/duplicate, `t` cycle label source |
94
| Tables | `space` toggle row, `i` edit, `a` add, `d` delete, `m` cycle method, `p` edit URL |
95
| Body/response | `e` open in `$EDITOR`, `j`/`k`/`d`/`u`/`g`/`G` scroll |
96
97
Press `?` in the TUI for the full list.
98
99
## Development
100
101
```sh
102
cargo build
103
cargo test
104
cargo clippy --all-targets
105
cargo fmt
106
```
107
108
## License
109
110
[MIT](LICENSE)