LowRouter

Sovereignty and transparency

Two of the practical reasons teams move from a single LLM provider to a gateway are sovereignty (where the request goes) and transparency (what’s actually happening). Both deserve concrete answers, not adjectives.

Sovereignty

LowRouter’s control plane is operated from the European Union by Carbonifer SAS. The data plane — the providers that actually run the inference — covers multiple regions: EU (Mistral, Anthropic via EU endpoints, Bedrock EU), US (OpenAI, Anthropic via US endpoints, Bedrock US), and a growing set of regional Vertex AI deployments.

When you send a request without a region preference, the router picks based on availability and the carbon-intensity heuristic described in provider routing. The chosen region is reported in the response.

When you need data residency:

  • Pin a region in the request body (route.region) or via a virtual key policy (recommended for production).
  • The route fails closed: if no provider in the requested region is available, the request returns an error rather than silently falling back to another region.

We do not run inference on user prompts inside our own infrastructure beyond what is required to forward and account for them. Logs are documented in usage accounting.

Transparency

Every API response includes a provider field with the upstream that served it, a region field with the region it served from, and a generation_id that can be looked up later through GET /generation/{id}. The dashboard shows the same data per request, per day, and aggregated per model.

The carbon and energy numbers shown on the dashboard are produced by the formula in methodology. The formula’s coefficients, the model parameter counts we use, and the grid-intensity values we apply are documented and dated. When a value changes — for instance, when a new IEA dataset replaces an older one — the change is reflected in the dashboard with the date it took effect.

The platform is operated by a small team. There is no army of unaccounted-for logging or analytics services. The third-party services involved are listed in the privacy policy.

How to verify

  • Read methodology and audit the formula.
  • Send a request with lowrouter/auto, then re-send it pinned to a specific provider/region. Compare provider, region, and eco fields in the responses.
  • Open the corresponding entries on the dashboard and confirm the numbers match.
  • Use GET /generation/{id} to fetch the full record after the fact. The numbers are stable.

If something doesn’t reconcile, that’s a bug, not a feature — please file an issue.