Support the archive
Transit agencies publish GTFS-Realtime as a live snapshot, ask an agency what its trains were doing last Tuesday and, almost everywhere, the answer is that nobody kept it. This project keeps it: every poll from every configured feed, landed raw and rolled up into open Parquet, continuously since May/June 2026.
It runs on hardware I pay for out of pocket around $147/month. There is no company behind it and no grant funding it. If the bill stops getting paid, the archive doesn’t just go offline; the history stops being recorded, and that gap can never be backfilled.
That last number is the one worth sitting with: spread across everything it archives, this works out to about 72 cents per transit agency per monthless than a bus fare, for a permanent public record of how that agency actually ran.
GitHub Sponsors takes no platform cut, so more of it reaches the bill. Ko-fi needs no account if you'd rather just drop something in once.
Where the money goes
- Compute$48/moRegional poller hosts in the US, EU, and Australia, each polling every feed on its own interval, plus the host serving this dashboard's API.
- Storage$42/moEvery payload is landed raw before anything decodes it, so a parsing bug can never lose history. This line only grows archived bytes are never deleted, just aged into Deep Archive. The single largest holding is Minneapolis–St Paul's Metro Transit, at over 100 GiB.
- Rollup compute$35/moA scheduled Fargate task that turns the raw frames into queryable Parquet.
- Networking$10/moMoving several hundred GB a month out of agency endpoints and into the archive.
- Everything else$12/moMonitoring, alerting, and assorted small services.
Actual AWS line items for August 2026, rounded. Contributions cover infrastructure first. Anything past that goes toward onboarding more agencies every new feed is a permanent, recurring storage cost, so more funding genuinely means more of the world archived.
What a monthly amount covers
- $3/mo~5 typical agenciesOr most of MTA New York City Transit, the costliest single agency here.
- $10/mo~15 typical agenciesA mid-size metro area's worth of agencies, indefinitely.
- $25/mo~38 typical agenciesAbout a sixth of the entire bill.
- $50/mo~77 typical agenciesA third of everything it takes to run this.
A “typical agency” is the median one at $0.65/mo its own measured storage plus a share of the hosts, egress, and rollup compute, weighted by how hard it gets polled. Real agencies span $0.12 for a sleepy single-feed operator up to $4.33 for MTA New York City Transit, which runs eight separate subway-line feeds. These are shares of the total bill rather than the savings from dropping one agency, which would be far smaller: most of the cost is fixed no matter how many feeds ride on it.
Monthly beats one-time here, as archived bytes are never deleted, so every agency is a bill that recurs forever. A recurring contribution is the only kind that matches the shape of the cost. Even a recurring donation of $1 would make an impact.
Other ways to help
Money isn’t the only useful thing. Reporting a feed that’s returning garbage, pointing me at an agency endpoint I don’t have yet, or telling me a metric on this dashboard looks wrong are all worth real money in saved debugging time. Bonus points if you’re able to help get me an API for NJ Transit, I applied in March but haven’t heard back. The issue tracker is open, and so is the source.
To be clear about what you’re getting: this is a personal project, not a registered nonprofit, so contributions are a gift rather than a tax-deductible donation, and buy no influence over what gets archived. The code stays MIT-licensed and the dashboard stays free either way nothing here goes behind a paywall. Back to the agencies →