Framework integrations
Open core · self-host + all Splyntra Cloud plans
Each supported framework has an in-process adapter that Splyntra turns on when you add
its name to instrument. Every adapter is a safe no-op if the package isn't
installed, so it is harmless to list one you don't use. Only openai, langgraph,
openai-agents, and crewai ship pip extras — the rest need no extra.
Instrument names & span mapping
| Framework | instrument name | Languages | Span mapping |
|---|---|---|---|
| LangGraph | langgraph | Python + TS | graph run → agent, each node → step |
| CrewAI | crewai | Python + TS | kickoff → agent, tasks → step, tools → tool_call |
| OpenAI Agents | openai_agents (or openai-agents) | Python + TS | Runner.run → agent |
| LlamaIndex | llamaindex | Python | query → agent, retriever → retrieval |
| MCP | mcp | Python + TS | tools/call → tool_call, per MCP server |
| Browser Use | browser_use (or browser-use) | Python + TS | Agent.run → agent, each step → step, each browser action (act) → tool_call |
| Google ADK | google_adk (google-adk) | Python only | agent run → agent |
| Pydantic AI | pydantic_ai (pydantic-ai) | Python only | agent run → agent |
LLM calls made through these frameworks are captured as llm_call spans by the
provider adapter (openai, anthropic, ollama) — add the provider name to
instrument alongside the framework. See LLM providers.
LangGraph
- Python
- TypeScript
pip install "splyntra[langgraph,openai]"
from splyntra import Splyntra
Splyntra(
api_key=os.environ["SPLYNTRA_API_KEY"],
project="research-agent",
framework="langgraph",
instrument=("langgraph", "openai"),
)
# Build and invoke your graph as usual — nodes become step spans.
npm install @splyntra/sdk
import { Splyntra } from "@splyntra/sdk";
new Splyntra({
apiKey: process.env.SPLYNTRA_API_KEY!,
project: "research-agent",
framework: "langgraph",
instrument: ["langgraph", "openai"],
});
// Build and invoke your graph as usual — nodes become step spans.
CrewAI
- Python
- TypeScript
pip install "splyntra[crewai,openai]"
from splyntra import Splyntra
Splyntra(
api_key=os.environ["SPLYNTRA_API_KEY"],
project="support-crew",
framework="crewai",
instrument=("crewai", "openai"),
)
# Build and kickoff() your Crew — tasks become step spans, tools become tool_call spans.
import { Splyntra } from "@splyntra/sdk";
new Splyntra({
apiKey: process.env.SPLYNTRA_API_KEY!,
project: "support-crew",
framework: "crewai",
instrument: ["crewai", "openai"],
});
// Build and kickoff() your Crew — tasks become step spans, tools become tool_call spans.
OpenAI Agents
- Python
- TypeScript
pip install "splyntra[openai-agents,openai]"
from splyntra import Splyntra
Splyntra(
api_key=os.environ["SPLYNTRA_API_KEY"],
project="triage-agent",
framework="openai-agents",
instrument=("openai_agents", "openai"),
)
# Runner.run(...) becomes an agent span.
import { Splyntra } from "@splyntra/sdk";
new Splyntra({
apiKey: process.env.SPLYNTRA_API_KEY!,
project: "triage-agent",
framework: "openai-agents",
instrument: ["openai-agents", "openai"],
});
// Runner.run(...) becomes an agent span.
LlamaIndex
Python only.
pip install splyntra
from splyntra import Splyntra
Splyntra(
api_key=os.environ["SPLYNTRA_API_KEY"],
project="rag-app",
framework="llamaindex",
instrument=("llamaindex", "openai"),
)
# query() becomes an agent span; the retriever emits a retrieval span.
MCP (Model Context Protocol)
- Python
- TypeScript
from splyntra import Splyntra
Splyntra(
api_key=os.environ["SPLYNTRA_API_KEY"],
project="mcp-agent",
instrument=("mcp", "openai"),
)
# Each tools/call becomes a tool_call span, attributed to its MCP server.
import { Splyntra } from "@splyntra/sdk";
new Splyntra({
apiKey: process.env.SPLYNTRA_API_KEY!,
project: "mcp-agent",
instrument: ["mcp", "openai"],
});
// Each tools/call becomes a tool_call span, attributed to its MCP server.
Per-server MCP metrics surface on the MCP Servers screen.
Browser Use
Browser Use drives autonomous
web-browsing agents. Both the Python library and the TypeScript port (npm
browser-use) are supported; no extra is required — install browser-use alongside
the SDK.
- Python
- TypeScript
pip install splyntra browser-use
from splyntra import Splyntra
Splyntra(
api_key=os.environ["SPLYNTRA_API_KEY"],
project="browser-agent",
framework="browser-use",
instrument=("browser-use", "openai"),
)
# Run your Agent as usual — agent.run() is the root agent span, each step a step
# span, and every browser action (navigate, click, type, extract, …) a tool_call.
npm install @splyntra/sdk browser-use
import { Splyntra } from "@splyntra/sdk";
new Splyntra({
apiKey: process.env.SPLYNTRA_API_KEY!,
project: "browser-agent",
framework: "browser-use",
instrument: ["browser-use", "openai"],
});
// Agent.run() → agent span, each step → step span, each browser action → tool_call.
The adapter tracks Browser Use's Controller/Tools action executor across versions
(the executor class was renamed as the API evolved), so browser-action tool_call
spans keep flowing on both the legacy and current API. Add openai (or your provider)
to instrument to capture the agent's vision/reasoning LLM calls as llm_call spans
with token cost.
See the runnable Browser agent example for a full walkthrough with URL governance, indirect-prompt-injection defense, and audit logging.
Google ADK
Python only.
from splyntra import Splyntra
Splyntra(
api_key=os.environ["SPLYNTRA_API_KEY"],
project="adk-agent",
instrument=("google_adk",),
)
Pydantic AI
Python only.
from splyntra import Splyntra
Splyntra(
api_key=os.environ["SPLYNTRA_API_KEY"],
project="pydantic-agent",
instrument=("pydantic_ai", "openai"),
)
Next steps
- LLM providers — provider adapters and OpenAI-compatible endpoints.
- Manual instrumentation — trace your own agent, tool, and LLM functions when there is no adapter.
- Connect an agent — generate the exact snippet for your stack.