PennAhead

PennAhead in your terminal

penn is PennAhead for people who live in a terminal: the same departure board, track estimates and reasoning as this site, drawn in box-drawing characters and braille dots and driven with vim keys. No browser tab, no Electron, no node_modules. One file, zero dependencies.

penn in a terminal: departures on the left, the selected train's big track number and details on the right

It reads PennAhead's own API and calculates nothing on your machine. Think of it as a different renderer for the same data.

Install

You need Node.js 22 or newer (node -v). Works on macOS and Linux.

mkdir -p ~/.local/bin
curl -fsSL https://raw.githubusercontent.com/the2ndday/pennahead-cli/main/penn -o ~/.local/bin/penn
chmod +x ~/.local/bin/penn
penn

penn: command not found? Add ~/.local/bin to your PATH; the README (opens in a new tab) has the one-liner for zsh, bash and fish. To update, run the curl line again. To uninstall, rm ~/.local/bin/penn.

Use

penn              # the board, full screen
penn 3861         # jump to train #3861
penn -1 -l nec    # print the NEC board once and exit
penn --json | jq  # pipe it somewhere

Keys

  • j k to move, gg G for the top and bottom, Ctrl-d Ctrl-u for half a page
  • l into a train's details, h back to the list (or Ctrl-w l Ctrl-w h, if your fingers insist)
  • / to search, n N for the next and previous match
  • 1–5 for the lines, s Secaucus, e Newark Airport, a service alerts
  • ? for every key, and :q quits. Yes, really.

Terminals and fonts

Any UTF-8 terminal with a modern font. Truecolor if your terminal has it, 256 colors if not. Seeing tofu (□) where the bars should be? Run penn --ascii. Not into color? NO_COLOR=1 is respected.

Source

The terminal client is MIT licensed: the2ndday/pennahead-cli (opens in a new tab). Found a bug? Open an issue, or email hello@pennahead.com.

Fine print

Same rules as the site. Tracks marked * are estimates and can be wrong, and NJ TRANSIT can change a track at any time, so always check the official station displays before boarding. Data obtained from NJ TRANSIT and served by PennAhead; it may not be real time. PennAhead is independent and not affiliated with NJ TRANSIT, Amtrak, the MTA or the Port Authority.

Last updated October 1, 2026