Skip to main content

ptop3

PyPI version Python versions CI License: MIT

An htop-like TUI process monitor that groups processes by application.

Screenshots

Group view Main group view — processes grouped by application

Detail view Detail view — individual processes for a selected group

Tree view Tree view — process hierarchy within a group

Features

  • Groups processes by application name with smart alias resolution
  • Colored header with memory, swap, load-average badges
  • Sort by memory, CPU, RSS, swap, I/O, or count
  • Regex filter across app name, process name, and cmdline
  • Process tree view within a selected application group
  • Kill signals (SIGTERM / SIGKILL) for individual processes or entire groups
  • w key: clean swap by cycling swapoff/swapon (passwordless sudo)
  • d key: drop kernel caches (passwordless sudo)
  • Alerts for high CPU, memory, swap, disk usage, and zombie processes
  • Lite mode (--lite) for lower overhead on busy systems

Installation

pip install ptop3

Quick Start

ptop3                 # interactive TUI
python -m ptop3       # same via module
ptop3 --once          # print one-shot table and exit
ptop3 --filter python # filter to python processes

Sudo Setup

The w (swap-clean) and d (drop-caches) keys require root. Configure passwordless sudo once:

sudo ptop3 --init-subscripts

Or manually:

sudo visudo -f /etc/sudoers.d/ptop3
# Add:
# YOUR_USER ALL=(root) NOPASSWD: /path/to/ptop3-drop-caches
# YOUR_USER ALL=(root) NOPASSWD: /path/to/ptop3-swap-clean

Check sudo status:

ptop3 --check-sudo

CLI Reference

Flag Default Description
--once off Print one-shot table and exit
-f/--filter REGEX — Filter by app/name/cmdline
-s/--sort KEY mem Sort key: mem, cpu, rss, swap, io, count
-n/--top N 15 Rows to show in --once mode
--refresh SECS 2.0 Refresh interval
--lite off Lite mode: skip cmdline/IO for tiny procs
--check-sudo — Check sudo config for subscripts
--init-subscripts — Write /etc/sudoers.d/ptop3

Key Bindings

Key Action
↑/↓ or j/k Move selection
PgUp/PgDn Page up/down
Home/End Jump to first/last
Enter or l Expand group to detail view
h Back to group view
t Toggle process tree (detail view)
s Cycle sort key
f Enter filter regex
r Reset filter
+/- Increase/decrease refresh interval
k/K Send SIGTERM/SIGKILL to selected
g Kill whole group (SIGTERM)
w Run swap-clean
d Drop caches
q or Ctrl-C Quit

Subscripts

The privileged subscripts can also be run directly:

ptop3-drop-caches --help
ptop3-drop-caches --level 1 --dry-run

ptop3-swap-clean --help
ptop3-swap-clean --safety-mb 256 --dry-run

Development

git clone https://github.com/spazyCZ/ptop3
cd ptop3
pip install -e ".[dev]"
pytest
ruff check ptop3/

Branching Strategy

feature/xyz  ──PR──►  test  ──PR──►  main  ──tag v*.*.*──►  release
Branch Purpose
feature/* Development — branch from test, PR back to test
test Staging — CI gate + auto-publish to TestPyPI on merge
main Production — only accepts PRs from test; tagged releases publish to PyPI

CI / CD

Workflow Trigger Action
CI push / PR to test or main ruff + pytest × Python 3.10–3.13 + Codecov
Claude Code Review PR opened / updated Automated code review
Claude Quality Gate PR to test or main Test coverage · changelog · security agents
Publish to TestPyPI merge to test Build + publish (skips existing versions)
Release push tag v*.*.* CI → GitHub Release with auto release notes
Publish to PyPI manual (workflow_dispatch) CI → publish to production PyPI

Release Process

  1. Merge all feature PRs into test and verify on TestPyPI:
    pip install -i https://test.pypi.org/simple/ ptop3
    
  2. Bump the version (run on test):
    bump-my-version bump patch   # or minor / major
    git push origin test
    
  3. Open a PR from test → main and merge once CI is green.
  4. Tag the release on main:
    git tag v0.x.y
    git push origin v0.x.y
    
    This creates the GitHub Release automatically.
  5. Publish to PyPI manually: Actions → Publish to PyPI → Run workflow — enter the tag.

Metadata

Release files for ptop3 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ptop3 0.1.4
File Size Uploaded
ptop3-0.1.4.tar.gz 34.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ptop3 0.1.4
File Interpreter ABI Platform
ptop3-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 56.2 kB

Release files / ptop3-0.1.4.tar.gz

Download URL ptop3-0.1.4.tar.gz
Size 34.7 kB
Tags Source
SHA-256 checksum
How to use checksums
00c7ce23ce5c6b363524fb248d84cbd8049e8747ae89d1c4215ea4667a17b4a0
BLAKE2b-256 checksum
How to use checksums
fad5ef2c63d6764642c0ac69daf6aa04beafc484c4600d63bf7df7dc18d38c03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / ptop3-0.1.4-py3-none-any.whl

Download URL ptop3-0.1.4-py3-none-any.whl
Size 21.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ca98c5346feef7ddef1925bb13c2877821342b0a02c68d3cf38393c97f520627
BLAKE2b-256 checksum
How to use checksums
2c936f4b7f7ab3c2e59796e2976121ea31bef2c1b3b6d6888465633fa5d7a1b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

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