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.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)

Source distribution for pulse-monitor 0.5.0
File Size Uploaded
pulse_monitor-0.5.0.tar.gz 87.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pulse-monitor 0.5.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.0

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page