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 theDocumentation Index
Fetch the complete documentation index at: https://arize-ax.mintlify.dev/docs/llms.txt
Use this file to discover all available pages before exploring further.
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
- Sign in to your Arize AX account.
- From Space Settings, copy your Space ID and API Key. You will set them as
ARIZE_SPACE_IDandARIZE_API_KEYbelow.
Install
Configure credentials
Setup tracing
Strands emits OpenTelemetry spans natively throughStrandsTelemetry. 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
- Open your Arize AX space and select project
strands-agents-tracing-example. - You should see a new trace within ~30 seconds with this shape: an
invoke_agent <agentName>root span (AGENT) wrapping anexecute_event_loop_cyclespan (CHAIN) and achatLLM span (modelus.anthropic.claude-sonnet-4-6, prompt + response + token usage attached). - If no traces appear, see Troubleshooting.
Troubleshooting
- No traces in Arize AX. Confirm
ARIZE_SPACE_IDandARIZE_API_KEYare set in the same shell that runsexample.py. Enable OpenTelemetry debug logs withexport OTEL_LOG_LEVEL=debugand 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’ internaltrace.get_tracer(...)falls through to the no-op provider and emits no spans. Always callset_tracer_provideryourself. AccessDeniedExceptionfrom Bedrock. Your IAM principal needsbedrock:InvokeModelpermission, 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) oreu.anthropic.claude-sonnet-4-6.ExpiredTokenException. SSO / STS temporary credentials expired. Refresh and re-exportAWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_SESSION_TOKEN.- Spans dropped at process exit. Always
provider.force_flush(...)andprovider.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 sameStrandsAgentsToOpenInferenceProcessorcovers every adapter — only the model construction changes.