A simple API client (postman like) in your terminal

Overview

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 use

Binary

The binaries from the latest release can be found here

Important

Don't forget 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.

For more:

atac -h

Compile by yourself

Important

First, make sure your rust version is at least 1.76

Simply clone the repository and use:

cargo run -- -h

Build latest release

cargo build --release

Features

Current

  • Manage many collection
  • Requests
    • Modify URL
    • All HTTP methods are handled
      • GET
      • POST
      • PUT
      • DELETE
      • PATCH
      • OPTIONS
    • Query params, synchronous between the URL and the query params tab
    • Authentication
      • No Auth
      • Basic Auth
      • Bearer Token
    • Headers
    • Body
      • No Body
      • Plain Text
      • JSON
      • HTML
      • XML
    • Full response
      • Body (with automatic syntax highlighting)
      • Status code
      • Cookies
      • Request duration
    • Simultaneously send asynchronous requests
    • Settings
      • Use config proxy
      • Allow redirects
      • Store received cookies
  • Readable, commitable and versionable JSON files containing application data
  • Configuration file
    • HTTP and HTTPS proxy
  • Postman collection v2.1.0 import
  • Environment variables along .env file support
  • Permanent keymap help & application state
  • 3 request views
    • 50% params / 50% response
    • 100% response
    • 100% params

TODO v1.0.0

  • To add

    • Cookies management
    • Insomnia import
    • Create a repo wiki
    • Document whole code
  • To improve

    • Rename request and collection
    • Import request settings in Postman import
    • Better keymap help on bottom right

TODO v2.0.0

  • 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)
  • To improve

    • Auto-completion on env file variables

Ideas (will think about it later)

  • Base URL on collection

Documentation

Note

A documentation will soon be published in the wiki section

Technical precisions

Tested on

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

Dependencies

Library Version Reason
request 0.11.24 Send requests
ratatui 0.26.1 Terminal UI framework
crossterm 0.27.0 Terminal Backend
tui-big-text 0.4.1 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.4.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.
serde & serde_json 1.0.197 & 1.0.144 Serialize & Deserialize application data into JSON files
toml 0.8.10 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.1 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

Binary size

The binary file size goes from ~4.5 MB to ~7 MB depending on the platform. I try to keep it the smallest I can.

Contributors

License

The MIT license for this project can be seen here

You might also like...
A simple CLI I made while practicing rust to easily make QR codes with just one command, all in your terminal.
A simple CLI I made while practicing rust to easily make QR codes with just one command, all in your terminal.

Welcome to rust-qrcode-cli 👋 A CLI I made while practicing rust to easily make QR codes with just one command, all in your terminal. Install git clon

A simple cli tool for generating quotes in your terminal from Kanye west. Start the day out strong.
A simple cli tool for generating quotes in your terminal from Kanye west. Start the day out strong.

Kanyey A simple cli tool for generating quotes in your terminal from Kanye West. Install Just do cargo install kanyey and be blessed. Bonus: throw it

dog is a command-line DNS client, like dig
dog is a command-line DNS client, like dig

dog dog is a command-line DNS client. Dogs can look up! dog is a command-line DNS client, like dig. It has colourful output, understands normal comman

A terminal ASCII media player. View images, gifs, videos, webcam, YouTube, etc.. directly in the terminal as ASCII art.
A terminal ASCII media player. View images, gifs, videos, webcam, YouTube, etc.. directly in the terminal as ASCII art.

Terminal Media Player View images, videos (files or YouTube links), webcam, etc directly in the terminal as ASCII. All images you see below are just m

Safe Unix shell-like parameter expansion/variable substitution via cross-platform CLI or Rust API
Safe Unix shell-like parameter expansion/variable substitution via cross-platform CLI or Rust API

Safe Unix shell-like parameter expansion/variable substitution for those who need a more powerful alternative to envsubst but don't want to resort to

Harmony chat client in the terminal!

ilo-toki Harmony chat client in the terminal! Usage Run it with cargo run once you've cloned the repo. If you'd like, you can install the program with

Terminal-UI for the RabbitMQ management API
Terminal-UI for the RabbitMQ management API

RabbiTui A terminal client for the RabbitMQ Management API Installation Homebrew brew tap maxmindlin/rabbitui brew install rabbitui Building from sou

Provides a mock Ambi client that emulates real sensor hardware such as an Edge client

ambi_mock_client Provides a mock Ambi client that emulates real sensor hardware such as an Edge client. Usage You must have Rust installed to build am

A Rust client for OpenAI's API

libopenai - Rust client to interact with OpenAI's API Rust client for OpenAI's API, written with tokio and reqwest How to use To add libopenai to your

Comments
  • [BUG] Padding glitch

    [BUG] Padding glitch

    Cli tooling and help menu not displaying properly:

    asciicast

    Got the same result from cloning and running cargo run and downloading the binary executable and running it directly.

    Using:

    Hit me up for details :+1:

    bug good first issue 
    opened by AirOne01 2
Releases(v0.9.0)
Owner
Julien C.
French engineering student. Studying at CPE Lyon and working at SFR.
Julien C.
ask.sh: AI terminal assistant that can read and write your terminal directly!

ask.sh: AI terminal assistant that read from & write to your terminal ask.sh is an AI terminal assistant based on OpenAI APIs such as GPT-3.5/4! What'

hmirin 5 Jun 20, 2023
A simple and efficient terminal UI implementation with ratatui.rs for getting quick insights from csv files right on the terminal

CSV-GREP csv-grep is an intuitive TUI application writting with ratatui.rs for reading, viewing and quickly analysing csv files right on the terminal.

Anthony Ezeabasili 16 Mar 10, 2024
A bit like tee, a bit like script, but all with a fake tty. Lets you remote control and watch a process

teetty teetty is a wrapper binary to execute a command in a pty while providing remote control facilities. This allows logging the stdout of a process

Armin Ronacher 259 Jan 3, 2023
Print your git contributions in your terminal, blazingly fast

Takoyaki Blazingly fast git contribution graph in your terminal Features ✔️ Customizable ✔️ Plugins to support a bunch of cloud based git repositories

kyeboard 13 Feb 6, 2023
Get your github contributions right in your terminal, blazingly fast!

GitColorScripts Get your github contributions right in your terminal! Installation Install via yay yay -S gitcolorscripts Install manually Download t

VoidCupboard 56 Jul 12, 2023
Low-level Rust library for implementing terminal command line interface, like in embedded systems.

Terminal CLI Need to build an interactive command prompt, with commands, properties and with full autocomplete? This is for you. Example, output only

HashMismatch 47 Nov 25, 2022
hackernews_tui is a Terminal UI to browse Hacker News with vim-like key bindings.

hackernews_tui is written in Rust with the help of Cursive TUI library. It uses HN Algolia search APIs to get Hacker News data.

Thang Pham 364 Dec 28, 2022
A library that creates a terminal-like window with feature-packed drawing of text and easy input handling. MIRROR.

BearLibTerminal provides a pseudoterminal window with a grid of character cells and a simple yet powerful API for flexible textual output and uncompli

Tommy Ettinger 43 Oct 31, 2022
joshuto: ranger-like terminal file manager written in Rust.

joshuto: ranger-like terminal file manager written in Rust.

Jeff Zhao 1.1k Dec 30, 2022
An open source, programmed in rust, privacy focused tool for reading programming resources (like stackoverflow) fast, efficient and asynchronous from the terminal.

Falion An open source, programmed in rust, privacy focused tool for reading programming resources (like StackOverFlow) fast, efficient and asynchronou

Obscurely 17 Dec 20, 2022