- Description
- How to install
- Features
- Documentation
- Technical precisions
- Contributors
- Star history
- License
ATAC is Arguably a Terminal API Client. It is based on well-known clients such as Postman, Insomnia, or even Bruno, but inside your terminal without any specific graphical environment needed.
The philosophy of ATAC is to be free, account-less, and offline for now and forever.
Important
First, make sure your rust version is at least 1.76
Simply use:
cargo install atac
You can use your favorite AUR helper to install. For example,
paru -S atac
Simply use:
brew tap julien-cpsn/atac
brew install atac
The binaries from the latest release can be found here
Important
Remember to run it from a terminal. For example, you can add the binary into your PATH. You won't be able to run it like other graphical applications since it needs CLI arguments.
Tip
Note for macOS users. After downloading the binary you may need to run the command
sudo xattr -rd com.apple.quarantine ~/bin/atac
(modify to reflect the path where atac
is located).
Important
First, make sure your rust version is at least 1.76
Simply clone the repository and use:
cargo run
cargo run -- -h
Tip
Build the latest release
cargo build --release
Features | ATAC | Postman | Insomnia |
---|---|---|---|
Manage collections & requests | ✅ | ✅ | ✅ |
HTTP Client | ✅ | ✅ | ✅ |
Methods | ✅ | ✅ | ✅ |
- GET | ✅ | ✅ | ✅ |
- POST | ✅ | ✅ | ✅ |
- PUT | ✅ | ✅ | ✅ |
- PATCH | ✅ | ✅ | ✅ |
- DELETE | ✅ | ✅ | ✅ |
- HEAD | ✅ | ✅ | ✅ |
- OPTIONS | ✅ | ✅ | ✅ |
Authentication | Partial | ✅ | ✅ |
- Basic auth | ✅ | ✅ | ✅ |
- Bearer token | ✅ | ✅ | ✅ |
- JWT, Digest, OAuth1-2, AWS | ❌ 🔜 | ✅ | ✅ |
Headers | ✅ | ✅ | ✅ |
Body | ✅ | ✅ | ✅ |
- Multipart form | ✅ | ✅ | ✅ |
- URL Encoded form | ✅ | ✅ | ✅ |
- File | ✅ | ✅ | ✅ |
- Plain text | ✅ | ✅ | ✅ |
- JSON, XML, HTML, Javascript | ✅ | ✅ | ✅ |
Full response | ✅ | ✅ | ✅ |
- Status code | ✅ | ✅ | ✅ |
- Cookies | ✅ | ✅ | ✅ |
- Headers | ✅ | ✅ | ✅ |
- Duration | ✅ | ✅ | ✅ |
Scripting | ❌ 🔜 | Partial | ❌ |
- Pre-request script | ❌ 🔜 | ❌ | ❌ |
- Post-request script | ❌ 🔜 | ✅ | ❌ |
Asynchronous requests | ✅ | ✅ | ✅ |
Per-request settings | ✅ | ✅ | ✅ |
- Use proxy | ✅ | ✅ | ✅ |
- Allow redirects | ✅ | ✅ | ✅ |
- Store cookies | ✅ | ✅ | ✅ |
WebSocket Client | ❌ 🔜 | ✅ | ✅ |
GraphQL | ❌ 🔜 | ✅ | ✅ |
gRPC | ❌ 🔜 | ✅ | ✅ |
MQTT | ❌ 🔜 | ✅ | ❌ |
Free | ✅ | Depends | Depends |
Lightweight, fast and efficient | ✅ | ❌ | ❌ |
Data storage | Your own committable, readable and versioned files | Tied to your account | Tied to your account |
Offline | ✅ | ❌ | ❌ |
Real-time collaboration | ❌ (not planned) | ✅ | ✅ |
Environment files and variables | ✅ (committable, readable and versioned) | ✅ | ✅ |
View options | ✅ | ✅ | ✅ |
Global configuration file | ✅ | ✅ | ✅ |
- HTTP/HTTPS Proxy | ✅ | ✅ | ✅ |
- Disable CORS | ✅ | ❌ | ❌ |
- Toggle syntax highlighting | ✅ | ❌ | ❌ |
Postman v2.1.0 import | ✅ | ✅ | ✅ |
OpenAPI import | ❌ 🔜 | ✅ | ✅ |
-
To add
- Create a repo wiki
- Document whole code
- Copy response content to clipboard
-
To improve
- Sign binary
-
To fix
- Query parameters bug
-
To add
- Command line usage (send requests, add new requests)
- keymap configuration (via a config file)
- Request body syntax highlighting
- Export a request to other code formats (curl, PHP, JS, Rust, ...)
- Pre and post-request script (javascript v8 engine)
- OpenAPI & Insomnia import
-
To improve
- Editing cookies
- Auto-completion on env file variables
- Manage multipart Content-type header (auto-generated for now)
- To add
- WebSocket requests
- Maybe GraphQL requests
- Maybe MQTT requests
- Maybe gRPC requests
- Base URL property on collections
- YAML support for collections file format
Note
Documentation will soon be published in the wiki section
- Console Host
- Windows 11 (Pro)
- WSL2 Debian
- Windows 10 (Pro)
- Windows 8.1 (N)
- Ubuntu Desktop Terminal
- Ubuntu 17.10
- Pop!_OS 20.04
- (Arch, Manjaro) KDE Konsole
- (Arch, NixOS) Kitty
- Linux Mint
- (OpenSuse) Alacritty
- (Chrome OS) Crostini
(List from here)
Library | Version | Reason |
---|---|---|
reqwest & reqwest cookie store | 0.11.27 & 0.6.0 | Send requests |
ratatui | 0.26.1 | Terminal UI framework |
crossterm | 0.27.0 | Terminal Backend |
tui-big-text | 0.4.2 | Display big texts. Only used for displaying ATAC in the homepage. |
tui-tree-widget | 0.19.0 | Display tree-like lists. Used for displaying the collections. |
tui-textarea | 0.5.0 | Text area that handle a lot of features. Used for editing request body. |
throbber-widgets-tui | 0.4.1 | Display loading UI elements. Used when request is pending. |
syntect | 5.2.0 | Syntax highlighting |
serde & serde_json | 1.0.197 & 1.0.144 | Serialize & Deserialize application data into JSON files |
jsonxf | 0.1.1 | Pretty print JSON |
toml | 0.8.11 | Serialize & Deserialize application config files |
envfile | 0.2.1 | Deserialize application environment files |
My fork of postman_collection | 0.2.1 | Deserialize Postman collection files |
clap | 4.5.0 | Command Line Argument Parser |
tokio | 1.0.0 | Handle asynchronous requests |
strum | 0.26.2 | Enum facilities |
lazy_static | 1.4.0 | Allows for more flexible constants. Mainly used for accessing CLI arguments everywhere |
regex | 1.10.3 | Regex. Using for parsing requests URL |
The binary file size goes from ~4.5 MB to ~7 MB depending on the platform. I try to keep it as small as possible.
- Cargo, Brew - @julien-cpsn
- Arch - @orhun
The MIT license for this project can be seen here