Solari is a high-performance transit routing engine built using the RAPTOR algorithm, optimized for lightweight, global-scale public transit routing. Designed to serve developers building applications requiring fast and resource-efficient transit planning (e.g., maps apps, trip-planning APIs), it avoids heavy preprocessing steps while supporting planet-scale coverage through memory-mapped timetables.
-
Planet-Scale Coverage:
- Memory-mapped timetable data allows a single instance to handle global networks with minimal RAM usage (via
memmap2).
- Memory-mapped timetable data allows a single instance to handle global networks with minimal RAM usage (via
-
Multi-Agency Support:
- Load multiple GTFS feeds from a directory for seamless cross-agency routing.
-
Timezone Awareness:
- Automatically handles timezone conversions based on GTFS feed data. Developers are responsible for converting epoch timestamps to local time in their app layer.
-
HTTP API Endpoint:
POST /v1/plan
Example request:
curl -d '{"from":{"lat":47.679591,"lon":-122.356388},"to":{"lat":47.616440,"lon":-122.320440},"start_at":1742845000000}' \ https://transit.maps.earth/v1/plan -
GTFS Compatibility:
- Supports modern GTFS feeds via the
gtfs-structurescrate. - No real-time (GTFS-RT) support yet; prioritized roadmap features include alerts and delays.
- Supports modern GTFS feeds via the
- Rust (
rustc >= 1.86tested). - OpenSSL development package: Install via your OS's package manager (e.g.,
libssl-devon Ubuntu).
It used to be pretty simple to get a Solari instance up and running but we added support for pedestrian routing during transfers which complicated setup. Awaiting new documentation.
- RAPTOR Algorithm: Implements all pruning rules from the original paper for optimal performance.
- Memory Mapping: Uses
memmap2to load timetable data directly from disk, enabling fast access without RAM overhead.
- GTFS-RT Support (priority order):
- Service alerts and closures
- Real-time delays
- Performance Quantification: Come up with better benchmarks against MOTIS and OpenTripPlanner.
- rRAPTOR Implementation: Long-term goal for multi-departure-time routing.
- Documentation: Ongoing work to finalize API response formats and provide detailed guides.
- Solari is in active development; contributions (documentation, testing, or features) are welcome.
- Check the repository's issue tracker for tasks, but note there are no formal contribution guidelines yet.
- No Real-Time Updates: Only static GTFS feeds supported currently.
- API Stability: The
/v1/planresponse format may evolve as documentation finalizes, but no compatibility breaking changes to the v1 endpoint after the initial release.
You may want to use this project if you need:
- Fast, lightweight routing for global-scale transit networks on modest hardware.
- A minimal API layer that integrates easily with modern web stacks (geocoding, map rendering handled externally).
Avoid if you require:
- Full-featured trip-planning like OpenTripPlanner's extensive customization or real-time capabilities.