ipmitui
Small operator-side CLI + TUI for driving a rack of IPMI BMCs. One TOML
config of machines, one shell-out per call to ipmitool, parallel scans for
the live power-state table. Power, Serial-over-LAN, sanity checks, and an
interactive table with add / edit / delete.
Sibling to bty: bty owns image catalogs,
PXE plans and deploys; ipmitui owns power state and console access. They
stay separate so each stays small and operator-readable.
Install
pipx install . # from a checkout
pipx install git+https://github.com/safl/ipmitui
Requires ipmitool on $PATH (apt install ipmitool on Debian / Ubuntu).
Config
Default path: ~/.config/ipmitui/machines.toml (override with --config or
$IPMITUI_CONFIG). The file is written 0600 because passwords may be
plaintext.
[defaults]
user = "ADMIN"
pass_cmd = "pass show lab/{name}-bmc" # {name} is the machine's name
[[machine]]
name = "lab-01"
host = "10.20.30.10"
description = "headend BMC, warp rack"
[[machine]]
name = "lab-02"
host = "10.20.30.11"
user = "OTHER" # overrides the default user
password = "inline-secret" # plaintext; for lab-only / quick start
[ui]
glyphs = true # Nerd Font icons in the TUI (toggle live with "g")
Per machine, give either password (inline) or pass_cmd (a shell command
whose first stdout line is the password); pass_cmd keeps the file
plaintext-free with pass / gopass / op / sops. --config may be
repeated to merge several files, a simple way to group hosts:
ipmitui --config warp.toml --config wave.toml # both racks in one view
Commands
Running ipmitui with no subcommand opens the interactive TUI.
ipmitui # interactive TUI (default)
ipmitui tui # same, explicit
ipmitui status # one-shot parallel scan, print table, exit
ipmitui check # exit non-zero if any machine is unreachable / auth-fails
ipmitui sol lab-01 # exec into `ipmitool sol activate`
ipmitui on lab-01 # power on
ipmitui off lab-01 # power off (hard)
ipmitui soft lab-01 # graceful shutdown (ACPI)
ipmitui cycle lab-01 # power cycle
ipmitui reset lab-01 # power reset
ipmitui ipmitool lab-01 mc info # raw passthrough with the auth prefix filled in
Flags: --config PATH (repeatable), --workers N (parallel scan width,
default 8), --interval S (TUI refresh seconds, default 5), --version.
TUI keys
f or / focus the filter (matches name / host / note)
i or Enter open the action picker for the selected machine
(picker: j/k or arrows to move, Enter to act, Esc/q to cancel)
a / e / d add / edit / delete a machine
r refresh now
g toggle Nerd Font glyphs
h or Space help
q quit
j / k move the cursor (alongside the arrow keys)
Esc clear the filter / close a popup
The action picker offers serial console (SoL) and the power ops. Edits are saved back to the primary config file.
Development
make hooks # install the pre-commit gate (ruff + hygiene)
make check # ruff lint + format-check + tests
make test # tests only
CI (.github/workflows/ci-cd.yml) runs lint + tests on every PR and on
main; a green main auto-tags v<version> and the tag publishes a GitHub
release.
Metadata
Release files for ipmitui 1.0.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 | |
|---|---|---|---|
| ipmitui-1.0.0.tar.gz | 33.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ipmitui-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 58.2 kB
Release files / ipmitui-1.0.0.tar.gz
| Download URL | ipmitui-1.0.0.tar.gz |
|---|---|
| Size | 33.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a638a1cab60d50ddbc0cf7a605bade0ad5d1702712b3b442880f85e5e5ab1835
|
|
BLAKE2b-256 checksum How to use checksums |
58d54c8a19395b345a66c4effe2115e8ad3f5dd2b634b158cef47350bafef4f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 17, 2026.
Transparency logRelease files / ipmitui-1.0.0-py3-none-any.whl
| Download URL | ipmitui-1.0.0-py3-none-any.whl |
|---|---|
| Size | 24.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d3c0ad0ce665d825b4769f14047ec656777f83aa10c200bb77319d1abaa3c876
|
|
BLAKE2b-256 checksum How to use checksums |
58b889ecadfe9d178ecad0b27f6c39d5af17a1c8e6c250c32f181388dd3d51b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 17, 2026.
Transparency log