Skip to main content

A beautiful TUI port manager โ€” see and kill processes on any port without googling lsof

Project description

portzup ๐Ÿ”Œ

PyPI GitHub Stars

Because lsof -i :3000 is not a personality.

A Interactive terminal UI that shows every process running on your machine's network ports โ€” live, searchable, and killable in one keypress. No more googling commands. No more chaining lsof | grep | kill. Just open portzup and see everything.

Demo


Install

pip install portzup

Then run:

portzup

That's it. Zero to running in under 30 seconds.


Why portzup?

You know this moment:

Error: listen EADDRINUSE: address already in use :::3000

Then the ritual:

  1. Google "how to kill port 3000"
  2. Find a Stack Overflow answer
  3. Run lsof -ti:3000 | xargs kill -9
  4. Forget it by next week
  5. Google it again

portzup ends this loop.


Features

Live port table Every open port, process name, PID, protocol, status โ€” updated every 2 seconds
Fuzzy search Press / and type to filter by port number, process name, or status
Kill with one key Press k to terminate the selected process (with confirmation)
Process detail pane Press i to see full command, user, local/remote addresses
Sort Press s to cycle between sort modes: port โ†’ PID โ†’ process name
Auto-refresh Table stays live โ€” or press r to force an instant refresh
Cross-platform Linux โœ… macOS โœ… Windows (v1.1)

Keybindings

Key Action
โ†‘ / โ†“ Navigate the port list
/ Open fuzzy search
Escape Clear search / close detail pane
k Kill selected process
i Toggle process detail pane
r Force refresh
s Cycle sort (port โ†’ PID โ†’ name)
q Quit
? Show help

Status colours

Colour Status
๐ŸŸข Green LISTEN
๐Ÿ”ต Cyan ESTABLISHED
๐ŸŸก Yellow TIME_WAIT
๐ŸŸฃ Magenta CLOSE_WAIT
๐Ÿ”ด Red FIN_WAIT

Platform support

Platform Status
Linux โœ… Fully supported
macOS โœ… Fully supported
Windows โœ… Fully supported (run as Administrator)

Stack

Language Python 3.10+
TUI Textual
System data psutil
Packaging pip / PyPI

Contributing

PRs are welcome! The project is MIT licensed.

portzup/
โ”œโ”€โ”€ portzup/
โ”‚   โ”œโ”€โ”€ main.py          # Textual App โ€” entry point
โ”‚   โ”œโ”€โ”€ ui/
โ”‚   โ”‚   โ”œโ”€โ”€ table.py     # Port table widget
โ”‚   โ”‚   โ”œโ”€โ”€ detail.py    # Process detail pane
โ”‚   โ”‚   โ””โ”€โ”€ footer.py    # Status bar
โ”‚   โ”œโ”€โ”€ core/
โ”‚   โ”‚   โ”œโ”€โ”€ ports.py     # psutil port fetching
โ”‚   โ”‚   โ”œโ”€โ”€ killer.py    # Safe process kill
โ”‚   โ”‚   โ””โ”€โ”€ models.py    # PortEntry dataclass
โ”‚   โ””โ”€โ”€ config.py
โ”œโ”€โ”€ tests/
โ”œโ”€โ”€ pyproject.toml
โ””โ”€โ”€ README.md

Run tests:

pip install pytest
pytest tests/

License

MIT โ€” open, contribution-friendly, no friction.


Built with Python + Textual. Inspired by the daily frustration of every developer who has ever googled "how to kill port 3000".

Project details


Download files

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

Source Distribution

portzup-1.0.4.tar.gz (213.4 kB view details)

Uploaded Source

Built Distribution

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

portzup-1.0.4-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file portzup-1.0.4.tar.gz.

File metadata

  • Download URL: portzup-1.0.4.tar.gz
  • Upload date:
  • Size: 213.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for portzup-1.0.4.tar.gz
Algorithm Hash digest
SHA256 7fdf83ac5eea0a036690aa3905312db6f564f11079bfd25a4eedaaffaed896dc
MD5 2696ebb0777208650b2b872c07ced686
BLAKE2b-256 299fa1d54159eeb24faee69236daacb5892c3026b1476d4cd77c288e5277fd6e

See more details on using hashes here.

File details

Details for the file portzup-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: portzup-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for portzup-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 6c7121fdcc4b98033488a54110d4166e2afada2fe4109bdf32d4db1d890de992
MD5 3c6c560a18dc682cbda59226c26d24fe
BLAKE2b-256 c3ee1b19bbae7b87b7e3c337638be4e71854badac52c509e9baec377e0d9f909

See more details on using hashes here.

Supported by

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