Radicas Docs
Framework integrationsAgent frameworks

CrewAI

Connect CrewAI crews to Radicas via the OpenInference instrumentor.

Status: experimental — the strategy is implemented, but the deep-dive has NOT validated this path: no captured fixture and no registry card yet (expected card: openinference.crewai).

Install

pip install "radicas[crewai]"      # = radicas + openinference-instrumentation-crewai

Use

import radicas

radicas.init(service="pricing-agent", feature="flight-pricing")
# instrument="auto" detects crewai and activates CrewAIInstrumentor().instrument()
# — or explicitly: radicas.init(instrument=["crewai"])

from crewai import Agent, Crew, Task
crew = Crew(agents=[analyst], tasks=[task])
crew.kickoff(inputs={"question": prompt})
radicas.shutdown()

Explicit selection with the instrumentor missing raises MissingInstrumentorError naming radicas[crewai].

What it emits

  • Scope name: openinference.instrumentation.crewaiexpected, pending fixture.
  • Namespace: llm.* / openinference.* (OpenInference) — CrewAI produces agent/task/tool spans, not the canonical names.
  • Coverage: no registry card yet — token/model/cache coverage is expected, pending fixture. (CrewAI's own opt-in product telemetry is unrelated to OTel.)

Shim behavior

  • Client-side adapter: intended, pending card. Until openinference.crewai lands in the registry, the exporter passes CrewAI spans through unmapped (generic OpenInference llm.* data is still caught by the ClickHouse COALESCE safety net for known aliases).
  • Server-side OTTL: pending the same card — write the mapping once, all three layers get it.

Known limitations

  • Not fixture-verified end-to-end.
  • The Traceloop route (opentelemetry-instrumentation-crewai, gen_ai.* with older names) is the documented alternative; the deep-dive will pick the official route.
  • CrewAI's LiteLLM-backed LLM class may additionally emit through LiteLLM if you enable that strategy too — avoid double-activation unless you want both views.

Verify it works

SELECT model, input_tokens, output_tokens, estimated_cost_usd
  FROM otel.llm_call ORDER BY ts DESC LIMIT 5;
SELECT DISTINCT ScopeName, SpanName FROM otel_traces ORDER BY 1, 2;   -- deep-dive helper

Bench example (agent runnable, telemetry pending): agents/crewai/python in radicas-integrations.

On this page