2026-06-12
You've got a stream of numbers — ping latency, CPU temp, GPU power draw, the rate at which a queue is draining — and you want to see it move. Your options have historically been: shove it into Prometheus and click around Grafana, write a gnuplot script, or sit there reading watch output like a fortune teller. None of these are correct for "I want to look at this for the next ninety seconds."
ttyplot reads whitespace-separated numbers on stdin and draws a live ASCII chart in your terminal. That's it. About 800 lines of C, written by Anton Khirnov. No daemons, no config files, no JavaScript runtime accidentally getting installed. apt install ttyplot or build it from source in under three seconds.
The compelling part is that it composes with anything that emits numbers, including counters:
# Ping latency, live
ping -i 0.2 1.1.1.1 \
| sed -u 's/.*time=//; s/ ms//' \
| ttyplot -t "1.1.1.1 RTT" -u "ms"
# CPU package temperature, sampled every second
{ while sleep 1; do sensors | awk '/Package/ {print $4+0}'; done } \
| ttyplot -t "CPU pkg temp" -u "°C" -s 100 -m 110
# Network throughput from a raw counter — note -r turns cumulative into rate
{ while sleep 1; do
awk '/enp4s0f0/ {print $2/1024/1024, $10/1024/1024}' /proc/net/dev
done } \
| ttyplot -2 -r -t "enp4s0f0 MiB/s" -u "MiB/s"
That last one is the killer feature most people miss. -r is rate mode: ttyplot takes the difference between consecutive samples for you. You can point it directly at the values in /proc/net/dev, /proc/diskstats, /sys/class/power_supply/BAT0/energy_now, or anything else that monotonically increments. No more awk gymnastics to compute deltas. -2 plots two series simultaneously — perfect for RX/TX.
It also handles the cases gnuplot makes painful:
-s sets a soft initial max; -m a hard ceiling so a spike doesn't compress the whole chart into a flat line.-c '#' for the main plot, -C 4 for color index. Looks fine over SSH, over mosh, in tmux, even in screen sessions from 2009.The real party trick — pipe SNMP, ipmitool, or any periodic sample:
# Watch ZFS ARC hit rate live
{ while sleep 2; do
awk '/^hits/ {h=$3} /^misses/ {m=$3} END {print h/(h+m)*100}' \
/proc/spl/kstat/zfs/arcstats
done } | ttyplot -t "ARC hit %" -u "%" -m 100
# Watch a job queue drain
{ while sleep 1; do ls /var/spool/nq | wc -l; done } \
| ttyplot -t "nq backlog" -u "jobs"
Why this beats the alternatives: gnuplot needs a script, replots from scratch each tick, and assumes you have X11 or want to fight with the dumb terminal. Grafana needs a TSDB and a browser. watch shows you the current number but no shape. ttyplot is the right answer when the question is "is this trending up or down right now, and how spiky is it?" — which is most of the questions you actually ask during an incident.
Install once. The next time someone asks "is the disk getting hammered?" you'll be plotting iostat output in your tmux pane in eight seconds.
-r — into a live ASCII chart, making "let me just look at this for a minute" actually possible without spinning up Grafana.
