ProductPromotion
Logo

Rust

made by https://0x3d.site

GitHub - Julien-cpsn/ATAC: A simple API client (postman like) in your terminal
A simple API client (postman like) in your terminal - Julien-cpsn/ATAC
Visit Site

GitHub - Julien-cpsn/ATAC: A simple API client (postman like) in your terminal

GitHub - Julien-cpsn/ATAC: A simple API client (postman like) in your terminal

ATAC ⚔📩

Rust License: MIT GitHub Release

Demo Animation

Table Of Contents

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

Install with cargo

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

Simply use:

cargo install atac --locked

Install from Arch

You can use pacman to install:

pacman -S atac

Install with Homebrew

Simply use:

brew tap julien-cpsn/atac
brew install atac

Install from Fedora copr

Simply use:

dnf copr enable joxcat/atac
dnf install atac

Docker package

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

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

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 :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:

TODO v1.0.0

  • To add

    • Document the whole code
    • Error notification in TUI
    • Request body syntax highlighting
    • Export a request to other code formats (raw, curl, PHP, JS, Rust, ...)
    • OpenAPI & Insomnia import
  • To improve

  • To fix

    • Query parameters bug

TODO v2.0.0

  • To add
    • WebSocket requests
    • Maybe GraphQL requests
    • Maybe MQTT requests
    • Maybe gRPC requests

Ideas (will think about it later)

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

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

Binary size

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.

Contributors

Maintainers

Packagers

Star history

License

The MIT license for this project can be seen here

More Resources
to explore the angular.

mail [email protected] to add your project or resources here 🔥.

Related Articles
to learn about angular.

FAQ's
to learn more about Angular JS.

mail [email protected] to add more queries here 🔍.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory