Skip to main content
Strands Agents is an open-source SDK from AWS for building AI agents. It provides a simple, code-first approach to creating agents with tools, multi-agent orchestration, and streaming support. HoneyHive integrates seamlessly with Strands—no instrumentor needed. Strands uses OpenTelemetry natively, so initializing HoneyHive first automatically captures all agent activity.

Python

Trace strands-agents with the HoneyHive Python SDK

TypeScript

Trace @strands-agents/sdk with a standard OTLP exporter

Quick Start

Zero configuration required. Just initialize HoneyHive before importing Strands and all agent runs, tool calls, and model calls are automatically traced.
To see where to initialize the tracer for your environment, including AWS Lambda and long-running servers, see Tracer Initialization.

Tested Versions

HoneyHive’s Strands integration is tested against the following versions, as of October 2026. Newer patch releases are generally safe; pin to these versions to reproduce a known-good configuration. Requires Python 3.11+.
Don’t use openinference-instrumentation-strands-agents. That SpanProcessor (from Arize/OpenInference) isn’t supported by HoneyHive’s ingestion pipeline today and its spans may be dropped or misrouted. Strands’ native OTel path shown above is the recommended and fully supported approach.

What Gets Traced

HoneyHive automatically captures:
  • Agent invocations - Every agent() call with inputs and outputs
  • LLM calls - Model requests, responses, and token usage
  • Tool executions - Each tool call with arguments and results
  • Event loop cycles - Internal agent reasoning steps
No manual instrumentation required.

Example: Agent with Tools


Example: AWS Bedrock Model Backend

Strands works with AWS Bedrock via BedrockModel. You’ll need AWS credentials configured via any standard mechanism — ~/.aws/credentials, an IAM role, or environment variables:
Use a cross-region inference profile (the us. or global. prefix on the model ID) rather than a bare model ID. Bedrock requires the prefixed form for on-demand requests to Claude models — without it, Strands will fail with a model-access error. Example: us.anthropic.claude-haiku-4-5-20251001-v1:0.

Example: Multi-Agent (Agents-as-Tools)

Strands supports wrapping agents as tools for orchestration patterns:
In HoneyHive, you’ll see the full trace hierarchy: orchestrator → specialist agent → LLM calls.

Adding Metadata

Session-Level (User Context)

Use enrich_session for metadata that applies to the entire session:

Span-Level (Agent Attributes)

Use Strands’ native trace_attributes for metadata on agent spans:
These attributes appear on all spans created by that agent (invocations, LLM calls, tool executions).

Troubleshooting

Traces not appearing

  1. Initialize HoneyHive first - Must be called before importing Strands:
  1. Check environment variables - Ensure HH_INGESTION_API_KEY is set
  2. Verify model credentials - Ensure your model provider credentials are configured (Anthropic API key, AWS credentials, etc.)

TypeScript

The Strands Agents TypeScript SDK also emits OpenTelemetry spans natively, so you can send them to HoneyHive with a standard OTLP exporter. HoneyHive groups spans into a session by honeyhive.session_id. Strands sets it only on the root agent span, so tracing.ts below copies it to every child span.

Install

Configure the exporter

Create an ingestion API key under Settings > Project > API Keys > Ingestion. The same tab shows your data plane URL.

Register the tracer provider

tracing.ts

Run an agent

agent.ts
Run it with npx tsx agent.ts. The agent, model, and tool spans appear in one session in HoneyHive.
  • Generate a new honeyhive.session_id for each conversation. Reuse it across invoke calls to keep a multi-turn conversation in one session.
  • To use Bedrock, replace OpenAIModel with BedrockModel from @strands-agents/sdk/models/bedrock.
Tested in October 2026 with @strands-agents/sdk 1.19.0, @opentelemetry/sdk-trace-node 2.12.0, Node.js 22, and the OpenAI model provider.

Add metadata, metrics, and feedback

To enrich a session after the run, use the TypeScript API SDK with the session ID that agent.ts prints.
enrich.ts
Run it with npx tsx enrich.ts <session-id>.

Enrich Your Traces

Add user IDs and custom metadata to Strands traces

Custom Spans

Create spans for business logic around agent calls

Distributed Tracing

Trace agents across service boundaries

Query Trace Data

Export traces programmatically

Resources