Skip to main content

Modern multi-host ping monitor with a Textual TUI.

Project description

CI

pingtop is a fast, keyboard-first multi-host ping monitor for people who live in the terminal. Point it at a few hosts, a whole subnet, or a host list, and get a live Textual dashboard with RTT trends, loss stats, sortable columns, and per-host drill-down details.

It is built for the moment when ping is too small, dashboards are too heavy, and you just want to see what your network is doing right now.

Why pingtop

  • Monitor many hosts at once in a single live TUI

  • Spot latency spikes instantly with inline RTT trend bars

  • Sort by host, IP, RTT, avg, max, stddev, loss, state, or trend

  • Inspect a selected host in a dedicated details panel

  • Add, edit, delete, pause, and reset hosts without restarting the session

  • Load targets from CLI args, CIDR ranges, or a hosts file

  • Export the final snapshot to JSON or CSV

  • Print a clean colored summary on exit

  • Use raw ICMP directly instead of shelling out to ping

Feature Highlights

Live network view

  • Real-time host table with RTT, min/avg/max, stddev, loss, state, and trend columns

  • Responsive layout that keeps the table useful on both wide and narrow terminals

  • Stable numeric column widths, so values stay easy to scan while data updates

Designed for triage

  • One-key sorting across every important signal

  • A details panel with an expanded RTT graph for the selected host

  • Global status strip showing active hosts, paused hosts, errors, sent packets, and total loss

Built for real sessions

  • Add or fix targets in place instead of restarting

  • Pause a noisy host, pause everything, or reset stats when you want a clean measurement window

  • Deduplicate repeated hosts automatically when combining CLI args and --hosts-file

Install

Requirements:

  • Python 3.10+

python -m pip install pingtop

After installation, run it directly:

pingtop 1.1.1.1 8.8.8.8

Quick Start

Monitor a few public resolvers:

pingtop 1.1.1.1 8.8.8.8 9.9.9.9

Use a faster sampling interval:

pingtop 1.1.1.1 8.8.8.8 --interval 0.2 --timeout 0.5

Expand a CIDR block into usable hosts automatically:

pingtop 10.22.76.19/30

Load hosts from a file:

pingtop --hosts-file hosts.txt

hosts.txt is newline-delimited. Blank lines and lines starting with # are ignored.

Common Workflows

Monitor a host list and export the final snapshot:

pingtop --hosts-file hosts.txt --export snapshots/session.json

Write CSV explicitly:

pingtop 1.1.1.1 8.8.8.8 --export snapshots/session.csv

Enable debug logging while troubleshooting:

pingtop 10.0.0.1 10.0.0.2 --log-file pingtop.log --log-level debug

Disable the exit summary when you only want the TUI:

pingtop 1.1.1.1 --no-summary

CLI Options

Usage: pingtop [OPTIONS] [HOSTS]...

Options:
  -i, --interval FLOAT            ping interval in seconds
  -t, --timeout FLOAT             timeout in seconds
  -s, --packet-size INTEGER       ICMP payload size in bytes
  --hosts-file FILE               newline-delimited host list
  --summary / --no-summary        print a colored summary on exit
  --export FILE                   export final snapshot
  --export-format [json|csv]      override export format
  --log-file FILE                 write logs to a file
  --log-level [debug|info|warning|error|critical]
  -h, --help

Keyboard Shortcuts

Session control:

  • a add a host

  • e edit the selected host

  • d delete the selected host

  • space pause or resume the selected host

  • p pause or resume all hosts

  • r reset statistics for the selected host

  • ctrl+r reset statistics for all hosts

  • i show or hide the details panel

  • tab switch focus between the table and details panel

  • h or ? open help

  • q quit

Sorting:

  • H host

  • G resolved IP

  • S sequence

  • R last RTT

  • I min RTT

  • A avg RTT

  • M max RTT

  • T stddev

  • L lost packets

  • P loss percentage

  • U state

  • W trend

Press the same sort key again to reverse the order.

What You Get On Exit

By default, pingtop prints a compact colored summary with:

  • overall status

  • total hosts, tx, rx, and loss percentage

  • lossy or down hosts

  • top issues worth investigating first

If you export a snapshot, the file includes session config, aggregate stats, and per-host results.

Permissions

pingtop uses ICMP sockets directly.

On Linux, non-root access depends on net.ipv4.ping_group_range. If you hit a permission error, inspect the current value:

cat /proc/sys/net/ipv4/ping_group_range

Then widen the allowed range so your user or group can open ICMP sockets:

sudo sysctl -w net.ipv4.ping_group_range='0 1001'

Development

poetry install
poetry run pytest
poetry run ruff check .
poetry run mypy src

Credits

  • The raw ICMP implementation is derived from the original pingtop project.

  • The TUI is built with Textual.

If pingtop earns a place in your toolbox, star the repo.

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

pingtop-0.5.0.tar.gz (22.2 kB view details)

Uploaded Source

Built Distribution

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

pingtop-0.5.0-py3-none-any.whl (25.2 kB view details)

Uploaded Python 3

File details

Details for the file pingtop-0.5.0.tar.gz.

File metadata

  • Download URL: pingtop-0.5.0.tar.gz
  • Upload date:
  • Size: 22.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.13.11 Darwin/24.6.0

File hashes

Hashes for pingtop-0.5.0.tar.gz
Algorithm Hash digest
SHA256 65af438bdfd0ca805430c435b04967c22cdda94b8fc8803d134c71d77e07266a
MD5 08a0e22737e14eeeed1bfcb4aa6cc155
BLAKE2b-256 6d498221d5b2c417c5145e256ed34f98e3583eeea2780d59133c7f92537f7a30

See more details on using hashes here.

File details

Details for the file pingtop-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: pingtop-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 25.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.13.11 Darwin/24.6.0

File hashes

Hashes for pingtop-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1c58770e55279b6d13c07a5718478926a20170ae00ada1491d7645f29ed586a9
MD5 1263744bbe2601624b4fb00ebea238da
BLAKE2b-256 d576d74949d551456d1febf240a663ab06f307c368a5debee196063046b8f1ed

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