← Back to the demo

Connect your agents

Point your AI agents at Scopex3D and watch them run in 3D — see every step, cost, and failure live.

The same traces you send to LangSmith or Langfuse — rendered live in 3D.

Get your API key →You’ll need it for either option below.
Already on OpenTelemetry? · zero SDK

Point your OTLP exporter here

If your app already emits OpenTelemetry (LangSmith, Langfuse, OpenLLMetry, Arize…), just set these env vars. One trace becomes one 3D session.

OTEL_EXPORTER_OTLP_TRACES_ENDPOINT = https://scopex3d.com/v1/traces
OTEL_EXPORTER_OTLP_PROTOCOL         = http/json
OTEL_EXPORTER_OTLP_HEADERS          = x-api-key=<your SCOPEX3D_API_KEY>

Watch a trace at /live?sessionId=otel-<traceId>. OTLP/HTTP JSON supported today.

Not on OpenTelemetry? · ~5 lines

Use the SDK

Drop sdk/scopex3d.ts into your project and emit events from anywhere in your agent code.

import { Scopex3D } from "./sdk/scopex3d";

const ns = new Scopex3D({ apiKey: (process.env.SCOPEX3D_API_KEY ?? process.env.SCOPEX3D_API_KEY)! });
await ns.start({ agent: "Planner" });
console.log("Watch live:", ns.watchUrl());

await ns.llmCall({ agent: "Planner", cost: 0.02, reasoning: "Drafting the plan" });
await ns.toolUse({ agent: "Coder", payload: { file: "LoginForm.tsx" } });
await ns.error({ agent: "Coder", reasoning: "TypeError: cannot read 'map'" });
await ns.end();

Try it instantly: node examples/try-scopex3d.mjs

Any language · raw HTTP

Or just POST events

POST https://scopex3d.com/api/sessions   x-api-key   { "agent": "Planner" }            → { "id" }
POST https://scopex3d.com/api/ingest     x-api-key   { "sessionId", "agent", "type", "cost", "payload" }
GET  https://scopex3d.com/live?sessionId=<id>          ← open in a browser to watch in 3D
▸ See the live demo

Event types: agent_start · llm_call · tool_use · routing_decision · error · agent_end · plan
Optional: attach payload.eval ({ score: 0–1, criteria, grader }) to any event to see graded steps on click.