About

A dispatch engine you can watch and check

hermod is a ride-dispatch engine: drivers report where they are, riders ask for rides, and hermod decides who picks up whom. It's built to be measured, on public data, with every number traceable to the command that produced it.

Why it exists

Dispatch is a problem where a good answer, a fast answer and a safe answer pull against each other. Matching each rider at once is fast; matching them in batches serves more of them. Doing it concurrently is fast too, until two matches grab the same driver. hermod is a place to build each of those properly and show, with numbers, what each choice costs.

It's a portfolio project by Aryan Anand, a software engineer, built alongside odin, a durable workflow engine that runs live with chaos on a timer.

The name

In Norse myth, Hermóðr is Odin's son and messenger, the one sent on the long ride. The mark is a lowercase h drawn as a route on Manhattan's grid: down the avenue, along the street, round the corner, to a rider waiting at the pin.

What's real, and what isn't

  • RealManhattan's road network from OpenStreetMap, and every Manhattan yellow-cab trip of January 2010, at its recorded time and place.
  • ModelledThe drivers. There's no public driver data, so their number, shifts and answers are a model, and results are curves over the number of drivers.
  • MeasuredEverything else: routing, matching, latency under load, and the checker's verdict on every run, with the files that hold each number.

What it's built with

  • EngineGo 1.27. The core uses only the standard library; Postgres 18 keeps finished runs, off the matching path.
  • DataPython turns OpenStreetMap and the taxi records into compact binary files the engine reads.
  • Loadk6 for load tests, and Valkey as the baseline the spatial index is measured against.
  • This siteNext.js as a static export on Vercel, with MapLibre and deck.gl drawing on OpenFreeMap tiles.
  • HostingThe live demo runs in Docker on a home server, reached through a Cloudflare tunnel and protected by Cloudflare Turnstile.

Where it stands

  1. M1Routing on Manhattan's road graph, checked against OSRMDone
  2. M2Nearest drivers on a grid, against ValkeyDone
  3. M3The simulator, greedy matching and the invariant checkerDone
  4. M4Batched matching with the Hungarian algorithmDone
  5. M5Live mode under load, behind an HTTP APIDone
  6. W1This site: the replay and the resultsDone
  7. W2The live demo, its store and its serverDone
  8. M6Amazon route sequencing, scored with the challenge's own scorerIn progress

Source and contact

The source is private and shared on request. For that, or anything else about hermod, get in touch. More of Aryan's work is at heyaryan.xyz.