Skip to content
WORKSI AI Control

02Observe

See every run, every call, every cost.

Worksi records each model call, tool call, step and approval as a span and stitches them into runs, so you can follow an agent from the first prompt to the final outcome, live or weeks later.

support-ticket-resolution · one run, one trace
  • workflow_runsupport-ticket-resolution

    one run, one trace

    • agent_steptriage

      triage-agent

      • llm_callgpt-5-mini

        chat.completions · tokens, cost, latency

    • agent_stepresearch

      resolver-agent

      • llm_callembeddings

        text-embedding-3-small · tokens, cost

      • tool_callsearch_kb

        kb-vector-store

      • tool_calllookup_order

        orders-db · args hash

    • agent_steprefund

      refund-agent

      • llm_callgpt-5-nano

        chat.completions · refund eligibility

      • tool_callissue_refund

        payments-api

    • agent_stepdraft_reply

      resolver-agent

      • llm_callgpt-5

        chat.completions · reply draft

    • agent_stepnotify

      resolver-agent

      • tool_callsend_email

        the reply to the customer

One schema for every source.

Gateway calls, SDK spans, MCP tool calls and OpenTelemetry traces land in one span model, so dashboards, detection and the graph work the same whichever way you connect.

Gateway
An llm_call for every chat, Responses and embeddings call, with model, tokens, cost and latency.
SDKs
workflow_run, agent_step, tool_call, retrieval and human_action around your code. Model calls become children of the step.
MCP
A tool_call for every tool an agent calls through the MCP gateway, with the server, an argument hash, the status and the latency.
OpenTelemetry
GenAI spans mapped by gen_ai.operation.name: model calls, tool calls and agent steps, in the same traces.

One run, one screen.

Open any trace for its span waterfall with timings, the failure location marked, and an inspector with model, tokens, cost, status, errors and the previews your capture mode allows.

  1. 1. Linked incident. The trace links straight to INC‑5.

  2. 2. The first failure, named at the top of the trace.

  3. 3. Run totals: duration, spans, tokens and cost.

Traces · run header · sample data from the built‑in demo organization

Live, as it happens.

A streaming feed of model and tool calls with latency, tokens and cost, next to live counters for requests per minute, error rate, active runs and spend.

  1. 1. Every model and tool call as it happens.

  2. 2. Attributed to agent and workflow.

  3. 3. Status on every call.

Live activity · sample data from the built‑in demo organization

Choose how much content is stored.

Every environment has a capture mode. A client can make it stricter per request, never looser.

Capture modes
ModeWhat is stored
fullInput and output previews up to 2,000 characters. Payloads over 16 KiB go to object storage for 90 days.
redacted (default)The same previews, with sensitive values replaced by [REDACTED:TYPE].
metadata_onlyNo previews: hashes, counts, tokens, cost, timings, status and error types.

What depends on what, and what breaks.

The AI Graph combines what you declared with what the traffic shows: workflows, agents, models, providers, tools and data sources, with call volumes and error rates on every edge.

  • Impact mode highlights everything upstream and downstream of a node.
  • Affected workflows, runs and cost at a glance.
  • Agents, models, workflows and tools seen in traffic but never registered appear as discovered, ready to register or ignore.
  • Rebuilt every five minutes from the last seven days of traffic.
  • Included in Pro, Business and Enterprise, and in the trial.

Name the agent on every call.

Two optional headers attribute each request to an agent and a workflow, and your traces group themselves.

Terminal
curl https://gateway.worksi.ai/v1/chat/completions \  -H "Authorization: Bearer $AIW_API_KEY" \  -H "X-AIW-Agent: support-bot" \  -H "X-AIW-Workflow: customer-chat" \  -H "Content-Type: application/json" \  -d '{"model": "gpt-5-mini", "messages":       [{"role": "user", "content": "Hi"}]}'