terminal-status-panel
A colourful server status panel for a login shell. It reads the machine it runs on — system, resources, Docker and Swarm, clustered services, Traefik's wiring — and renders one dashboard sized to the terminal it is printed into.
It is a diagnostic tool, so it never fails a login: the command always exits 0, a collector that cannot answer degrades to a placeholder, and a check that runs out of its time budget says so rather than guessing.
pip install terminal-status-panel
status-full
The commands
| Command | Renders |
|---|---|
status-full |
everything: system, Docker, cluster health, Traefik wiring |
status-server |
system and resources only |
status-docker |
the Docker and Swarm block only |
status-health |
the cluster, network and DNS checks only |
status-traefik |
the Traefik wiring view only |
install-panel |
install or remove the login hook |
Every one of them takes --width, --no-color, --config, --follow,
--interval, --processes and --debug. See
commands and command-line options.
What it shows
- SYSTEM OVERVIEW and UPDATES — OS, kernel, uptime, addresses, pending Debian/Ubuntu package updates, beside a pre-rendered OS logo.
- SYSTEM STATUS — load, CPU per core, memory, swap, filesystems, and the processes ranked by CPU and by memory (about the process lists).
- DOCKER INFOS — Swarm facts, node health, and a matrix of services per node, with the image each runs, the memory its tasks hold, and a TROUBLE block for anything that fell over recently (about the Docker panel).
- CLUSTER HEALTH — read-only probes of PostgreSQL, MongoDB, Kafka, GlusterFS and RustFS, plus WireGuard peers and DNS consistency (about the cluster health checks).
- TRAEFIK WIRING — entrypoint → router → middleware → service, reconstructed from Docker labels and the file provider (about the Traefik wiring view).
The status vocabulary
| Icon | Meaning |
|---|---|
| ✅ | measured healthy |
| ⚠️ | degraded, but serving |
| 💀 | measured broken |
| ⏰ | a scheduled job, resting between successful runs |
| 💤 | measured, and deliberately running nothing — a service scaled to zero |
| ⬜ | not observable, or not attempted |
… |
the check ran out of the shared time budget |
✗ |
the check itself failed |
⬜, … and ✗ are three different statements and are never conflated. The
full table is in the icon vocabulary.
What it may do to your machine
The panel opens no database or broker connection and holds no credentials. Its
only privilege is the Docker socket: the Docker section reads the Swarm API,
and the health section additionally executes read-only status commands inside
the service containers (pg_autoctl show state, db.hello(),
kafka-metadata-quorum.sh, a /health curl). GlusterFS is queried on the host
via sudo -n and is skipped when that is unavailable.
Documentation
The full documentation lives in docs/ and builds with Sphinx
(make docs).
- Run the panel for the first time — start here.
- Run the panel at login — the
profile.dsnippet, and why notupdate-motd.d. - Configuration — every key, its default and what it does.
- Diagnose an empty panel — what
--debugreports and how to read it. - Requirements and stability — supported platforms, and why there is no public Python API before 1.0.
Changes are recorded in CHANGELOG.md.
License
Licensed under the EUPL-1.2.
Release files for terminal-status-panel 0.12.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| terminal_status_panel-0.12.2.tar.gz | 259.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| terminal_status_panel-0.12.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 413.4 kB
Release files / terminal_status_panel-0.12.2.tar.gz
| Download URL | terminal_status_panel-0.12.2.tar.gz |
|---|---|
| Size | 259.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cbb3de3354d3594cdb139fca92804701356c61bd809c255e8f8b807cdc234e23
|
|
BLAKE2b-256 checksum How to use checksums |
74c6da9a0f8f7ea65b061e5b9f4fbeb8cabc3697d9b1c2be17c71c273c0cfe92
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.
Transparency logRelease files / terminal_status_panel-0.12.2-py3-none-any.whl
| Download URL | terminal_status_panel-0.12.2-py3-none-any.whl |
|---|---|
| Size | 154.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9089b7fb213d0e05d529ab867920cc25e8c8d952241ed8661225e06b41cb7683
|
|
BLAKE2b-256 checksum How to use checksums |
9173ec98686b760dc41d4e62b217c80a8c2fc3bcc4a651d4a4d14764994989eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.
Transparency log