Crates.io | atac |
lib.rs | atac |
version | 0.18.1 |
source | src |
created_at | 2024-04-15 12:19:57.794247 |
updated_at | 2024-10-27 22:41:16.602702 |
description | Arguably a Terminal API Client. Feature-full, free, open-source, offline and account-less. |
homepage | https://github.com/Julien-cpsn/ATAC |
repository | https://github.com/Julien-cpsn/ATAC |
max_upload_size | |
id | 1209172 |
size | 721,454 |
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.79
Simply use:
cargo install atac --locked
You can use pacman to install:
pacman -S atac
Simply use:
brew tap julien-cpsn/atac
brew install atac
Simply use:
dnf copr enable joxcat/atac
dnf install atac
Pull the image from https://hub.docker.com/repository/docker/juliencaposiena/atac/general
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 whereatac
is located).
[!IMPORTANT] First, make sure your rust version is at least 1.79
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 | :white_check_mark: | :white_check_mark: | :white_check_mark: |
HTTP Client | :white_check_mark: | :white_check_mark: | :white_check_mark: |
Methods | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- GET | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- POST | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- PUT | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- PATCH | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- DELETE | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- HEAD | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- OPTIONS | :white_check_mark: | :white_check_mark: | :white_check_mark: |
Authentication | Partial | :white_check_mark: | :white_check_mark: |
- Basic auth | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- Bearer token | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- JWT, Digest, OAuth1-2, AWS | :x: :soon: | :white_check_mark: | :white_check_mark: |
Headers | :white_check_mark: | :white_check_mark: | :white_check_mark: |
Body | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- Multipart form | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- URL Encoded form | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- File | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- Plain text | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- JSON, XML, HTML, Javascript | :white_check_mark: | :white_check_mark: | :white_check_mark: |
Full response | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- Status code | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- Cookies | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- Headers | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- Duration | :white_check_mark: | :white_check_mark: | :white_check_mark: |
Scripting | :white_check_mark: | Partial | :x: |
- Pre-request script | :white_check_mark: | :x: | :x: |
- Post-request script | :white_check_mark: | :white_check_mark: | :x: |
Asynchronous requests | :white_check_mark: | :white_check_mark: | :white_check_mark: |
Per-request settings | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- Use proxy | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- Allow redirects | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- Store cookies | :white_check_mark: | :white_check_mark: | :white_check_mark: |
Export to other languages | :x: :soon: | :white_check_mark: | :x: |
WebSocket Client | :x: :soon: | :white_check_mark: | :white_check_mark: |
GraphQL | :x: :soon: | :white_check_mark: | :white_check_mark: |
gRPC | :x: :soon: | :white_check_mark: | :white_check_mark: |
MQTT | :x: :soon: | :white_check_mark: | :x: |
Free | :white_check_mark: | Depends | Depends |
Lightweight, fast and efficient | :white_check_mark: | :x: | :x: |
Data storage | Your own committable, readable and versioned files (JSON or YAML) | Tied to your account | Tied to your account |
Offline | :white_check_mark: | :x: | :x: |
Real-time collaboration | :x: (not planned) | :white_check_mark: | :white_check_mark: |
Full command line usage | :white_check_mark: | Partial | :w: |
Environment files and variables | :white_check_mark: (committable, readable and versioned) | :white_check_mark: | :white_check_mark: |
View options | :white_check_mark: | :white_check_mark: | :white_check_mark: |
Global configuration file | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- HTTP/HTTPS Proxy | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- Disable CORS | :white_check_mark: | :x: | :x: |
- Toggle syntax highlighting | :white_check_mark: | :x: | :x: |
Postman v2.1.0 import | :white_check_mark: | :white_check_mark: | :white_check_mark: |
OpenAPI import | :x: :soon: | :white_check_mark: | :white_check_mark: |
Themes | :white_check_mark: | :white_check_mark: | :white_check_mark: |
To add
To improve
To fix
Here is the documentation: https://atac.julien-cpsn.com/
If you think something is missing, please contribute!
You can read more about it here: https://github.com/Julien-cpsn/ATAC/releases/tag/v0.14.0
Thanks to @NachoNievaG you can have an ATAC floating window inside your nvim https://github.com/NachoNievaG/atac.nvim
You can read more about it here: https://github.com/Julien-cpsn/ATAC/releases/tag/v0.18.0
(List from here)
Category / Library | Version | Reason |
---|---|---|
Request | ||
reqwest & reqwest cookie store | 0.12.5 & 0.8.0 | Send requests |
TUI | ||
ratatui | 0.28.0 | Terminal UI framework |
crokey | 1.1.0 | Used to parse, use key bindings files and some utilities |
tui-big-text | 0.6.0 | Display big texts. Only used for displaying ATAC in the homepage. |
tui-tree-widget | 0.22.0 | Display tree-like lists. Used for displaying the collections. |
tui-textarea | 0.6.1 | Text area that handle a lot of features. Used for editing request body. |
throbber-widgets-tui | 0.6.0 | Display loading UI elements. Used when request is pending. |
ratatui-image | 1.0.5 | Display response images. |
image | 0.25.2 | Decode images. |
Main functionalities | ||
syntect | 5.2.0 | Syntax highlighting |
serde (serde_json, serde-yaml) | 1.0.213 (1.0.132, 0.9.34) | Serialize & Deserialize application data into files |
jsonxf | 1.1.1 | Pretty print JSON |
toml | 0.8.19 | Serialize & Deserialize application config files |
boa_engine | 0.19.1 | Create Javascript runtimes. Used for pre and post request scripts |
My fork of postman_collection | 0.2.3 | Deserialize Postman collection files |
curl-parser | 0.3.1 | Parse cURL request files |
clap | 4.5.20 | Command Line Argument Parser |
directories | 5.0.1 | Use system files |
arboard | 3.4.1 | Copy response body to clipboard |
Async | ||
tokio | 1.41.0 | Handle asynchronous requests |
parking_lot | 0.12.3 | Smaller, faster and more flexible implementation of RwLock and Mutex. Used everywhere. |
Utils | ||
strum | 0.26.3 | Enum facilities |
lazy_static | 1.5.0 | Allows for more flexible constants. Mainly used for accessing CLI arguments everywhere |
rayon | 1.10.0 | Allows the usage of multiple threads in for loops |
nestify | 0.3.3 | Used to nest struct definitions |
walkdir | 2.5.0 | Recursively retrieve files |
snailquote | 0.3.1 | Unescape string |
indexmap | 2.6.0 | Ordered hashmap. Used in environments to preserve files' values order |
thiserror | 1.0.65 | Create custom errors |
anyhow | 1.0.91 | Result that can contain any error |
clap-verbosity-flag | 2.2.2 | Add verbosity flag to the CLI |
clap_complete | 4.5.35 | Generate completion file |
clap_mangen | 0.2.24 | Generate man pages |
base64 | 0.22.1 | Encode auth. |
regex | 1.11.1 | Regex. Using for parsing requests URL |
chrono | 0.4.38 | Time utils |
uuid | 1.11.0 | UUID generator |
Tracing/Log | ||
tracing | 0.1.40 | Log events |
tracing-subscriber | 0.3.18 | Utilities for implementing and composing tracing subscribers |
tracing-log | 0.2.0 | Log crate compatibility for tracing |
reqwest-tracing | 0.5.3 | Opentracing middleware implementation for reqwest-middleware |
reqwest-middleware | 0.3.3 | Wrapper around reqwest to allow for client middleware chains |
The binary file size goes from ~5 MB to ~12 MB depending on the platform. I try to keep it as small as possible, unfortunately for me, I bundle a Javascript runtime.
The MIT license for this project can be seen here