Skip to content

Repository files navigation

http-tui

A terminal user interface (TUI) HTTP client, written in Rust.

Milestone v0.1.0 — project foundation. The HTTP client, request editor, storage, and proxy are planned for future milestones.

Usage

http-tui                        # launch the interactive TUI
http-tui --data-dir <path>      # override the data directory
http-tui --log-level debug      # set the file log verbosity
http-tui --env prd              # select an environment profile (dev|hml|prd)
http-tui proxy --port 8080      # (planned) run the local proxy
http-tui import collection.json # (planned) import a collection
http-tui export --output backup.json # (planned) export data

Inside the TUI, press Ctrl+Q to quit.

Install (macOS)

Via Homebrew (builds from source; requires the tap, which is published automatically after the first release):

brew install devduart/tap/http-tui

Prebuilt standalone binaries are attached to each GitHub Release. The macOS build is a universal2 binary (Apple Silicon + Intel) with no external runtime or database dependencies — SQLite is embedded in the binary.

# Replace vX.Y.Z with the release tag you want.
VERSION=vX.Y.Z
curl -LO "https://github.com/devduart/http-tui/releases/download/${VERSION}/http-tui-${VERSION}-macos-universal2.tar.gz"
curl -LO "https://github.com/devduart/http-tui/releases/download/${VERSION}/http-tui-${VERSION}-macos-universal2.tar.gz.sha256"

shasum -a 256 -c "http-tui-${VERSION}-macos-universal2.tar.gz.sha256"   # verify
tar -xzf "http-tui-${VERSION}-macos-universal2.tar.gz"                  # extract
sudo mv http-tui /usr/local/bin/                                       # install

On first run, macOS Gatekeeper may block the unsigned binary. Allow it via System Settings → Privacy & Security, or clear the quarantine attribute:

xattr -d com.apple.quarantine /usr/local/bin/http-tui

To build and package a release locally instead, run scripts/package-macos.sh (add --universal for a universal2 build); the tarball and checksum land in dist/.

Configuration

Environment profiles are selected via the --env flag or the HTTP_TUI_ENV environment variable (dev, hml, prd; defaults to dev). No values are hardcoded per environment — each profile namespaces its own on-disk state.

Config, data, and log directories follow OS conventions via the directories crate. Logs are written only to files (never onto the UI); override the log filter with the HTTP_TUI_LOG environment variable.

Architecture

The codebase follows a Functional Core / Imperative Shell design:

  • Pure logic (CLI mapping, config derivation, state transitions, rendering) lives in testable functions with no side effects.
  • Side effects (filesystem, terminal, logging) are isolated at the edges.

Development

cargo fmt --all --check
cargo clippy --all-targets -- -D warnings
cargo test

About

A clean and fast HTTP client for the terminal."

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages