01 / Capture
Instrument the runtime once
Send SDK spans, raw events, browser artifacts, and evaluation metadata through one ingest path that survives model and framework changes.
theta labs / observability layer
Theta gives multimodal systems one operational layer for traces, screenshots, tool execution, evaluation drift, and incident review so operators can see what happened, why it happened, and where reliability breaks down.

Review live runs, browser evidence, metadata, and tool activity from a single operator surface.
stack coverage
Observability layer
Theta brings traces, screenshots, tool activity, and evaluation context into one operating model for agent teams running production systems.
01 / Capture
Send SDK spans, raw events, browser artifacts, and evaluation metadata through one ingest path that survives model and framework changes.
02 / Normalize
Theta aligns text completions, screenshots, tool activity, and policy events into a shared timeline instead of scattering context across logs.
03 / Operate
Operators can search failures, compare runs, review multimodal evidence, and understand regressions without rebuilding the story by hand.
Operator surfaces
Theta is positioned as an observability layer, not a trace graveyard. The important shift is from seeing events to understanding what happened, why it happened, and what to do next.
Inspect the exact sequence of model output, tool activity, browser state, and user-visible evidence on one surface.
Track regressions across experiments, model switches, and deployment changes before they harden into user-facing incidents.
Start with intent-level search, pivot into exact runs, then hand the same context to evaluation or incident workflows.
Keep data ownership, exportability, and review discipline while still giving operators a clean investigative workflow.
Integration path
The landing page keeps the integration story concrete: standard SDK entry points, browser instrumentation, and export paths for teams that need observability without surrendering control of the data plane.
Signal sources
from theta_observability import trace
with trace(name="checkout-agent") as run:
run.event("browser.open", url="/cart")
run.event("browser.click", target="buy-button")
run.attachment("screenshot", "./theta.png")
run.metric("task_success", 1.0)import { trace } from "@theta/observability";
await trace("research-agent", async (run) => {
await run.event("llm.response", { model: "gpt-5.4" });
await run.event("tool.call", { name: "browser.snapshot" });
await run.metric("latency.bucket", "p95");
});