atac
Postman-like API client for the terminal
TLDR
SYNOPSIS
atac [-d directory] [--filter regex] [--dry-run] [--no-ansi-log] [-v...] [subcommand]
DESCRIPTION
atac (Arguably a Terminal API Client) is a feature-rich, terminal-based API testing tool written in Rust. It provides a Postman-like experience entirely within the terminal, supporting both an interactive TUI mode and a scriptable CLI mode.
The TUI presents a full interface for building and organizing HTTP requests, viewing responses with syntax highlighting, managing collections, and switching between environments. The CLI mode allows sending requests, managing collections, and importing data non-interactively, making it suitable for scripting and automation.
atac supports all standard HTTP methods including GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD, TRACE, and CONNECT. Authentication options include Basic, Bearer token, Digest, and JWT. Request bodies can be JSON, XML, HTML, plain text, multipart form, URL-encoded form, or file uploads. Full response details are available including status codes, headers, cookies, and timing.
Beyond HTTP, atac includes a WebSocket client supporting text, binary, ping, pong, and close messages. A built-in JavaScript runtime enables pre-request and post-request scripting for dynamic request modification and response processing.
Collections and environments are stored as human-readable JSON or YAML files, designed to be committed to version control. Environment variables are defined in .env files and referenced in requests using {{variable_name}} syntax. The tool can import from Postman v2.1.0 collections, OpenAPI specifications, and cURL commands, and can export requests to cURL, PHP Guzzle, Node.js Axios, Rust Reqwest, and raw HTTP formats.
PARAMETERS
-d directory, --directory directory
Main application directory containing collection files, the atac.toml config file, and the atac.log file--filter regex
Only parse collection files whose names match the given regular expression--tui
Run the TUI after executing a CLI subcommand--dry-run
Avoid saving data to collection and environment files--no-ansi-log
Avoid using ANSI formatting in log file output-v, --verbose
Increase verbosity level; can be repeated for more detailcollection
Manage collections (list, create, delete, rename)request
Manage and send requests within a collectiontry
One-shot request sender for quick API calls without a saved collectionenv
Manage environment files and variablesimport
Import collections, requests, or environments from Postman v2.1.0, cURL, or OpenAPI formatscompletions
Generate shell completion scripts for bash, zsh, or fishman
Generate the ATAC man page
CONFIGURATION
atac.toml -- Main configuration file placed in the application directory. All keys are optional.
disable_syntax_highlighting
Set to true to disable response syntax highlighting (default: false)disable_cors
Set to true to disable CORS handling (default: false)[proxy] http_proxy
HTTP proxy URL[proxy] https_proxy
HTTPS proxy URLKey bindings are configured via a separate TOML file specified by the ATAC_KEY_BINDINGS environment variable. Default and Vim-style key binding templates are provided.
The ATAC_MAIN_DIR environment variable can be used as an alternative to the -d flag for specifying the application directory.
CAVEATS
Requires Rust 1.82 or later to build from source. On macOS, binaries downloaded from GitHub releases may need the quarantine attribute removed with xattr -rd com.apple.quarantine. OAuth and AWS authentication are not yet supported. Only Postman v2.1.0 collection format is supported for import.
HISTORY
atac was created by Julien Caposiena (Julien-cpsn) and first published to crates.io in April 2024. The project is open source under the MIT license and hosted on GitHub. It was built to provide a free, account-less, offline-first alternative to graphical API clients like Postman and Insomnia.

