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.3.tar.gz (31.2 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.3-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: raindrop_strands-0.0.3.tar.gz
  • Upload date:
  • Size: 31.2 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.3.tar.gz
Algorithm Hash digest
SHA256 5e458adb67ea33f6a6216c7eaf8d8e2f0fa7b085d457af31cdb8dc4b97582fd7
MD5 220480e414756c98f684db5f5de048a9
BLAKE2b-256 ac8873699822f20cf81738f7e9684690e4ee85d50251e4aec67a4616be115657

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for raindrop_strands-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 fdf55e9e7b64f9a2c42ee2a45f022af8a146cc2bd914cad1c0f8e5a278033a55
MD5 dfdfb485b247b9af822895c13ff43609
BLAKE2b-256 48bd912e1a574edef268b67070484590ddc154ad83d84d4f89447046b07d6eb4

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