Skip to main content
Veri records terminal telemetry for buffered and streaming inference requests. Use the Analytics dashboard for visual investigation, the SDK or REST API for automation, and MCP when you want an agent to investigate a deployment. This guide is also a smoke test: follow Verify observability end to end after deploying a model to confirm that request telemetry, time-series aggregation, and agent tools are working.

Choose an interface

MCP is optional. It is useful for agent-driven investigation, but the dashboard, SDK, and REST API expose deployment observability without it.

Verify observability end to end

1. Select a serving deployment

Copy the deployment id and export it for the REST examples:

2. Generate buffered and streaming traffic

Send a regular request with the Veri CLI:
Then send a streaming request. Replace the model name with the deployment’s configured name:
include_usage gives Veri authoritative token counts for the stream. Veri requests it automatically when traffic passes through the deployment proxy, but setting it explicitly makes the test self-documenting.

3. Inspect the dashboard

Open Analytics in the Veri dashboard and select the deployment. Choose Past hour, then click refresh. After the two requests finish, expect:
  • Request and token volume to be non-zero.
  • The recent requests table to contain both requests.
  • End-to-end latency samples for successful buffered and streaming requests.
  • TTFT and TPOT samples for the streaming request.
  • A zero or near-zero error rate.
  • Cost-efficiency values once the window contains successful requests with output tokens.
Engine charts populate from replica heartbeats rather than request rows. Queue depth, KV-cache usage, prefix-cache hit rate, generation throughput, and replica count can therefore appear on a different cadence.

4. Verify with the Python SDK

datetime values are serialized as RFC 3339 timestamps. You can also pass RFC 3339 strings directly. A minimal automated smoke test can assert:

5. Verify with REST

Lifetime counters:
Time-series metrics default to the past seven days when from and to are omitted:
Only failed requests in a bounded window:

Scope results to a single replica

The metrics/timeseries, metrics/engine-timeseries, and requests endpoints accept an optional replica_id query parameter. List replica IDs with GET /v1/deployments/$DEPLOYMENT_ID/replicas:
When replica_id is set, buckets, the window summary, engine gauges (queue depth and KV-cache utilization), and recent requests are scoped to that replica. Cost efficiency becomes replica-scoped as well: window cost is the replica’s own active interval multiplied by its per-box GPU rate. Scoped metrics responses echo replica_id at the top level. The ID must be a replica of the deployment; unknown IDs return 404. Omit the parameter to keep deployment-wide aggregates. See the interactive API reference for complete response schemas.

Investigate with MCP

Set up Veri MCP by following Model Context Protocol. In read-only mode, all observability tools remain available; only tools that create, cancel, stop, or rescore resources are removed. Useful deployment tools: Try these prompts:
Inspect deployment dep_... over the past hour. Summarize request volume, p50/p95/p99 TTFT and end-to-end latency, token throughput, error rate, and cost efficiency. Then list failed requests and group them by error category. Do not modify resources.
Compare the past 24 hours with the preceding 24 hours for deployment dep_.... Identify latency, error-rate, throughput, or cost regressions and cite the metric values behind each conclusion.
Review deployment dep_... and my billing overview. Explain whether request volume, output-token efficiency, errors, or the current GPU burn rate is the main cost risk. Do not modify resources.
Agent responses are only as complete as the telemetry window. Include the deployment ID and an explicit period in prompts when you need reproducible results.

Metric semantics

Request timing

TTFT and TPOT are most meaningful for streaming responses. TPOT is only calculated when the upstream engine reports usage. Latency percentiles use successful requests so application and transport failures do not distort the serving-latency distribution.

Traffic and errors

Each terminal request record can include:
  • Prompt, cached prompt, and completion tokens.
  • Request and response byte counts.
  • HTTP status and finish reason.
  • Whether the response streamed and whether usage was reported.
  • A bounded error category and diagnostic message.
  • Client cancellation or disconnection state.
  • Request start and completion timestamps.
Error charts separate client errors from server or interrupted-stream errors. Use request history to inspect the underlying error_category and message.

Cost efficiency

The dashboard and time-series response derive:
  • Cost per successful request.
  • Cost per million output tokens.
  • Tokens per dollar.
  • Total deployment cost for the selected window.
Cost-per-token values require reported completion tokens. A request can be successful while lacking usage, so compare usage_reported when investigating missing efficiency data.

Engine health

Replica heartbeats provide:
  • Running and waiting requests.
  • KV-cache utilization.
  • Prefix-cache hit rate.
  • Generation token throughput.
  • Active replica count.
Request telemetry and engine telemetry are intentionally separate. Request rows describe completed client operations; engine history describes sampled replica state.

Troubleshooting

Where to go next

MCP setup

Let an agent query deployment, training, billing, and evaluation context.

Deployment commands

Generate traffic, benchmark an endpoint, and inspect recent requests.

API reference

Integrate metrics and request history into your own systems.

Deployment billing

Understand hourly GPU billing and scale-to-zero behavior.