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, health, trouble, Docker, Traefik wiring (Docker and Traefik are left out on a host without a Docker endpoint) |
status-server |
system and resources only |
status-docker |
the TROUBLE block and the Docker and Swarm block |
status-health |
this host, the clusters, the network and DNS checks only |
status-trouble |
the TROUBLE block only: containers and host events |
status-traefik |
the Traefik wiring view only |
status-collect |
the host state collector, run by a systemd timer (see install the collector) |
install-panel |
install or remove the login hook, or with --collector the collector |
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).
- HEALTH — THIS HOST (failed systemd units, VRRP, Apache, DNS; works without Docker, see about host health), then read-only probes of PostgreSQL, MongoDB, Kafka, GlusterFS and RustFS, plus WireGuard peers and DNS consistency (about the cluster health checks).
- TROUBLE — what fell over in the last twelve hours, containers and host events together; absent when there is nothing to report (about the TROUBLE block).
- 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 or pg_isready,
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.
To draw Traefik's wiring it reads Traefik's static and dynamic configuration: Docker configs through the API, and files bind-mounted into the Traefik container, from the host, as the logged-in user — only on the node the Traefik task runs on, at most 1 MiB per file and 64 files for the whole provider directory — its tree, across every mount under it — and never more than 10,000 directory entries scanned.
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.
Metadata
Release files for terminal-status-panel 0.14.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| terminal_status_panel-0.14.0.tar.gz | 346.7 kB | With provenance | Details for terminal_status_panel-0.14.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| terminal_status_panel-0.14.0-py3-none-any.whl | Python 3 | none | any | Details for terminal_status_panel-0.14.0-py3-none-any.whl |
Total release size: 555.5 kB
Release files / terminal_status_panel-0.14.0.tar.gz
| Download URL | terminal_status_panel-0.14.0.tar.gz |
|---|---|
| Size | 346.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7ddbbf090b7cbbebfdd6fca53327294f54fe6d4ec6bea2786b93497e4250563c
|
|
BLAKE2b-256 checksum How to use checksums |
35a10151793faca428853ac69c4f6725190838654cc515883d208d1f77f93c2e
|
| 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 Oct 16, 2026.
Transparency logRelease files / terminal_status_panel-0.14.0-py3-none-any.whl
| Download URL | terminal_status_panel-0.14.0-py3-none-any.whl |
|---|---|
| Size | 208.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cc5859ab7d326d6657576dda3041ef650810c26bdb0a0b8173c96e1ccae7106d
|
|
BLAKE2b-256 checksum How to use checksums |
0a3b5db225b78af0836548c1ec022676fe03450eda8b25b2c41737343441a52a
|
| 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 Oct 16, 2026.
Transparency logSecurity for terminal-status-panel 0.14.0
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.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for terminal_status_panel-0.14.0.tar.gz
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 Oct 16, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.