| Crates.io | atac |
| lib.rs | atac |
| version | 0.22.0 |
| created_at | 2024-04-15 12:19:57.794247+00 |
| updated_at | 2025-09-12 21:53:20.892665+00 |
| 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 | 946,907 |

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.82
Simply use:
cargo install atac --locked
You can use pacman to install:
pacman -S atac
Simply use:
brew install atac
Simply use:
scoop install atac
Simply use:
dnf copr enable joxcat/atac
dnf install atac
Pull the image from https://hub.docker.com/r/juliencaposiena/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 whereatacis located).
[!IMPORTANT] First, make sure your rust version is at least 1.82
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: |
| - OPTIONS | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| - HEAD | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| - TRACE | :white_check_mark: | :x: | :x: |
| - CONNECT | :white_check_mark: | :x: | :x: |
| 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 (HTTP, cURL, PHP Guzzle, NodeJS Axios, Rust Reqwest) | :white_check_mark: | :white_check_mark: | :x: |
| WebSocket Client | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| Message | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| - Text | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| - Binary | :white_check_mark: | :x: | :x: |
| - Ping | :white_check_mark: | :x: | :x: |
| - Pong | :white_check_mark: | :x: | :x: |
| - Close | :white_check_mark: | :x: | :x: |
| 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, versioned and retro-compatible 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 | :x: |
| 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 and Postman environment import | :white_check_mark: | :white_check_mark: | :white_check_mark: / :x: |
| OpenAPI import | :white_check_mark: (AI generated, prone to bugs) | :white_check_mark: | :white_check_mark: |
| cURL import | :white_check_mark: (AI generated, prone to bugs) | :white_check_mark: | :white_check_mark: |
| Themes | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| Remappable key bindings | :white_check_mark: | :white_check_mark: | :white_check_mark: |
To add
To improve
To add
To improve
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 | Comment |
|---|---|---|
| Request | ||
| reqwest | 0.12.23 | Send requests |
| reqwest-middleware | 0.4.2 | Wrapper around reqwest to allow for client middleware chains |
| reqwest-websocket | 0.5.1 | Wrapper around reqwest to handle web-socket requests |
| TUI | ||
| ratatui | 0.29.0 | Terminal UI framework |
| crokey | 1.1.2 | Used to parse, use key bindings files and some utilities |
| tui-big-text | 0.7.1 | Display big texts. Only used for displaying ATAC in the homepage. |
| tui-tree-widget | 0.23.1 | Display tree-like lists. Used for displaying the collections. |
| tui-textarea | 0.7.0 | Text area that handle a lot of features. Used for editing request body. |
| throbber-widgets-tui | 0.8.0 | Display loading UI elements. Used when request is pending. |
| ratatui-image | 8.0.1 | Display response images. |
| image | 0.25.8 | Decode images. |
| Main functionalities | ||
| syntect | 5.2.0 | Syntax highlighting |
| serde | 1.0.219 | Serialize & Deserialize application data into files |
| jsonxf | 1.1.1 | Pretty print JSON |
| toml | 0.9.5 | Serialize & Deserialize application config files |
| boa_engine | 0.20.0 | Create Javascript runtimes. Used for pre and post request scripts |
| parse_postman_collection | 0.2.3 | Deserialize Postman collection files |
| curl-parser | 0.6.0 | Parse cURL request files |
| openapiv3 | 2.2.0 | Parse OpenAPI spec files |
| clap | 4.5 | Command Line Argument Parser |
| directories | 6.0.0 | Use system files |
| arboard | 3.6.1 | Copy response body to clipboard |
| Async | ||
| tokio | 1.47.1 | Handle asynchronous requests |
| parking_lot | 0.12.4 | Smaller, faster and more flexible implementation of RwLock and Mutex. Used everywhere. |
| Utils | ||
| strum | 0.27.2 | Enum facilities |
| lazy_static | 1.5.0 | Allows for more flexible constants. Mainly used for accessing CLI arguments everywhere |
| nestify | 0.3.3 | Used to nest struct definitions |
| walkdir | 2.5.0 | Recursively retrieve files |
| snailquote | 0.3.1 | Unescape string |
| indexmap | 2.11.0 | Ordered hashmap. Used in environments to preserve files' values order |
| rayon | 1.11.0 | Allows the usage of multiple threads in for loops |
| thiserror | 2.0.16 | Create custom errors |
| anyhow | 1.0.99 | Result that can contain any error |
| clap-verbosity-flag | 3.0.4 | Add verbosity flag to the CLI |
| clap_complete | 4.5 | Generate completion file |
| clap_mangen | 0.2 | Generate man pages |
| regex | 1.11.2 | Regex. Using for parsing requests URL |
| chrono | 0.4.41 | Time utils |
| uuid | 1.18.0 | UUID generator |
| base64 | 0.22.1 | Decode base64 strings |
| textwrap | 0.16.2 | Wrap text to max length |
| Tracing | ||
| tracing | 0.1.41 | Log events |
| tracing-subscriber | 0.3.20 | Utilities for implementing and composing tracing subscribers |
| tracing-log | 0.2.0 | Log crate compatibility for tracing |
| reqwest-tracing | 0.5.8 | Opentracing middleware implementation for reqwest-middleware |
The binary file size goes from ~5 MB to ~15 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