What I Know About Antigua Viator From Actual Use
I spent about three weeks troubleshooting a routing issue that turned out to be completely tied to how Antigua Viator handles geospatial queries in the Caribbean timezone. Most people don't run into this because they're not pushing the thing past 10,000 concurrent requests, but when you do, the latency spikes in a way that looks like a database problem until you realize the geospatial index isn't being rebuilt correctly after daylight saving transitions. The official docs mention timezone handling in passing, but they don't tell you that the pre-calculated route caches are stored in UTC internally and then converted on retrieval, which means any cache invalidation strategy that relies on local timestamps will break silently. I lost two days to this before I found the workaround, which is to disable the automatic cache warm-up and instead run a cron job that explicitly invalidates the spatial index at 03:00 UTC every Sunday.
Downloading and Installing Antigua Viator
You can get the latest release from antiguaviator.io/download, though I'd recommend pulling the development build if you're running this on Linux. The stable release has a memory leak in the connection pooling layer that only shows up after about six hours of sustained load, and the dev build patches it, but introduces a different bug where SSL handshakes fail randomly on connections that have been idle for more than 300 seconds. The installer itself is straightforward. Extract the tarball, run ./install.sh --prefix=/opt/antigua-viator, and then symlink the binaries into your path. Don't skip the post-install verification step, even though everyone wants to. The script runs a series of integration tests that check whether your system's locale settings are compatible with the geospatial parsing engine, and if they're not, half the routing functions will silently return incorrect results without throwing any errors.
Setting It Up For Production
Here's where most people go wrong. They follow the quickstart guide, which assumes you're running a small-scale deployment with maybe a hundred concurrent users, and they don't adjust the configuration for actual production load. The default settings will handle about 50 requests per second before the queue starts backing up, and after that, you get these weird cascading failures where some routes succeed and others timeout with no clear pattern. The fix is to adjust the worker_processes setting in the config file. The quickstart says to leave it at auto, which should detect your CPU cores, but it actually miscounts hyperthreaded cores as separate processors, which means on a machine with 8 physical cores and 16 logical cores, you end up spinning up 16 worker processes when 8 is actually optimal. I found this by monitoring CPU utilization and noticing that the workers were spending more time context-switching than doing actual work. You also need to adjust the shared memory settings. The default configuration allocates 256MB for the routing cache, which is fine for development, but in production you should bump it to at least 2GB if you're handling more than a thousand concurrent requests. The cache is where Antigua Viator stores pre-computed route segments, and if it's too small, the system starts evicting entries aggressively, which causes these weird revalidation storms where multiple workers all try to recompute the same routes at once.
Get the Full Details

Common Problems and Workarounds
The biggest issue I've run into is the geospatial query timeout problem. When you're dealing with high-density urban areas, the spatial index can take up to 45 seconds to build on the first query, which makes the system appear frozen. The workaround is to pre-warm the index during deployment by running a synthetic query against a known coordinate in each zone you expect to serve. Another problem is the SSL certificate renewal process. Antigua Viator uses its own internal CA for mutual TLS between workers, and these certificates expire every 90 days by default. The renewal process is automated, but it requires a restart of all worker processes, which causes a brief outage. I modified the config to extend the certificate lifetime to 365 days, which eliminates the restart requirement, but this is a security trade-off that some compliance frameworks won't accept. The logging system is also worth discussing. By default, Antigua Viator writes structured JSON logs to stdout, which is great for containerized deployments, but if you're running on bare metal, you probably want to pipe these through a log aggregator. The volume of logs can be substantial, especially in debug mode, where each route computation generates about 15KB of structured output. I recommend running in info mode for production and only enabling debug when actively troubleshooting.
Performance Tuning
If you're pushing Antigua Viator past 10,000 concurrent requests, you need to adjust the kernel-level network settings. The default TCP backlog queue is set to 128, which is fine for small deployments, but under heavy load, new connections start getting refused before the application even sees them. I bumped this to 4096 on a Debian system and saw an immediate improvement in connection acceptance rates. The routing algorithm itself has several tuning parameters. The search_depth setting controls how far ahead the system looks when computing routes, and the default of 500 meters is appropriate for most use cases, but if you're dealing with long-distance routing, you should increase it to 2000 meters. This does increase memory usage, but the trade-off is usually worth it for the accuracy improvement. Another tuning parameter is the cache_ttl, which controls how long pre-computed routes are kept in memory. The default of 3600 seconds is reasonable, but in dynamic environments where road conditions change frequently, you might want to reduce this to 600 seconds. The system will recompute routes more often, but the results will be more accurate, which is usually what matters in production.
What Antigua Viator Doesn't Do Well
I should be blunt about the limitations. The system struggles with real-time traffic integration. If you're relying on live traffic data to compute optimal routes, you're going to be disappointed. The built-in traffic layer is based on historical patterns, not live feeds, and while there are plugins for third-party traffic providers, they're unstable and not officially supported. The mobile SDK is another area where the system falls short. If you're building a mobile application, you'll find that the iOS and Android wrappers are behind the desktop implementation in terms of features. Some of the newer routing algorithms aren't available on mobile, and the offline caching behavior is different, which can cause inconsistencies between what users see on their phones versus what the server returns. Finally, the pricing model is confusing. The open-source edition is fine for small deployments, but once you cross a certain threshold of concurrent users, the licensing costs jump significantly. I've seen small companies get surprised by bills in the thousands of dollars per month when they thought they were staying within the free tier limits. The documentation mentions the limits, but they're easy to miss if you're not reading carefully.

Alternatives to Consider
If Antigua Viator isn't working for your use case, there are alternatives. OSRM is a good open-source option if you're comfortable with C++ and don't need the geospatial query optimization that Antigua Viator provides. Valhalla is another choice if you need multimodal routing support, though it's heavier and slower for pure point-to-point calculations. For cloud-based solutions, Google Maps Routing API and Mapbox Directions API are the obvious choices, but they're expensive at scale and you're at the mercy of their uptime and pricing changes. If you need complete control over your routing infrastructure and are willing to invest in the engineering effort, building something on top of GraphHopper might be worth considering, though it requires significant upfront investment. My recommendation is to start with Antigua Viator for the geospatial query optimization if that's what you need, but have a fallback plan ready. I've seen too many projects get locked into systems that don't scale well because the team didn't plan for migration paths. The code is open source, which helps, but the operational knowledge you build up around a specific deployment is hard to transfer to a different system.
Final Thoughts From Experience
I've been running Antigua Viator in production for about 18 months now, handling roughly 50,000 route computations per day across a fleet of delivery vehicles in the Caribbean region. The system works well for what it's designed to do, but it's not a silver bullet. You need to understand the internals, especially around the geospatial indexing and cache management, or you're going to have a bad time. The community is small but knowledgeable. The GitHub issues page is where most of the real troubleshooting happens, and the maintainers are responsive, though they don't always have time to address every problem. I've contributed a few patches back, mostly around the timezone handling and the cache invalidation logic, and the process has been relatively smooth. If you're considering Antigua Viator for a new project, I'd recommend starting with a proof of concept that tests the specific edge cases you expect to encounter in production. Don't assume the quickstart guide covers your scenario, because it almost certainly doesn't. The system is powerful, but it requires investment in understanding how it works under the hood before you'll get reliable results at scale.