Skip to main content

pingtop

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.

Metadata

Release files for pingtop 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 pingtop 0.5.0
File Size Uploaded
pingtop-0.5.0.tar.gz 22.2 kB Details

Built distribution (wheel)

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

Total release size: 47.4 kB

Release files / pingtop-0.5.0.tar.gz

Download URL pingtop-0.5.0.tar.gz
Size 22.2 kB
Tags Source
SHA-256 checksum
How to use checksums
65af438bdfd0ca805430c435b04967c22cdda94b8fc8803d134c71d77e07266a
BLAKE2b-256 checksum
How to use checksums
6d498221d5b2c417c5145e256ed34f98e3583eeea2780d59133c7f92537f7a30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.1 CPython/3.13.11 Darwin/24.6.0

Release files / pingtop-0.5.0-py3-none-any.whl

Download URL pingtop-0.5.0-py3-none-any.whl
Size 25.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1c58770e55279b6d13c07a5718478926a20170ae00ada1491d7645f29ed586a9
BLAKE2b-256 checksum
How to use checksums
d576d74949d551456d1febf240a663ab06f307c368a5debee196063046b8f1ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.1 CPython/3.13.11 Darwin/24.6.0

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.2

1 release file

0.4.0

1 release file

0.3.0

1 release file

0.2.14

1 release file

0.2.13

1 release file

0.2.12

1 release file

0.2.11

1 release file

0.2.9

1 release file

0.2.8

1 release file

0.2.7

1 release file

0.2.6

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

0.0.1

1 release file

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