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.
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 dataInside the TUI, press Ctrl+Q to quit.
Via Homebrew (builds from source; requires the tap, which is published automatically after the first release):
brew install devduart/tap/http-tuiPrebuilt 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/ # installOn 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-tuiTo 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/.
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.
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.
cargo fmt --all --check
cargo clippy --all-targets -- -D warnings
cargo test