ATAC

Julien-cpsnMIT活跃维护

在终端里用的轻量 API 客户端,类似 Postman,用 Rust 编写,适合不想离开命令行就能调试和测试接口的开发者。

A simple API client (postman like) in your terminal

v0.24.0发布于 2026-10-11 22:09 UTC3,751star +1 / 7 天144fork同步于 2026-11-10 17:41 UTC

怎么上手

由 README 提炼,执行前请确认
cargo install atac --locked
硬件要求按 README 说明

README 未说明,纯终端工具,无 GPU 或显存要求

支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

终端里的 Postman,无需图形界面即可管理并发送 HTTP 请求

在终端里用的轻量 API 客户端,类似 Postman,用 Rust 编写,适合不想离开命令行就能调试和测试接口的开发者。

核心能力

  • 在终端内管理集合与请求,无需图形环境
  • 支持 GET/POST/PUT/PATCH/DELETE 等完整 HTTP 方法
  • 支持 Basic、Bearer、Digest、JWT 认证
  • 支持 Multipart、URL 编码、文件与 JSON/XML 等请求体
  • 提供 Vim 键位绑定与主题定制

容易踩的坑

用 cargo 安装需 Rust 版本至少 1.93;macOS 下载二进制后可能需执行 sudo xattr -rd com.apple.quarantine 去除隔离属性;二进制需从终端带 CLI 参数运行,不能像图形应用那样双击启动

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.24.0
  1. v0.24.0最新正式版2026-10-11 · 2026-10-11 22:09 UTC

    Hello, this update has been possible mainly thanks to the huge work of @helenkwok !!! I have some ideas of new features in mind

    Added

    • 🦟 | Added MQTT requests @helenkwok
      • Supports MQTT v3.1.1, v5, clean sessions, client IDs, QoS, many topic subscriptions and many more!!
      • You need to add the new MQTT section to your theme files (you can straight copy the websocket section). E.g.:
    [MQTT]
        [MQTT.connection_status]
        connected = "Green"
        disconnected = "Red"
    
        [MQTT.messages]
        server_foreground_color = "Blue"
        server_background_color = "DarkGray"
        you_background_color = "DarkGray"
        details_color = "DarkGray"
    
    • 🔎 | Added QUERY HTTP method @eshad
      • You need to add the new QUERY HTTP method entry to your theme files. E.g.:
    [HTTP]
        [HTTP.methods]
        GET = "Green"
        POST = "Yellow"
        QUERY = "LightMagenta"
        ...
    

    Improved

    • Updated dependencies
  2. v0.23.12026-09-03 · 2026-09-03 08:49 UTC
    查看更新说明

    Doing a PhD = having no time. But I'll be back at some point!

    Fixed

    • Fixed wrong input/value mapping in some Auth fields
  3. v0.23.02026-02-08 · 2026-02-08 22:39 UTC
    查看更新说明

    Hi all!!!

    Big quality of life and features update, hope you like it :) An enormous rework on text inputs has been made, please report each problem that you encounter.

    The next release will likely be on nested collection and default request value in collections (e.g., a collection auth being applied on all its requests)

    We are somes features away from v1 🎊

    Added

    • 🪙 | Added JWT authentication, mostly thanks to @amkarkhi https://github.com/Julien-cpsn/ATAC/pull/179
      • Algorithms:
        • HS256
        • HS384
        • HS512
        • ES256
        • ES384
        • RS256
        • RS384
        • RS512
        • PS256
        • PS384
        • PS512
        • EdDSA
      • Secret types: text, base64, URL-safe base64, PEM file, DER file
    • 🫄 | Added Digest authentication. Note that on a 401 unauthorized response, the request digest fields can be filled according to the response www-authenticate header
      • Algorithms:
        • MD5
        • MD5-sess
        • SHA256
        • SHA256-sess
        • SHA512
        • SHA512-sess
      • QOP: none, auth, auth-int
      • Charset: ASCII, UTF8
    • 🌐 | You can now set a global config file. Write your configuration at <ATAC_GLOBAL_DIR>/global.toml, e.g.: /home/julien/.config/atac/global.toml. The values of this config file will be overwritten by directory config. https://github.com/Julien-cpsn/ATAC/issues/192
    • ✏️ | [BREAKING] Reworked EVERY text input (~4000 LoC omg) thanks to @preiter93. But what does it change?
      • Syntax highlighting everywhere
      • Much better support of VIM inputs, not only key-bindings
      • Now supports EMACS inputs
      • New search mode Ctrl-f with default configuration
      • Now supports external editor on text-areas. Ctrl-e with default configuration.
      • Breaking part: the key bindings files have changed. Single-line text input and text-area part were merged and things were added. Please see https://github.com/Julien-cpsn/ATAC/tree/main/example_resources/key_bindings for better examples.
    • You can now disable the usage of graphical protocol by setting disable_graphical_protocol = <bool> in the config file.

    Removed

    Improved

    • Updated dependencies

    Fixed

  4. v0.22.12025-10-18 · 2025-10-18 00:09 UTC
    查看更新说明

    Hello all!! Been really busy lately due to a scientific conference (and PhD...). I am looking forward reviewing the "external editor" and "JWT" pull request, which seems to look very good to me

    Releasing from Tokyo :)

    Improved

    Fixed

  5. v0.22.02025-09-12 · 2025-09-12 21:53 UTC
    查看更新说明

    Added

    {
    	"id": "f0aedee9-05dc-4b0a-8172-a1e022855db2",
    	"name": "TEST",
    	"values": [
    		{
    			"key": "host",
    			"value": "http://127.0.0.1:8000/api",
    			"type": "default",
    			"enabled": true
    		},
            ...
    	],
    	"_postman_variable_scope": "environment",
    	"_postman_exported_at": "2025-09-12T20:53:22.305Z",
    	"_postman_exported_using": "Postman/11.62.6"
    }
    

    Improved

    • Clipboard now tries to use the Wayland data protocol if available, and falls back to x11 if not found
    • Updated the README with the newest functionalities

    Fixed

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

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

    Simply use:

    cargo install atac --locked
    

    Install from Arch

    You can use pacman to install:

    pacman -S atac
    

    Install with Homebrew

    Simply use:

    brew install atac
    

    Install with Scoop

    Simply use:

    scoop 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/r/juliencaposiena/atac

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

    Simply clone the repository and use:

    cargo run
    cargo run -- -h
    

    [!TIP] Build the latest release

    cargo build --release
    

    Features

    Current

    FeaturesATACPostmanInsomnia
    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:
    - QUERY:white_check_mark::x::x:
    - 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:
    - OPTIONS:white_check_mark::white_check_mark::white_check_mark:
    - HEAD:white_check_mark::white_check_mark::white_check_mark:
    - TRACE:white_check_mark::x::x:
    - CONNECT:white_check_mark::x::x:
    AuthenticationPartial: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:
    - Digest:white_check_mark::white_check_mark::white_check_mark:
    - JWT:white_check_mark::white_check_mark::white_check_mark:
    - 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 (HTTP, cURL, PHP Guzzle, NodeJS Axios, Rust Reqwest):white_check_mark::white_check_mark::x:
    WebSocket Client:white_check_mark::white_check_mark::white_check_mark:
    Message:white_check_mark::white_check_mark::white_check_mark:
    - Text:white_check_mark::white_check_mark::white_check_mark:
    - Binary:white_check_mark::x::x:
    - Ping:white_check_mark::x::x:
    - Pong:white_check_mark::x::x:
    - Close:white_check_mark::x::x:
    MQTT Client (3.1.1 & 5, TCP & TLS):white_check_mark::white_check_mark::x:
    GraphQL:x: :soon::white_check_mark::white_check_mark:
    gRPC:x: :soon::white_check_mark::white_check_mark:
    Free:white_check_mark:DependsDepends
    Lightweight, fast and efficient:white_check_mark::x::x:
    Data storageYour own committable, readable, versioned and retro-compatible files (JSON or YAML)Tied to your accountTied 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:x:
    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:
    - Toggle syntax highlighting:white_check_mark::x::x:
    - Save responses:white_check_mark::question::question:
    Import from other file formats:white_check_mark::white_check_mark::white_check_mark:
    - Postman v2.1.0 and Postman environment import:white_check_mark::white_check_mark::white_check_mark: / :x:
    - OpenAPI import:white_check_mark: (AI generated, prone to bugs):white_check_mark::white_check_mark:
    - cURL import:white_check_mark::white_check_mark::white_check_mark:
    Themes:white_check_mark::white_check_mark::white_check_mark:
    Remappable key bindings:white_check_mark::white_check_mark::white_check_mark:

    TODO v1.0.0

    TODO v2.0.0

    • To add

      • Maybe GraphQL 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 / LibraryVersionComment
    Request
    reqwest0.13.5Send requests
    reqwest-middleware0.5.2Wrapper around reqwest to allow for client middleware chains
    reqwest-websocket0.6.0Wrapper around reqwest to handle web-socket requests
    rumqttc0.25.1MQTT 3.1.1 and 5 client
    rustls-native-certs0.8.3Load the platform root certificates for MQTT over TLS
    TUI
    ratatui0.30.2Terminal UI framework
    crokey1.5.0Used to parse, use key bindings files and some utilities
    tui-big-text0.8.10Display big texts. Only used for displaying ATAC in the homepage.
    tui-tree-widget0.24.1Display tree-like lists. Used for displaying the collections.
    tui-scrollview0.6.8Display scrollable panels
    edtui0.11.7Text area that handle a lot of features. Used for editing request URL, body, messages, payloads, scripts.
    throbber-widgets-tui0.11.1Display loading UI elements. Used when request is pending.
    ratatui-image12.0.0-rc.2Display response images.
    image0.25.10Decode images.
    Main functionalities
    syntect5.3.0Syntax highlighting
    serde1.0.229Serialize & Deserialize application data into files
    jsonxf1.1.1Pretty print JSON
    toml1.1.8Serialize & Deserialize application config files
    boa_engine0.22.0Create Javascript runtimes. Used for pre and post request scripts
    parse_postman_collection0.2.4Deserialize Postman collection files
    curl-parser0.6.0Parse cURL request files
    openapiv32.2.0Parse OpenAPI spec files
    clap4.6.7Command Line Argument Parser
    directories6.0.0Use system files
    arboard3.6.1Copy response body to clipboard
    jsonwebtoken11.1.0Create and encode JSON Web Tokens (JWT)
    digest_auth0.3.1Digest auth
    Async
    tokio1.53.2Handle asynchronous requests
    parking_lot0.12.5Smaller, faster and more flexible implementation of RwLock and Mutex. Used everywhere.
    Utils
    strum0.28.0Enum facilities
    lazy_static1.5.1Allows for more flexible constants. Mainly used for accessing CLI arguments everywhere
    nestify0.3.3Used to nest struct definitions
    walkdir2.5.0Recursively retrieve files
    snailquote0.3.1Unescape string
    indexmap2.14.2Ordered hashmap. Used in environments to preserve files' values order
    rayon1.12.0Allows the usage of multiple threads in for loops
    thiserror2.0.21Create custom errors
    anyhow1.0.104Result that can contain any error
    clap-verbosity-flag3.0.4Add verbosity flag to the CLI
    clap_complete4.6.11Generate completion file
    clap_mangen0.3.3Generate man pages
    regex1.13.1Regex. Using for parsing requests URL
    chrono0.4.45Time utils
    uuid1.28.0UUID generator
    base640.23.1Decode base64 strings
    textwrap0.16.4Wrap text to max length
    Tracing
    tracing0.1.44Log events
    tracing-subscriber0.3.23Utilities for implementing and composing tracing subscribers
    tracing-log0.2.0Log crate compatibility for tracing
    reqwest-tracing0.7.1Opentracing 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

    License

    The MIT license for this project can be seen here