Product

Every call, token, and dollar — in real time.

Vantafold records a full trace for every request: the route taken, each tool call, the tokens consumed, and what it cost. No sampling, no separate agent to install.

  • 100%of requests traced
  • 90 daysretention on Pro
  • < 5 strace availability
  • OTLPnative export
Overview acme-prod / billing-agent
1h24h7d30d
Requests
4.82M
vs. last week +12.4%
p95 latency
940 ms
vs. last week −18.1%
Tokens
1.94B
vs. last week +9.7%
Spend
$12,480
vs. last week +4.2%

Requests per hour

last 24 hours · UTC

00:0006:0012:0018:0023:00

Spend by model

last 24 hours

frontier-lg
$5,820
reason-pro
$3,140
oss-70b-instruct
$1,690
vision-lg
$1,180
fast-8b
$410

Trace tr_5b1d9e0c

1,284 ms total

POST /v1/reason
1284 ms
gateway.auth
8 ms
router.select
31 ms
model.frontier-lg
1180 ms
tool.ledger_lookup
402 ms
observability.emit
6 ms

Interface preview. Figures are illustrative.

What you get

Answers, not just charts.

The questions teams actually ask about production AI, answerable without exporting anything to a spreadsheet.

Cost attribution

Break spend down by model, route, project, endpoint, or your own tags — including per-customer, if you send a customer ID.

Full-fidelity traces

Every span: gateway, routing decision, provider call, each tool invocation, and the retry chain when one occurs.

Latency breakdown

Time-to-first-token and total duration, split by the part of the path that spent it, so you know whether to blame the model or your tool.

Quality signals

Attach evaluation scores and user feedback to a trace and watch them move when you change a route or a prompt.

OpenTelemetry export

Ship spans and metrics to your own collector over OTLP. Vantafold spans join your existing traces rather than living in a separate tool.

Redaction

Field-level redaction before storage, or zero-retention mode where only metadata and counters are kept.

Instrumentation

Two lines, then it is on.

tracing.py
from vantafold import Vantafold
from opentelemetry import trace

client = Vantafold(
    otel_endpoint="https://otel.internal:4317",   # your collector
    otel_attributes={"service.name": "billing-agent", "deploy.env": "prod"},
)

with trace.get_tracer(__name__).start_as_current_span("reconcile"):
    response = client.reason(model="auto", input=prompt, tools=[ledger_lookup])

# Spans, token counts, and cost are exported on the same trace as your own spans.
print(response.trace_id, response.usage.cost_usd)

Trace schema

Every trace carries the same envelope, so you can query it without knowing which model answered.

trace.json
{
  "trace_id": "tr_5b1d9e0c",
  "duration_ms": 1284,
  "route": { "requested": "auto", "selected": "frontier-lg", "attempts": 1 },
  "usage": { "input_tokens": 4210, "output_tokens": 186, "cost_usd": 0.0154 },
  "spans": [
    { "name": "gateway.auth", "start_ms": 4, "duration_ms": 8 },
    { "name": "router.select", "start_ms": 12, "duration_ms": 31 },
    { "name": "model.frontier-lg", "start_ms": 46, "duration_ms": 1180 },
    { "name": "tool.ledger_lookup", "start_ms": 214, "duration_ms": 402 }
  ],
  "tags": { "project": "billing-agent", "customer_id": "cus_2f81" }
}

Know what your AI costs before finance does.

Traces are on by default on every plan, including the free tier.