◆ EU-hosted intelligenceOpenAI-compatiblepaid in native VAGA

AGENTS DON’THOLD CREDIT CARDS.THEY HOLD VAGA.

VAGA Router gives VagaChain agents a European brain: 100+ models, hosted in the EU, behind an OpenAI-compatible endpoint. Every request reserves a VAGA ceiling on-chain, runs in Europe, settles the exact cost — and releases the change back to the agent.

demo router · simulated locallysettled to the 12th decimal · durable · idempotent
EU DATA RESIDENCY◆OPENAI-COMPATIBLE◆100+ MODELS◆GDPR BY DEFAULT◆PAID IN NATIVE VAGA◆RESERVE → INFER → SETTLE → RELEASE◆EXACT TO 10⁻¹²◆MISTRAL · OVH · IONOS · NEBIUS◆IDEMPOTENT BY DESIGN◆1 VAGA = 10¹² BASE UNITS◆
01 /the machine · four moves

A deposit, not a subscription.

Every inference is a self-contained escrow operation: the agent controls the ceiling, the router pays the model, the chain settles the truth. Four moves — no trust needed.

escrow · operationlive cycle
AGENTESCROWMODELTREASURY
01
phase
RESERVE
01RESERVE

The agent puts down a deposit.

Before any model runs, the router locks the maximum possible price in VAGA — on VagaChain, not in someone's database. A hard ceiling the agent controls. Nothing can ever spend more than that.

02INFER

A European model does the work.

The request runs on EU-hosted models — Mistral, Llama, GPT, Gemini, whichever the agent picks. The compute stays inside the European Union. Streaming, OpenAI-compatible, no code changes.

03SETTLE

Payment is exactly what it cost.

When the answer is done, the router reads the real usage and converts it to VAGA — to the twelfth decimal. No estimates, no rounding games. A signed receipt lands on-chain. VagaChain's own gas for the three on-chain steps is paid in VAGA on top — small, predictable, never mixed into the compute price.

04RELEASE

The change goes back to the agent.

The unused part of the deposit returns to the agent automatically — down to the last base unit. Escrow back to zero, operation closed. Ready for the next request.

02 /sovereign intelligence

YOUR AGENTS THINK IN EUROPE.

Every model behind the router runs on European infrastructure — GDPR by default, EU data residency, no US detours. The agent picks the brain. The location is not negotiable.

100+
models · eu-hosted
via EUrouter · zero retention
inference providers on the route
Mistral AIFR
OVHcloudFR
ScalewayFR
IONOS CloudDE
LyceumDE
AKI.IODE
NebiusNL
NebulNL
GreenPTNL
RegoloIT
InfercomLU
InceptronSE

The live catalog is fetched from the router on every call — models without exact EUR pricing, text modality, or a bounded output limit never make it onto the route. If it’s listed, it runs in Europe.

Browse the live catalog
03 /settlement math

Exact money, to the 12th decimal.

VAGA settles in integer base units — 10¹² per VAGA. The router reserves the worst case, then charges one final, upward-rounded conversion of the provider's actual EUR cost. No floats. Ever.

native unit precision
1VAGA =
1000000000000base units
Base units are VagaChain’s smallest settlement unit — 10⁻¹² VAGA. Balances move in integer counts of these: when the router settles, it locks and transfers a whole number of base units. Nothing smaller exists, nothing gets rounded away.

Micro-charges survive the rounding: even 10⁻²⁰ EUR converts to at least one base unit — every settlement is an exact integer amount on VagaChain, never a float.

reservation bound estimator
illustrative
Input tokens
Output limit
Expected completion
Request fee €
Prompt €/1M
Completion €/1M
EUR per VAGA
Chain gas · VAGA/tx
Operator markup
100%
reserve bound 0.0004536 EUR · worst caseexpected actual 0.00039 EUR · + markup
0.009072VAGA reserved (max)
9072000000 base units
settled 0.0078 VAGA · 86.0%released 0.001272 VAGA · 14.0%
+ chain gas ≈ 0.300 VAGA · 3 tx (reserve · settle · release)total debit ≈ 0.3078 VAGA

Mirrors the backend conversion ceil(cost · (1+markup) · 10¹² ÷ eur_per_vaga). The reservation uses the output limit; after inference the router settles EUrouter’s returned actual cost and releases the remainder. Settlement covers compute only — VagaChain bills its own gas for the three on-chain operations (reserve, settle, release), paid in native VAGA by the submitting account on top. Rate, markup, gas, and prices here are illustrative (.env.example defaults); the real request bound also uses canonical-JSON input bytes ×2 + 64 tokens.

04 /terminal // router access

DON’T BELIEVE IT. USE IT.

Everything below talks to the VAGA Router backend — reservation, European inference, settlement, receipts. In demo mode it runs against a local simulation; flip the toggle in the nav to go live.

vagarouter://terminal·simulated session
demo mode activeThe router below is simulated in your browser — same API shapes, same settlement lifecycle, mock data only. No chain calls, no real VAGA. Issue a demo credential in the Credential Studio and everything downstream works.
04 /live catalog

Models come from /v1/models — nothing else.

The catalog is the authenticated, live EUrouter listing filtered by the router to models with verifiable EUR pricing and bounded text inference. No hardcoded lists, no cached catalogs — and every entry runs on European infrastructure.

Bearer credential · vcomp_…

Connect with a vcomp_ credential — issue one below in the Credential Studio.

05 /credential studio

Issue a vcomp_ credential — signed outside the browser.

Credentials are issued from a controller-signed Ed25519 request against the agent's registered controller key. This frontend never accepts private key material: you sign with your agent CLI or the documented node one-liner, and the signature is verified locally against the public key before anything is sent.

demo mode · no real keys needed

The router is simulated locally. Fill in a demo agent and a simulated signature — the mock router issues a fully usable demo credential for the playground.

Agent ID
Controller key · Ed25519 public, 0x + 64 hex
Label · optional, ≤ 80 chars
Lifetime
Expires at · UTC ms
Nonce · canonical decimal
Signature · 128 hex over the message on the right

This frontend never accepts seeds or private keys. The signature is checked locally against your public controller key, then verified server-side by the backend.

Canonical message · sign exactly these UTF-8 bytes
Fill in agent id and controller key…
Sign externally · node one-liner (localhost tooling)
…

what the backend checks

  • · the controller key is registered on the VagaChain agent
  • · the Ed25519 signature over the canonical message verifies
  • · the nonce is canonical and the issue hash was never used before (replay protection)
  • · expiry is a millisecond UTC ISO timestamp within the configured max lifetime
06 /api reference

Speak OpenAI. Settle on VagaChain.

Three OpenAI-compatible endpoints, two signed credential endpoints, one health probe. Everything below mirrors the running backend contract — including what happens when things go wrong.

inference
  • GET
    /v1/models

    Authenticated live model catalog (EUrouter-shaped, filtered to safe models).

  • POST
    /v1/chat/completions

    OpenAI-compatible chat. Requires Idempotency-Key (recommended).

  • POST
    /v1/responses

    OpenAI Responses API shape. Same billing pipeline.

  • GET
    /v1/operations/:id

    Settlement & receipt status for the caller's own operations — foreign or unknown ids are a non-enumerable 404.

credentials
  • POST
    /v1/credentials

    Controller-signed issue. Returns the raw vcomp_ token exactly once.

  • POST
    /v1/credentials/:id/revoke

    Controller-signed revocation. Immediate 401s afterwards.

  • GET
    /healthz

    Unauthenticated process health check.

headers that matter
Authorization
Bearer vcomp_… — authentication only; payment is on-chain VAGA.
Idempotency-Key
Recommended. Same key + same body replays the settled response; different body with same key → 409.
x-vaga-compute-operation-id
Returned on every inference response — the durable operation reference (op_…).
Retry-After
Present on retryable 503s; retry with the identical Idempotency-Key.
openai sdk · drop-in
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.VAGA_ROUTER_TOKEN, // vcomp_… (auth only)
  baseURL: "https://api.vagarouter.dnsstack.pro/v1"
});

const completion = await client.chat.completions.create(
  {
    model: "mistralai/mistral-large",
    messages: [{ role: "user", content: "ping" }],
    max_completion_tokens: 64
  },
  { headers: { "Idempotency-Key": "agent-run-42" } }
);

Point any OpenAI SDK at the router base URL and pay with VAGA. The local backend listens on http://127.0.0.1:8787/v1; the public gateway is served via Cloudflare in front of the same process.

response shape
{
  "id": "resp-…",
  "model": "mistralai/mistral-large",
  "choices": [{
    "message": { "role": "assistant", "content": "Escrow = " … },
    "finish_reason": "stop"
  }],
  "usage": { "prompt_tokens": 21, "completion_tokens": 14 }
}
failure is a first-class citizen
HTTPCodeMeaningRetry
401invalid_bearer_token / credential_expired_or_revokedCredential missing, unknown, expired, or revoked.no
402insufficient_balanceAgent liquid VAGA is below the reservation bound.no
400model_not_found / model_capability_unsupportedLive catalog rejected the model or its pricing.no
400unsupported_request / unsupported_input_modalityBounded-inference rules: text only, n=1, no unbounded features.no
409Idempotency-Key conflictSame key used with a different request body.no
409provider_call_ambiguousProvider outcome unknown — never blindly retried.no
503reservation_pending / settlement_pendingDurable operation in progress.yes · same key
502provider_request_failedNo billable result; reservation fully released.new request

Streaming requests are raw SSE passthrough: after the provider window opens, nothing is retried. Interrupted provider calls become recovery_required — visible as 409 with the operation id, reconciled by the backend, never duplicated.

07 /playground

Run a real request. Watch it settle.

Simulated locally in demo mode — same shapes, same settlement lifecycle, mock data. Hit “Use demo credential”, run a request, and watch the operation close.

Bearer credential · vcomp_…

The playground sends your credential only as an Authorization header to the API base.

Model
System · optional
Prompt
max_completion_tokens
Idempotency-Key
no request yet

reserve → infer → settle → release

connect a credential and run

all operations are durable · idempotent · replay-safedemo router
◆ No keys, ever

The frontend holds no private keys and no provider secrets. Your controller seed signs in memory and is gone when the tab closes.

◆ Auth-only tokens

The vcomp_ credential is sent only as an Authorization header. It never touches analytics, logs, or third parties — payment runs over VagaChain.

◆ Europe by default

Inference runs on EU-hosted infrastructure only. The VagaChain RPC and the backend database stay on loopback — the public gateway fronts the router process alone.

◆ Verifiable operations

Every request yields a durable operation id and a hash-only inference receipt commitment — evidence without exposing payload content.