| Crates.io | statui |
| lib.rs | statui |
| version | 0.1.2 |
| created_at | 2025-11-29 18:51:30.022655+00 |
| updated_at | 2025-11-29 20:27:56.444826+00 |
| description | A lightweight TUI dashboard for API health monitoring built with Rust and Ratatui. |
| homepage | |
| repository | https://github.com/Mohamed-Badry/statui |
| max_upload_size | |
| id | 1957238 |
| size | 128,196 |
███████╗████████╗ █████╗ ████████╗██╗ ██╗██╗
██╔════╝╚══██╔══╝██╔══██╗╚══██╔══╝██║ ██║██║
███████╗ ██║ ███████║ ██║ ██║ ██║██║
╚════██║ ██║ ██╔══██║ ██║ ██║ ██║██║
███████║ ██║ ██║ ██║ ██║ ╚██████╔╝██║
╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝
A lightweight, async TUI for monitoring API health.
Statui is a terminal-based dashboard for monitoring HTTP endpoints in real-time. Built for developers and ML engineers who need to keep an eye on API availability, latency trends, and status codes without leaving the terminal.
It features a high-performance async backend that ensures the UI never freezes, even when monitoring dozens of slow endpoints simultaneously.
tokio for non-blocking I/OUse cargo-binstall to get the pre-built binary instantly:
cargo binstall statui
Installs statui from crates.io and compiles it for your device:
cargo install statui
git clone https://github.com/Mohamed-Badry/statui
cd statui
cargo install --path .
Create a config:
Statui looks for a statui.toml in your current directory.
Run:
statui
presets and run it:# Monitors package registries for various languages.
statui dev_registries.toml
| Key | Action |
|---|---|
q |
Quit |
j / k |
Scroll Down/Scroll Up |
i |
Toggle Inspector Pane (Endpoint Details) |
Statui uses a layered configuration system. It loads settings in this order (last one wins):
~/.config/statui/config.toml on Linux/Mac)./statui.toml)statui my_config.toml)statui.toml# -----------------------------------------------
# statui :: Global Settings
# -----------------------------------------------
# All endpoints will use these values by default
# Default interval (in seconds) to ping all endpoints
default_interval = 30
# Default timeout (in seconds) for any single request
default_timeout = 5
# -----------------------------------------------
# statui :: Endpoints
# -----------------------------------------------
# Each [[endpoints]] block is a new site to monitor.
[[endpoints]]
# A simple endpoint. It will use the default interval and timeout.
name = "Google"
url = "https://www.google.com"
[[endpoints]]
# A more complex endpoint that overrides global settings.
name = "Rust Language"
url = "https://www.rust-lang.org"
# -- Optional per-endpoint settings --
# Uncomment these to override the globals for "Rust Language" only
interval = 10 # Ping this specific API only every 10 seconds
timeout = 10 # Give it a longer 10-second timeout
method = "HEAD" # Use HTTP HEAD instead of GET to save bandwidth
[[endpoints]]
# Failing endpoint (Connection Error)
name = "Broken API"
url = "https://www.my-non-existent-api.monkey/api"
[[endpoints]]
# Another simple endpoint to fill the table a bit.
name = "docs.rs"
url = "https://www.docs.rs"
Statui comes with pre-configured lists for popular domains:
presets/ai_llm.toml (OpenAI, Anthropic, Replicate)presets/cloud_infra.toml (AWS, Vercel, Heroku, DNS)presets/dev_registries.toml (Crates.io, PyPI, NPM)Statui is still evolving. Here are some features currently in the works:
/ to filter endpoints by name or statustheme.tomlkeymap.tomlContributions and feature requests are welcome. Feel free to open an issue or PR.
Statui follows a simple async-sync bridge architecture:
The Backend (tokio): Spawns a dedicated lightweight task for every endpoint. These tasks (using reqwest) handle networking, timing, and retries independently.
The Frontend (ratatui): Runs on the main thread. It receives updates via a thread-safe channel (mpsc) and renders the UI state.
This ensures that a timeout on one API never stutters the UI or delays checks for other APIs.