Transit, off the web
Stuttgart transit from the terminal. Yours in milliseconds.
vvs gives you live departure boards, door-to-door trips, and offline stop resolution for the entire Stuttgart region (VVS/SSB). Pure Go, zero API keys, no web bloat.
- No cookie banners or GDPR popups
- No 500 MB browser tabs hogging RAM
- No API keys or registration required
- No cloud telemetry or tracking
- No slow remote autocomplete latency
- No runtime dependencies
curl -fsSL https://raw.githubusercontent.com/parnoldx/vvs/master/install.sh | sh
Linux · macOS · Windows · Single Go binary · EFA-BW API · MIT
What it fixes
Checking transit shouldn't take 30 seconds and a browser.
Commercial web portals bombard you with cookie consents, ads, laggy search spinners, and heavy JavaScript bundles. Here is checking transit, twice.
| 20:04 | U15 | Ruhbank | Gleis 2 | on time |
| 20:05 | U6 | Gerlingen | Gleis 1 | +7' |
| 20:06 | U12 | Dürrlewang | Gleis 1 | +4' |
| 20:06 | 42 | Erwin-Schoettle | Pos. 1 | on time |
Superpowers
Everything you need. Compiled into pure Go.
Departures boards, door-to-door trips, offline fuzzy search, and clean JSON piping — directly from your shell.
Live Regional Boards
Real-time delays (+4'), train platforms (Gleis 1–16), and bus bays across U-Bahn, S-Bahn, buses, Zacke, and Seilbahn.
$ vvs departures
Door-to-Door Trips
Write natural times: um morgen 8:00, friday 17:30, or --arrive. Save your home stop once in ~/.config/vvs.json.
$ vvs to Feuerbach
Offline Stop Resolver
10,000+ official stops embedded locally. Fuzzy search, umlaut normalization (ä, ö, ü, ß), and EFA IDs resolve in 2ms on CPU.
$ vvs search feuerb
UNIX Piping
Pass --json to pipe live transit data directly into Waybar, Polybar, Raycast, Neovim, or shell scripts.
$ vvs dep --json | jq .
Command reference
Clean UNIX commands & flags.
Single-word shortcuts, interactive pickers, and flags designed for terminal speed.
Get started
Install in seconds.
One command, then your terminal has real-time Stuttgart transit.
curl -fsSL https://raw.githubusercontent.com/parnoldx/vvs/master/install.sh | sh
go install github.com/parnoldx/vvs@latest
Linux · macOS · Windows · Single Go binary · EFA-BW · MIT
-
1
Install binary: Run the curl installer or
go installto placevvson your$PATH. -
2
Set home: Run
vvs home Schlossplatz(stored in~/.config/vvs.json). -
3
Query transit: Run
vvs departuresorvvs to Feuerbachanytime.
Do I need an API key or account?
No! vvs queries the public EFA-BW timetable endpoint directly. No API tokens, registration, or credentials are required.
Which regions are supported?
The entire VVS region: Stuttgart city (SSB), Esslingen, Böblingen, Ludwigsburg, Rems-Murr-Kreis, and Göppingen. Includes U-Bahn, S-Bahn, buses, regional trains, Zacke, and Seilbahn.
How does offline search work?
vvs embeds a compressed index of 10,000+ regional stops. Name matching, fuzzy scoring, and umlaut normalization run entirely on your CPU in milliseconds.
Can I pipe into status bars?
Yes! Every command supports --json. You can easily write a 3-line Waybar or Polybar module that shows live delay indicators on your desktop bar.