Julien-cpsn
ATAC
Rust

A simple API client (postman like) in your terminal

Last updated Jul 7, 2026
3.7k
Stars
130
Forks
19
Issues
+9
Stars/day
Attention Score
87
Language breakdown
Rust 99.9%
Dockerfile 0.1%
โ–ธ Files click to expand
README

ATAC โš”๐Ÿ“ฉ ===

Rust License: MIT GitHub Release

Demo Animation

Table Of Contents

* Install with cargo * Install with Homebrew * Install with Scoop * Install from Arch * Install from Fedora copr * Docker package * Binary * Compile by yourself * Current * TODO v1.0.0 * TODO v2.0.0 * Vim key-bindings * NeoVim integration * Themes * Tested on * Dependencies * Binary size * Maintainers * Packagers

Description

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.

How to install

Packaging status

crates.io package

Install with cargo

[!IMPORTANT]
First, make sure your rust version is at least 1.82

Simply use:

cargo install atac --locked

Arch package

Install from Arch

You can use pacman to install:

pacman -S atac

Homebrew package

Install with Homebrew

Simply use:

brew install atac

Scoop package

Install with Scoop

Simply use:

scoop install atac

Fedora copr Release

Install from Fedora copr

Simply use:

dnf copr enable joxcat/atac
dnf install atac

Docker Image Version

Docker package

Pull the image from https://hub.docker.com/r/juliencaposiena/atac

GitHub Release

Binary

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).

Compile by yourself

[!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

Current

| Features | ATAC | Postman | Insomnia | |--------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|----------------------|--------------------------| | Manage collections & requests | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | HTTP Client | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | Methods | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - GET | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - POST | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - PUT | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - PATCH | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - DELETE | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - OPTIONS | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - HEAD | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - TRACE | :whitecheckmark: | :x: | :x: | | - CONNECT | :whitecheckmark: | :x: | :x: | | Authentication | Partial | :whitecheckmark: | :whitecheckmark: | | - Basic auth | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - Bearer token | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - Digest | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - JWT | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - OAuth1-2, AWS | :x: :soon: | :whitecheckmark: | :whitecheckmark: | | Headers | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | Body | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - Multipart form | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - URL Encoded form | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - File | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - Plain text | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - JSON, XML, HTML, Javascript | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | Full response | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - Status code | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - Cookies | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - Headers | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - Duration | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | Scripting | :whitecheckmark: | Partial | :x: | | - Pre-request script | :whitecheckmark: | :x: | :x: | | - Post-request script | :whitecheckmark: | :whitecheckmark: | :x: | | Asynchronous requests | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | Per-request settings | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - Use proxy | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - Allow redirects | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - Store cookies | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | Export to other languages (HTTP, cURL, PHP Guzzle, NodeJS Axios, Rust Reqwest) | :whitecheckmark: | :whitecheckmark: | :x: | | WebSocket Client | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | Message | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - Text | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - Binary | :whitecheckmark: | :x: | :x: | | - Ping | :whitecheckmark: | :x: | :x: | | - Pong | :whitecheckmark: | :x: | :x: | | - Close | :whitecheckmark: | :x: | :x: | | GraphQL | :x: :soon: | :whitecheckmark: | :whitecheckmark: | | gRPC | :x: :soon: | :whitecheckmark: | :whitecheckmark: | | MQTT | :x: :soon: | :whitecheckmark: | :x: | | Free | :whitecheckmark: | Depends | Depends | | Lightweight, fast and efficient | :whitecheckmark: | :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 | :whitecheckmark: | :x: | :x: | | Real-time collaboration | :x: (not planned) | :whitecheckmark: | :whitecheckmark: | | Full command line usage | :whitecheckmark: | Partial | :x: | | Environment files and variables | :whitecheckmark: (committable, readable and versioned) | :whitecheckmark: | :whitecheckmark: | | View options | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | Global configuration file | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - HTTP/HTTPS Proxy | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - Toggle syntax highlighting | :whitecheckmark: | :x: | :x: | | - Save responses | :whitecheckmark: | :question: | :question: | | Import from other file formats | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | - Postman v2.1.0 and Postman environment import | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: / :x: | | - OpenAPI import | :whitecheckmark: (AI generated, prone to bugs) | :whitecheckmark: | :whitecheckmark: | | - cURL import | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | Themes | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: | | Remappable key bindings | :whitecheckmark: | :whitecheckmark: | :whitecheckmark: |

TODO v1.0.0

  • To add
- Individual request documentation in the TUI (markdown) - Insomnia import
  • To improve
- Editing cookies - Manage multipart Content-type header (auto-generated for now) https://github.com/seanmonstar/reqwest/issues/2259

TODO v2.0.0

  • To add
- Maybe GraphQL requests - Maybe MQTT requests - Maybe gRPC requests
  • To improve
- Auto-completion on env file variables

Ideas (will think about it later)

  • Base URL property and authorization on collections
  • VScode plugin to see and send requests

Documentation

Here is the documentation: https://atac.julien-cpsn.com/

If you think something is missing, please contribute!

Others

Vim key-bindings

You can read more about it here: https://github.com/Julien-cpsn/ATAC/releases/tag/v0.14.0

NeoVim integration

Thanks to @NachoNievaG you can have an ATAC floating window inside your nvim https://github.com/NachoNievaG/atac.nvim

Themes

You can read more about it here: https://github.com/Julien-cpsn/ATAC/releases/tag/v0.18.0

Technical precisions

Tested on

  • Console Host
- Windows 11 (Pro) - WSL2 Debian 12 - Windows 10 (Pro) - Windows 8.1 (N)
  • Ubuntu Desktop Terminal
- Ubuntu 23.04 64-bit - Ubuntu 17.10 - Pop!_OS 20.04
  • (Arch, Manjaro) KDE Konsole
  • (Arch, NixOS) Kitty
  • Linux Mint
  • (OpenSuse) Alacritty
  • (Chrome OS) Crostini
  • Apple
- macOS Monterey 12.7.1 (Intel-Chip) - macOS Sonama 14.4 (M1 Max, Apple Silicon-Chip)

(List from here)

Dependencies

| Category / Library | Version | Comment | |----------------------------------------------------------------------------------|-------------|-----------------------------------------------------------------------------------------------------------| | Request | | | | reqwest | 0.13.2 | Send requests | | reqwest-middleware | 0.5.1 | Wrapper around reqwest to allow for client middleware chains | | reqwest-websocket | 0.6.0 | Wrapper around reqwest to handle web-socket requests | | TUI | | | | ratatui | 0.30.0 | Terminal UI framework | | crokey | 1.4.0 | Used to parse, use key bindings files and some utilities | | tui-big-text | 0.8.2 | Display big texts. Only used for displaying ATAC in the homepage. | | tui-tree-widget | 0.24.0 | Display tree-like lists. Used for displaying the collections. | | tui-scrollview | 0.6.2 | Display scrollable panels | | edtui | 0.11.1 | Text area that handle a lot of features. Used for editing request URL, body, messages, payloads, scripts. | | throbber-widgets-tui | 0.10.0 | Display loading UI elements. Used when request is pending. | | ratatui-image | 10.0.5 | Display response images. | | image | 0.25.9 | Decode images. | | Main functionalities | | | | syntect | 5.3.0 | Syntax highlighting | | serde | 1.0.228 | Serialize & Deserialize application data into files | | jsonxf | 1.1.1 | Pretty print JSON | | toml | 0.9.11 | Serialize & Deserialize application config files | | boaengine | 0.21.0 | Create Javascript runtimes. Used for pre and post request scripts | | parsepostman_collection | 0.2.4 | Deserialize Postman collection files | | curl-parser | 0.6.0 | Parse cURL request files | | openapiv3 | 2.2.0 | Parse OpenAPI spec files | | clap | 4.5.57 | Command Line Argument Parser | | directories | 6.0.0 | Use system files | | arboard | 3.6.1 | Copy response body to clipboard | | jsonwebtoken | 10.3.0 | Create and encode JSON Web Tokens (JWT) | | digestauth | 0.3.1 | Digest auth | | Async | | | | tokio | 1.49.0 | Handle asynchronous requests | | parking_lot | 0.12.5 | Smaller, faster and more flexible implementation of RwLock and Mutex. Used everywhere. | | Utils | | | | strum | 0.27.2 | Enum facilities | | lazystatic | 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.13.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.18 | Create custom errors | | anyhow | 1.0.101 | Result that can contain any error | | clap-verbosity-flag | 3.0.4 | Add verbosity flag to the CLI | | clapcomplete | 4.5.65 | Generate completion file | | clapmangen | 0.2.31 | Generate man pages | | regex | 1.12.3 | Regex. Using for parsing requests URL | | chrono | 0.4.43 | Time utils | | uuid | 1.20.0 | UUID generator | | base64 | 0.22.1 | Decode base64 strings | | textwrap | 0.16.2 | Wrap text to max length | | Tracing | | | | tracing | 0.1.44 | Log events | | tracing-subscriber | 0.3.22 | Utilities for implementing and composing tracing subscribers | | tracing-log | 0.2.0 | Log crate compatibility for tracing | | reqwest-tracing | 0.7.0 | Opentracing middleware implementation for reqwest-middleware |

Binary size

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.

Contributors

Maintainers

Packagers

Star history

Star History Chart

License

The MIT license for this project can be seen here

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท Julien-cpsn/ATAC ยท Updated daily from GitHub