Skip to main content

Raindrop integration for Strands Agents

Project description

raindrop-strands

Raindrop integration for Strands Agents (Python). Automatically captures agent invocations, model calls, tool usage, and token metrics via the Strands hook system.

Installation

pip install raindrop-strands strands-agents

strands-agents is a required dependency.

Quick Start

import os
from strands import Agent
from raindrop_strands import RaindropStrands

raindrop = RaindropStrands(
    api_key=os.environ.get("RAINDROP_API_KEY"),
    user_id="user_123",
    convo_id="session_456",
)

agent = Agent(
    model="us.amazon.nova-lite-v1:0",
    system_prompt="You are a helpful assistant.",
)

raindrop.handler.register_hooks(agent)

result = agent("What is the capital of France?")
print(result)

raindrop.flush()

Omitting api_key disables telemetry shipping (a warning is emitted) but does not crash your application.

Debug Mode

Enable verbose logging to troubleshoot telemetry issues:

raindrop = RaindropStrands(
    api_key=os.environ.get("RAINDROP_API_KEY"),
    debug=True,
)

Configuration

raindrop = RaindropStrands(
    api_key="rk_...",              # Optional: Raindrop API key
    user_id="user_123",            # Optional: associate events with a user
    convo_id="session_456",        # Optional: conversation/session ID
    tracing_enabled=True,          # Optional: enable OTEL-based tracing (default: True)
    bypass_otel_for_tools=True,    # Optional: bypass OTEL for tool spans (default: True)
    debug=False,                   # Optional: enable debug logging (default: False)
)

Factory Function

A create_raindrop_strands() factory function is also available for convenience:

from raindrop_strands import create_raindrop_strands

raindrop = create_raindrop_strands(api_key="rk_...")
agent = Agent(model="us.amazon.nova-lite-v1:0")
raindrop.handler.register_hooks(agent)
result = agent("Hello!")
raindrop.flush()

Identifying Users

raindrop.identify(
    user_id="user_123",
    traits={"plan": "pro", "email": "user@example.com"},
)

Tracking Signals

Track user feedback or other signals on AI responses:

raindrop.track_signal(
    event_id="evt_...",
    name="thumbs_up",
    signal_type="feedback",
    sentiment="POSITIVE",
)

Flush & Shutdown

Always flush before your process exits to ensure all data is sent:

raindrop.flush()       # flush pending data
raindrop.shutdown()    # flush + release resources

What Gets Captured

  • Agent invocations: input prompt, output text, model name
  • Token usage: prompt tokens, completion tokens, and cached tokens (from Bedrock/Anthropic cacheReadInputTokens / cacheCreationInputTokens)
  • Tool call spans: individual tool spans tracked via interaction.track_tool() with name, input, output, duration, and error
  • Finish reason: stop_reason or finish_reason from model responses (e.g., end_turn, tool_use)
  • Errors: error type and message captured in event properties
  • Async support: preserved via Strands' hook system

API

RaindropStrands(api_key, user_id, convo_id, tracing_enabled, bypass_otel_for_tools, disable_auto_instrument, debug)

Option Type Default Description
api_key str | None None Raindrop API key (rk_...). Omit to disable telemetry
user_id str | None None Associate all events with a user
convo_id str | None None Group events into a conversation
tracing_enabled bool True Enable OTEL-based tracing
bypass_otel_for_tools bool True Bypass OTEL for tool spans
disable_auto_instrument bool True Library auto-instrumentation is opt-in (see below)
debug bool False Enable debug logging

Library auto-instrumentation is opt-in

As of 0.0.3, disable_auto_instrument defaults to True: the integration no longer lets Traceloop monkey-patch every LLM client library it recognizes in your process (including the botocore machinery Strands' default Bedrock provider drives). The hook handler captures input/output, token usage, model name, and tool calls directly from Strands hook events, so no library patching is needed for full dashboards.

If you specifically want LLM-call-level spans from library instrumentation and have verified compatibility in your environment, opt back in with disable_auto_instrument=False.

Properties:

  • handlerRaindropEventHandler instance to register on agents

Methods:

  • flush() — flush pending telemetry
  • shutdown() — flush and release resources
  • identify(user_id, traits) — identify a user with optional traits
  • track_signal(event_id, name, ...) — track a signal event

Testing

cd packages/strands-python
pip install -e '.[dev]'
python -m pytest tests/ -v

Full Documentation

See the Raindrop Strands integration docs for full details.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

raindrop_strands-0.0.5.tar.gz (31.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

raindrop_strands-0.0.5-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file raindrop_strands-0.0.5.tar.gz.

File metadata

  • Download URL: raindrop_strands-0.0.5.tar.gz
  • Upload date:
  • Size: 31.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for raindrop_strands-0.0.5.tar.gz
Algorithm Hash digest
SHA256 d903c317ef355920a5fad07899add5aaea36a031def71938ea82dda6bf672097
MD5 4dd80e9d11f7b7bdf7f92ddf5102f565
BLAKE2b-256 335e35e7d558c61de9fc741e631585f6d01010e48cc600ed8d2d9e65e9f72c0e

See more details on using hashes here.

File details

Details for the file raindrop_strands-0.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for raindrop_strands-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 1508a0f274003690135d7e5bb08c40be08fc71a858d382086995b08402f14c72
MD5 55d7a897ca45d2e7c35bad7aa4b483d9
BLAKE2b-256 001715fbc37f4e526181c44ea31250af9f2b95442b2666b63921836d49716dcf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page