Skip to main content
Strands Agents SDK is an open-source framework from AWS for building agentic applications with tool use, memory, and model abstraction. Arize AX captures every Strands agent run — agent invocations, tool calls, model calls — via the openinference-instrumentation-strands-agents processor, which converts Strands’ native OpenTelemetry spans into OpenInference format.

Prerequisites

  • Python 3.10+
  • An Arize AX account (sign up)
  • An AWS account with Bedrock model access enabled for the model you want to call (the example uses Anthropic Claude Sonnet 4.6 — request access from the Bedrock console under Model access if you haven’t already)

Launch Arize AX

  1. Sign in to your Arize AX account.
  2. From Space Settings, copy your Space ID and API Key. You will set them as ARIZE_SPACE_ID and ARIZE_API_KEY below.

Install

Configure credentials

Setup tracing

Strands emits OpenTelemetry spans natively through StrandsTelemetry. The OpenInference processor (StrandsAgentsToOpenInferenceProcessor) reshapes those spans into the OpenInference semantic-convention layout Arize AX expects, then the OTLP exporter ships them to Arize AX.

Run Strands

Expected output

Verify in Arize AX

  1. Open your Arize AX space and select project strands-agents-tracing-example.
  2. You should see a new trace within ~30 seconds with this shape: an invoke_agent <agentName> root span (AGENT) wrapping an execute_event_loop_cycle span (CHAIN) and a chat LLM span (model us.anthropic.claude-sonnet-4-6, prompt + response + token usage attached).
  3. If no traces appear, see Troubleshooting.

Check from the skill, CLI, or SDK

Confirm spans are actually reaching your Arize AX project. Use whichever fits your workflow — the skill and CLI work for any framework; the SDK check is shown for each language.
Install the Arize Skills plugin and let your coding agent check for you:
Then prompt your agent:
Use the arize-trace skill to export and analyze recent traces from my project. Confirm spans are arriving, and summarize any errors or latency issues.

Troubleshooting

  • No traces in Arize AX. Confirm ARIZE_SPACE_ID and ARIZE_API_KEY are set in the same shell that runs example.py. Enable OpenTelemetry debug logs with export OTEL_LOG_LEVEL=debug and re-run.
  • The agent runs but no spans appear. The most common cause is omitting trace.set_tracer_provider(provider). StrandsTelemetry(tracer_provider=...) accepts the provider but does not register it as global, so Strands’ internal trace.get_tracer(...) falls through to the no-op provider and emits no spans. Always call set_tracer_provider yourself.
  • AccessDeniedException from Bedrock. Your IAM principal needs bedrock:InvokeModel permission, and the foundation model in the example needs to be enabled under Model access in the Bedrock console.
  • ValidationException: Invocation of model ID anthropic.claude-sonnet-4-6 ... isn't supported. Newer Claude models on Bedrock require cross-region inference profiles. Prefix the model id with a geography slug — us.anthropic.claude-sonnet-4-6 (the example uses this) or eu.anthropic.claude-sonnet-4-6.
  • ExpiredTokenException. SSO / STS temporary credentials expired. Refresh and re-export AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN.
  • Spans dropped at process exit. Always provider.force_flush(...) and provider.shutdown() before the script returns; otherwise the OTLP HTTP exporter’s background batch can be cut off.
  • Other model providers. Strands ships adapters for OpenAI (strands.models.openai.OpenAIModel), Anthropic native (strands.models.anthropic.AnthropicModel), and others. The same StrandsAgentsToOpenInferenceProcessor covers every adapter — only the model construction changes.

Resources

Strands Agents Documentation

OpenInference Strands Instrumentor

Strands Agents SDK

Restaurant Assistant Tutorial (full agent with KB + tools)