Skip to content

Repository files navigation

CommuteScout logo

CommuteScout

Live road conditions across 37 states: a map, a route planner, and an AI assistant.
Also an MCP server, so your assistant can use it too.

CI Release Evals License: MIT

Open the app · Add to Claude · Coverage · Running it yourself · Data · MCP tools · Architecture

Open CommuteScout

No install, no account: commutescout.com

Demo: autocompleting San Jose and South Lake Tahoe, planning the drive and getting three route options that each say what is on them, switching between them, then tapping a suggested question and reading an answer built from the incidents, closures, cameras and signs along the way

CommuteScout reads 53 official agency feeds (CHP dispatch, state DOT closures and incidents, chain controls, cameras, message signs, wildfire perimeters, road weather, toll prices) and turns them into one live picture of the road. Look at the map, plan a route and see what is actually on it, or ask about a drive in plain English. The same data is served over MCP, so Claude and other AI assistants can use it as a tool instead of guessing about traffic.

What you get

  • A live national map: incidents by type, closures by class, chain controls, wildfires with real burn footprints, roadside weather stations, roughly 18,000 traffic cameras, and every message sign currently displaying something.
  • Toll and express-lane pricing: current rates on tolled corridors and bridges, drawn along the actual carriageway with hand-verified gantry positions, so a price tag never floats over the wrong road.
  • A route planner that knows the roads: autocomplete, route options, turn-by-turn directions, live conditions along the way, and print, GPX, KML, or share-link export.
  • An assistant that reads the feeds: plan a route, tap a suggested question, and the answer streams in from the same live data with per-source timestamps.
  • Plain-English incident detail: CHP dispatch logs are translated from radio shorthand into readable timelines, with each unit's arrival and clearance in order.
  • Watch areas: draw a circle, polygon, or route corridor and get a push or email alert when an incident, closure, chain control, or wildfire appears inside it.
  • An MCP server: ten tools over curated corridors and regions, with a closure taxonomy that keeps a closed on-ramp from reading as a closed highway.
  • Turn-by-turn navigation on your phone: native iOS and Android apps that speak what is ahead on the route, not just the next turn. Closures, crashes, chain controls and fires are announced by distance and filtered to your direction of travel, so a northbound ramp closure stays quiet when you are heading south. See commutescout-app.
  • Plugins, and a protocol for them: Flare is an open spec any source can implement to put its own alerts on the map. Plugins appear in a marketplace, are labelled by how far they have been vetted, and an unreviewed one can never close a road for a driver. A reference plugin and its conformance tests live in this repo.
  • A public API: the same ten tools over plain HTTP, with an OpenAPI document, one error envelope, and keys with published rate limits. Nothing to sign up for to try it.
  • Public evals: 91 golden questions on recorded fixtures, scored by an LLM judge that is never one of the evaluated models. The scorecard is a dated snapshot that names the version it reflects, not a release gate; it and its full history are committed to this repo.
Route planner with two route options, turn-by-turn directions, and suggested questions
Plan a trip. Autocomplete, route options, directions, print or export.
An AI answer about a drive, with live speeds and conditions
Ask about it. One tap on a suggested question; the answer reads the live feeds.
The map with per-layer filters and live counts
Or just look. Every layer toggleable, from full closures to blank signs.
The plugin marketplace, one card per plugin, with coverage, what it reports, and how far it has been vetted
Add a plugin. Each card says what it covers, what it reports, and whether anyone has reviewed it.
The developer page: the ten tools, the error envelope, and the rate limits
Or build on it. Ten tools over plain HTTP, one error envelope, published rate limits.

Coverage

The map covers 37 states. Coverage is not uniform, because it is built from what each agency actually publishes: some states offer every layer keylessly, some publish roadwork only, and a few offer nothing usable. The map says so directly, shading unsupported states and naming what is missing rather than showing an empty region.

California is the deepest. It is the only state with CHP dispatch logs, per-lane closure detail, chain-control levels, and CAL FIRE perimeters. The assistant and the MCP tools answer for every covered state, but a California question gets that richer detail, while elsewhere they answer from the normalized state DOT feeds.

Per-state matrix of what is live and why the gaps exist: docs/state-coverage.md. States not yet integrated, with the reason for each: docs/state-expansion-audit.md.

Get started

Open commutescout.com. Nothing to run, nothing to sign up for, feeds already warm. The phone apps are in commutescout-app.

Watch areas and the assistant are free on the hosted app; watch-area accounts need approval for now, because each one polls on your behalf.

Add to Claude

Give Claude live road data with a custom connector:

https://mcp.commutescout.com/mcp

See it on the site: commutescout.com/mcp. Local stdio setup and the full tool reference: docs/mcp.md.

Running it yourself

The code is MIT licensed and the repository is complete, so nothing stops you running a copy. It is worth being straight about what that takes: a Cloud Run deployment, credentials for a dozen state feeds, a Firestore database, map snapshot publishing, a scheduler for watch areas, and a paid map provider. Keeping that current is most of the work of the project, and it is not a path I recommend or support.

The MCP server alone is the reasonable exception, since it needs no accounts or keys:

{
  "mcpServers": {
    "commutescout": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/nicglazkov/commutescout", "ca-roads-mcp"]
    }
  }
}

Read the code, lift what is useful, open an issue if something here is wrong. docs/deploy.md documents the deployment for the sake of the record rather than as a recipe to follow.

The data

CHP incidents and dispatch logs; Caltrans and 30-plus other state DOT closures, incidents, cameras, message signs, and road weather; chain controls from California and the Pacific Northwest; WFIGS and CAL FIRE wildfires with perimeters; NWS alerts; USGS quakes; toll and express lane pricing; and optional TomTom and 511 SF Bay feeds.

Every response carries per-source data_as_of timestamps, and a failing feed is never silent: the last good data is served, flagged stale, with the error attached and surfaced all the way to the UI.

Full source table, refresh rates, and the closure taxonomy: docs/data-sources.md.

How good are the answers?

An eval suite scores the assistant against recorded fixtures: four scenarios (a Sierra storm day, a fire-closure day, a quiet day, and a byte-for-byte capture of a real fire-season day), 91 golden questions with ground truth including traps, and an LLM judge that is never an evaluated model.

Runs are triggered manually rather than on every release. Firing a full suite on each release turned out to cost more per month than the hosted assistant serves, so it now runs when a prompt or tool change actually warrants re-scoring. Every run appends to a committed history file, so the trend stays public: EVALS.md.

Under the hood

Three cleanly layered Python packages sharing one data spine: a feed layer with stale-while-revalidate caches and parsers that salvage complete records from truncated feeds, the MCP surface, and the web app.

The map does not boot through the API. A publisher builds the whole coverage area once per cycle and uploads pre-gzipped snapshots to object storage behind a CDN, so first paint is an edge-cached static file and no visitor request waits on a server assembling JSON. A map left open on a wall monitor keeps updating in place indefinitely.

Diagram and design notes: docs/architecture.md.

Contributing

PRs welcome. The test suite is fixture-based and runs without network access. Start with CONTRIBUTING.md, and see adding a data source if you want to wire up a new feed.

License & sustainability

CommuteScout is MIT licensed: the map, the planner, the MCP server, and every data parser, with no open-core carve-outs. The hosted app at commutescout.com will soon offer optional premium features (deeper history, more alerts); that is what funds the servers and keeps the free tier free.

Disclaimer

Data comes from CHP, Caltrans and the other state DOTs listed in docs/state-coverage.md, plus WFIGS, CAL FIRE, NWS, and USGS. Not affiliated with any agency. Conditions change faster than any feed; verify before you drive (511 or your state DOT, and quickmap.dot.ca.gov in California).

Routing and place-name lookup come from Stadia Maps, which sees the coordinates involved. The base map is drawn from this project's own map files (built from the Protomaps OpenStreetMap build, served from maps.commutescout.com on Cloudflare R2) on the website and in the phone apps, so no third party sees where the map is being looked at; the Positron and Bright styles on the website load their tiles from OpenFreeMap instead, which sees the viewer's address and map area. Fonts and map libraries are served locally.

About

Live road conditions across 37 US states: map, route planner, toll pricing, and AI assistant - plus an MCP server so any assistant gets incidents, closures, chain controls, cameras, and wildfires.

Topics

Resources

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages