⚡ P U L S E
"Not a dashboard. An instrument panel."
Pulse is a terminal system monitor for people who want high-density telemetry with a bit of style. Built on Textual and psutil.
✨ Features
- Live telemetry for CPU, memory, disk I/O, storage, network, and processes.
- Transcendence mode — press
Xon any focused panel for a full-screen, interactive view. - Process and container control — terminate, renice, and manage Docker containers. Every destructive action confirms first and names its exact target.
- Six themes — Nord, Dracula, Monokai, Dark, Solarized, Gruvbox. Your choice is remembered.
- Configurable refresh rate, from 0.1s for micro-stutter hunting to 60s for a background glance.
How metrics are collected
On Linux, Pulse reads /proc directly and computes its own CPU and per-process deltas. On Windows it uses GlobalMemoryStatusEx for memory and psutil elsewhere; on macOS and other platforms it uses psutil throughout. psutil is a dependency on every platform.
🚀 Installation
pip install pulse-monitor
Then launch from anywhere:
pulse
Docker container monitoring is optional, because access to the Docker socket is root-equivalent on the host:
pip install "pulse-monitor[docker]"
🎮 Controls
| Key | Action |
|---|---|
Q |
Quit |
T |
Cycle theme |
Tab / Shift+Tab |
Focus next / previous panel |
Arrow Keys |
Move focus around the grid |
X |
Enter / exit Transcendence view |
F |
Freeze updates |
? / H |
Help overlay |
Inside Transcendence
| Key | Action |
|---|---|
P |
Toggle sampling precision |
S |
Cycle scaling mode |
Esc |
Back to the grid |
Process and container actions
| Key | Action |
|---|---|
K |
Terminate the selected process (asks first) |
+ / - |
Lower / raise priority |
C / M |
Sort processes by CPU / memory |
S / K / R |
Docker: start / stop / restart the selected container (asks first) |
Pulse will not act on processes where a mistake takes down your session: itself, its parent shell, PID 1 or the session leader on POSIX, and the reserved Windows system PIDs. It never escalates privileges on its own — if a kill is denied, it says so and offers a force kill as a separate, explicit choice.
⚙️ Configuration
Config lives at %APPDATA%\pulse\config.toml on Windows, $XDG_CONFIG_HOME/pulse/config.toml (usually ~/.config/pulse/) elsewhere.
[ui]
theme = "nord" # nord | dracula | monokai | textual-dark | solarized-dark | gruvbox
[core]
refresh_rate = 1.0 # seconds, clamped to 0.1 - 60.0
Unknown or out-of-range values fall back to the defaults rather than breaking startup.
🛠️ Development
git clone https://github.com/Fatin-Ishraq/Pulse.git
cd Pulse
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[test]"
pytest
Run it from the source tree with pulse or python -m pulse.
🚀 Release Process
Publishing to PyPI uses GitHub Actions with Trusted Publishing — no API tokens in secrets.
- Bump
__version__insrc/pulse/__init__.py(the package version is read from there). - Update
CHANGELOG.md. - Confirm CI is green on
main— the Linux job is the one that matters. - Tag and push:
git tag v0.5.0 git push origin v0.5.0
The tag must match the version in __init__.py. PyPI will not accept a version
number twice, so a mismatched tag burns that version permanently.
📜 License
MIT © Fatin Ishraq
Metadata
Release files for pulse-monitor 0.5.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 | |
|---|---|---|---|
| pulse_monitor-0.5.0.tar.gz | 87.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pulse_monitor-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 167.0 kB
Release files / pulse_monitor-0.5.0.tar.gz
| Download URL | pulse_monitor-0.5.0.tar.gz |
|---|---|
| Size | 87.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0ca74b3771f5403af91003503f0155fb4f07315e4fa88426b3d9fa93e5857669
|
|
BLAKE2b-256 checksum How to use checksums |
5117971f8d84195293c2dc840210d67ecd4f9613394c8814805a94bd0bb9b6b1
|
| 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 Aug 16, 2026.
Transparency logRelease files / pulse_monitor-0.5.0-py3-none-any.whl
| Download URL | pulse_monitor-0.5.0-py3-none-any.whl |
|---|---|
| Size | 79.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
40f1dc241377502dc3c5c1ba1be4e72a74445f1c1a3c030681431695e46d1d6e
|
|
BLAKE2b-256 checksum How to use checksums |
cd5027b235d4f80b650358058b7eb76d9b0810fa5de304bb8cc97f0ab2b05e76
|
| 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 Aug 16, 2026.
Transparency log