Developing, testing, and debugging REST APIs usually involves graphical tools such as Postman or Insomnia. While feature-rich, graphical API clients are resource-intensive, slow to launch, and impossible to run over headless remote SSH sessions. atac (A Terminal API Client) is an open-source, keyboard-driven API client written in Rust that brings a responsive text-based user interface (TUI) directly to the Linux terminal.
With support for collections, environment variables, multi-part form data, JSON payloads, syntax highlighting, and request history, atac provides developer ergonomics comparable to graphical clients while consuming a fraction of system memory.
Installing atac on Linux
atac is distributed as a lightweight, dependency-free binary across multiple Linux installation channels.
Method 1: Direct Binary Installation (Recommended)
Download the pre-compiled binary release matching your Linux system architecture:
# Download latest release binary
curl -s https://api.github.com/repos/Julien-cpsn/ATAC/releases/latest \
| grep "browser_download_url.*linux-x86_64.tar.gz" \
| cut -d : -f 2,3 \
| tr -d \" \
| wget -qi -
# Extract and install into PATH
tar -zxvf atac-*-linux-x86_64.tar.gz
sudo mv atac /usr/local/bin/
rm -f atac-*-linux-x86_64.tar.gz
Method 2: Using Cargo (Rust)
If you maintain a local Rust toolchain:
cargo install atac --locked
Method 3: Arch Linux (AUR)
yay -S atac-bin
Verify that atac is installed and ready for execution:
atac --version
Starting atac and Managing Workspaces
Launch the interactive interface by typing the command in any terminal emulator:
atac
By default, atac stores its collections, environments, and configuration files locally under ~/.config/atac/. You can also target project-specific directories by passing a custom directory path:
atac ~/projects/my-api/.atac
Navigating the TUI Layout
The atac interface is divided into functional panels designed for full keyboard navigation:
- Collections Pane (Left): Organises your API requests into folders, collections, and individual HTTP endpoints.
- Request Configuration Pane (Top Right): Allows editing of HTTP methods (GET, POST, PUT, DELETE), URLs, query parameters, auth headers, and body payloads.
- Response Viewer Pane (Bottom Right): Renders HTTP response codes, timing metrics, response headers, and formatted JSON bodies.
Essential Keyboard Shortcuts
Tab: Cycle focus sequentially between the Collections, Request, and Response panels.j / korUp / Down Arrows: Navigate up and down within active lists and code blocks.n: Create a new collection, folder, or request.r: Rename the currently selected request or folder.d: Delete the selected item.SpaceorEnter: Send the active HTTP request.q: Exit atac.
Configuring and Sending an API Request
Creating and executing a request follows standard REST conventions:
- Focus the Collections pane and press n to create a new request named
Get Users. - Press Tab to move focus to the URL input field in the Request pane.
- Enter your endpoint URL (for example,
https://jsonplaceholder.typicode.com/users). - Use arrow keys to cycle through HTTP methods and select GET.
- Navigate down to the Headers tab to define custom headers (such as
Authorization: Bearer token123orContent-Type: application/json). - Press Enter to dispatch the request.
- The response streams into the lower viewer, displaying status
200 OK, response latency in milliseconds, and the syntax-highlighted JSON body.
Managing Environments and Dynamic Variables
To avoid hardcoding base URLs or API keys across hundreds of endpoints, atac supports environment files:
- Press e within the interface to open the Environment Manager.
- Create environments such as
DevelopmentandProduction. - Define key-value pairs (e.g.,
baseUrl = https://api.dev.example.comandapiKey = sec_xyz987). - Reference variables directly within request URLs and headers using double curly brackets:
{{baseUrl}}/v1/orders - Switch active environments instantly to test different backends without modifying endpoints.