Website, with iPhone and Apple Watch apps coming soon
Arrival times for Boston's buses, subway, Commuter Rail and ferries that try to beat the MBTA's own predictions, and publish the score every eight hours.
Objective
Tell a rider standing at a stop when the vehicle will really come, more accurately than the times on the platform sign, and prove it: every claim of "more accurate" comes from a test on predictions the model never saw.
A stop's page. The big number is TransitOracle's time with the range it lands in 8 times out of 10; the MBTA's own prediction sits under it.
What it does
Next arrivals for about 7,100 stops, refreshed every 20 seconds, with TransitOracle's time, an 80% range and the MBTA's prediction side by side.
Search by name or find stops near you, and save the ones you use. No account: saved stops stay in your browser or on your phone.
A live map of every line and every vehicle in service, with Follow to watch one trip all the way to your stop.
A trip planner that says how likely each way's changes are to work and when you will arrive 9 times in 10.
Service alerts, Commuter Rail tracks, how full each vehicle is, how a route usually runs at this hour, and a warning for buses that often never show.
A public track record: every retrain's score against the MBTA's, by mode, with the last 30 days charted.
iPhone and Apple Watch apps: widgets for saved stops, commutes as Live Activities on the lock screen and Dynamic Island, and watch complications.
The same stop on iPhone. Inside three minutes the countdown runs by the second.Every vehicle in service, each gliding along its line between reports.The planner plays each way out 400 times on how late the MBTA's predictions really run.
Design choices, and why
Only show our time where it has won
TransitOracle's prediction leads for a mode only if it beat the MBTA's on that mode's held-out test. Where it has not, the rider sees the MBTA's time. A prediction product that is sometimes worse than the free one has to say so, not hide it.
A range, and the MBTA's number beside it
A single minute hides how sure the model is. Every arrival carries the range it falls in 8 times out of 10, with the MBTA's own prediction under it, labelled, so a rider can see both and decide.
Retrain often, promote only on evidence
Every eight hours the model learns from the latest week, and every Sunday it is rebuilt from eight weeks of history. A new model replaces the serving one only if it is more accurate by more than noise on hours neither has seen, and every check goes on the track record either way.
No accounts, and your location stays with you
Saved stops and commutes live on the device. Near me is worked out on the phone; the planner sends only a position rounded to about 100 metres. The apps talk to one host, read-only, over pinned TLS 1.3.
The track record on November 3, 2026: on 1.5 million predictions it never saw, 93% within the MBTA's own accuracy windows, against 88% for the MBTA's.
Challenges and how we solved them
A gap in the data can never be filled
The MBTA's live feeds are gone a minute later, so an hour not recorded is an hour the model never learns from. Collection runs on Cloudflare rather than our own machines: a Durable Object polls the feeds every 15 to 60 seconds, buffers in its own storage so a deploy loses nothing, and writes five-minute batches to R2. A watchdog posts to Slack the moment anything stops moving.
Nobody publishes when the bus actually came
Scoring a prediction needs the true arrival, which the live feeds never state. The pipeline infers every arrival and departure from vehicle positions and checks them against the MBTA's published history, which is how we found, and fixed, first stops and two-stop ferry trips going unscored.
Hundreds of millions of predictions on a home runner
Each retrain reads about 400 million logged predictions. It runs on a self-hosted runner, reading a day an eighth at a time and building examples a group of routes at a time, so a run stays under about 7 GB of memory and costs nothing in cloud compute.
A Live Activity without push notifications
A commute's next departures belong on the lock screen at the right time, but the app has no server push. It schedules the activity to start on its own, sends a Time Sensitive notification as a fallback, and refreshes on open, on tap and in the background, with the countdown ticking on the device in between.
Where it stands
TransitOracle is live at transitoracle.com, collecting the MBTA's feeds around the clock and retraining three times a day, with monitoring through Sentry, Slack, Better Stack and PostHog. The iPhone and Apple Watch apps, on the same API, are coming soon to the App Store. TransitOracle is not affiliated with or endorsed by the MBTA or MassDOT; its data comes from MassDOT.