Skip to main content

⚡ 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 X on 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.

  1. Bump __version__ in src/pulse/__init__.py (the package version is read from there).
  2. Update CHANGELOG.md.
  3. Confirm CI is green on main — the Linux job is the one that matters.
  4. Tag and push:
    git tag v0.4.0
    git push origin v0.4.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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pulse_monitor-0.4.0.tar.gz (72.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pulse_monitor-0.4.0-py3-none-any.whl (70.1 kB view details)

Uploaded Python 3

File details

Details for the file pulse_monitor-0.4.0.tar.gz.

File metadata

  • Download URL: pulse_monitor-0.4.0.tar.gz
  • Upload date:
  • Size: 72.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pulse_monitor-0.4.0.tar.gz
Algorithm Hash digest
SHA256 bea2cafb1c27f5840d65df847d26316ec14bea73292d3ea63b7eba63821a06c4
MD5 40edae2de80a146e8a7805998cb0d4b7
BLAKE2b-256 b2470d750d2efbf347b221b124c02360389cc97ffae17dd7d828c95dfb5c215d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulse_monitor-0.4.0.tar.gz:

Publisher: publish.yml on Fatin-Ishraq/Pulse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pulse_monitor-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: pulse_monitor-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 70.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pulse_monitor-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b14ff23f4496703c65b08509e46554f5dc3b92f356af0cb6f6f1aeba4db9eb1f
MD5 3e7d4e448e3f6d17f67243c127b753ec
BLAKE2b-256 6bf84ec7c97d61ea0d68865ddd231eccd6f8cb6b1b4b0cfd14f00195a52012cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulse_monitor-0.4.0-py3-none-any.whl:

Publisher: publish.yml on Fatin-Ishraq/Pulse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.5.0

2 files

This release

0.4.0 This release

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page