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.

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
jkto move,ggGfor the top and bottom,Ctrl-dCtrl-ufor half a pagelinto a train's details,hback to the list (orCtrl-w lCtrl-w h, if your fingers insist)/to search,nNfor the next and previous match1–5for the lines,sSecaucus,eNewark Airport,aservice alerts?for every key, and:qquits. 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