Installation
Install the radicas package, pick your framework extra, and choose between the local lab and hosted Radicas.
Requirements
- Python 3.10+ (3.10 – 3.13 tested in CI on 3.10 and 3.12)
- An OTLP-reachable Radicas: either a local Radicas instance (localhost:4317) or a hosted Radicas ingest endpoint plus an API key
The core package depends only on the OpenTelemetry SDK and OTLP exporters — framework instrumentors come in via extras so you install exactly what you use.
Pick your extra
pip install "radicas[adk]"Agent frameworks (build the agent loop for you):
| Extra | Installs | For |
|---|---|---|
radicas[adk] | google-adk | Google ADK (native gen_ai.* — the extra is just the framework itself) |
radicas[pydantic-ai] | pydantic-ai | Pydantic AI (native OTel) |
radicas[langchain] | openinference-instrumentation-langchain | LangChain and LangGraph |
radicas[crewai] | openinference-instrumentation-crewai | CrewAI |
radicas[llamaindex] | openinference-instrumentation-llama-index | LlamaIndex |
radicas[openai-agents] | openinference-instrumentation-openai-agents | OpenAI Agents SDK |
Providers (raw LLM SDK / router — you hand-write the loop):
| Extra | Installs | For |
|---|---|---|
radicas[litellm] | litellm | LiteLLM router/proxy (native gen_ai.* callback) |
radicas[anthropic] | openinference-instrumentation-anthropic | raw Anthropic SDK calls |
radicas[openai] | openinference-instrumentation-openai | raw OpenAI SDK calls |
radicas[all] installs everything above — kitchen sink, not recommended for production images.
Plain pip install radicas (no extra) is valid too: you get transport, validation, feature
tagging, and client-side normalization — useful when your framework is already installed or
when it needs no instrumentor (ADK works with the plain install if google-adk is present).
LOCAL lab vs ONLINE
The SDK picks its defaults from one signal: is an API key present?
| LOCAL (no API key) | ONLINE (RADICAS_API_KEY set) | |
|---|---|---|
| Endpoint | http://localhost:4317 | https://ingest.radicas.io |
| Protocol | gRPC | http/protobuf |
| Auth | none (lab shim) | Authorization: Bearer header |
| Tenant | radicas.tenant_id resource attribute (from RADICAS_TENANT_ID, default radicas-lab) | resolved from the key by the gateway — never sent by the client |
LOCAL expects a local Radicas collector running on :4317. Going ONLINE is an environment swap, not a code change:
export RADICAS_API_KEY=rad_... # issued once at onboarding
python my_agent.py # same code, now exporting to hosted RadicasEvery default can be overridden — see configuration.
Verify the install
import radicas
print(radicas.__version__) # 0.1.0
radicas.init(instrument="none") # logs "radicas telemetry ready: ..." on success,
# or ONE actionable warning if the endpoint is downRadicas Python SDK
Connect any agent framework to Radicas in three lines — correct endpoint, auth, feature tagging, and canonical gen_ai telemetry, by construction.
Configuration
Full reference for radicas.init() — every kwarg, its RADICAS_* environment twin, defaults, precedence, and the underlying OTEL_* contract.