DEV Community

JustRouting
JustRouting

Posted on Edited on

Route planning for Southeast Asia without self-hosting OSRM

Ask anyone who has operated OSRM in production and they will tell you the same thing: the routing engine is excellent, but running the infrastructure behind it is not trivial.

A global OpenStreetMap graph can require serious hardware and long preprocessing times. Even a Southeast Asia extract — the region many applications actually need — still means managing large map files, running osrm-extract and osrm-contract, monitoring memory usage, and rebuilding everything whenever OpenStreetMap data changes.

The hidden cost is not only the server.

Someone has to maintain the pipeline:

  • download updated OSM extracts
  • rebuild routing graphs
  • monitor failed preprocessing jobs
  • keep production instances healthy
  • remember how everything works months later

For many teams, routing is not the product. It is just a capability inside a logistics app, delivery platform, marketplace, or AI agent.

You need routes. You do not want to become a routing infrastructure company.

The alternative: managed routing infrastructure

JustRouting is a hosted routing API focused on Southeast Asia.

Instead of running your own routing stack, you get ready-to-use APIs for:

  • directions
  • distance matrices
  • map matching
  • nearest-road lookup
  • geocoding
  • fleet optimization

The underlying routing engines are powered by open-source technology, but the infrastructure work — servers, preprocessing, updates, and operations — is handled for you.

The important parts:

  • Driving and motorcycle profiles. Motorcycle routing matters in Southeast Asia, where two-wheel delivery and transportation are everywhere.
  • A simple REST API. Use it from any language with JSON requests.
  • Official SDKs for Python, JavaScript/TypeScript, and Go.
  • A free tier for experiments and small projects. No credit card required.

Five lines of Python

import justrouting

client = justrouting.Client("YOUR_API_KEY")

route = client.routes.get(justrouting.RouteRequest(
    origin=[106.8146, -6.1352],       # Jakarta Kota
    destination=[107.6191, -6.9175],  # Bandung
))

print(f"{route.distance / 1000:.1f} km, {route.duration / 60:.0f} min")
Enter fullscreen mode Exit fullscreen mode

Need a motorcycle route?

route = client.routes.get(justrouting.RouteRequest(
    origin=[106.8146, -6.1352],
    destination=[107.6191, -6.9175],
    profile="motorcycle",
))
Enter fullscreen mode Exit fullscreen mode

Distance matrices are also available:

matrix = client.matrix.get(justrouting.MatrixRequest(
    coordinates=[depot, stop_a, stop_b],
    sources=[0],
    destinations=[1, 2],
))
Enter fullscreen mode Exit fullscreen mode

You can request only the rows and columns you need instead of calculating a full N×N matrix.

For delivery fleets, use optimization:

plan = client.optimization.solve(justrouting.OptimizationRequest(
    vehicles=[
        justrouting.Vehicle(
            id=1,
            start=[106.8146, -6.1352],
            end=[106.8146, -6.1352],
        )
    ],
    jobs=[
        justrouting.Job(
            id=101,
            location=[106.8451, -6.2146],
        )
    ],
))
Enter fullscreen mode Exit fullscreen mode

The API returns the optimized sequence for each vehicle.

The same routing capability from Node.js

import { Client } from '@justrouting/client';

const client = new Client('YOUR_API_KEY');

const route = await client.routes.get({
    origin: [106.8146, -6.1352],
    destination: [107.6191, -6.9175],
});

console.log(`${(route.distance / 1000).toFixed(1)} km`);
Enter fullscreen mode Exit fullscreen mode

Both SDKs are lightweight and dependency-free.

Routing for AI agents: introducing MCP

Traditional applications call routing APIs directly:

Application → Routing API → Route result
Enter fullscreen mode Exit fullscreen mode

But AI applications work differently.

An AI agent needs tools it can discover and call dynamically:

AI Agent → Tools → Routing capability
Enter fullscreen mode Exit fullscreen mode

This is where the Model Context Protocol (MCP) becomes interesting.

Instead of writing custom glue code that converts addresses into coordinates, calls geocoding, builds matrices, and parses routing responses, an MCP-compatible agent can use routing as a native capability.

JustRouting provides an official MCP server.

Install it:

curl -fsSL https://raw.githubusercontent.com/justrouting/mcp/main/install.sh | sh
Enter fullscreen mode Exit fullscreen mode

Configure your MCP client:

{
  "mcpServers": {
    "justrouting": {
      "command": "justrouting-mcp",
      "env": {
        "JUSTROUTING_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

The server provides four tools:

  • route — calculate driving routes
  • geocode — convert places into coordinates
  • table — calculate travel-time matrices
  • optimize — solve vehicle routing problems

Now an AI assistant can reason about real-world transportation problems.

For example:

"Which driver should deliver this order in Jakarta?"

The agent can:

  1. geocode the customer's address
  2. calculate travel times from multiple drivers
  3. compare routes
  4. select the closest driver

No manual coordinate lookup.
No custom API integration.
No routing-specific code.

Routing becomes a capability that AI agents can use directly.

Try it before building infrastructure

The interactive demo in JustRouting lets you test routes, matrices, and fleet optimization directly from your browser.

The documentation includes API references and examples.

A free API key takes about thirty seconds.

To be clear about the trade-off:

If you need global coverage, offline routing, or complete control over your routing graph, self-hosting OSRM is still a great option.

But if your users are in Southeast Asia and you simply need reliable routing capabilities, a managed API removes a large amount of operational work.

Keep the open-source routing technology.

Skip the server farm.

Build your product.

Top comments (0)