> ## Documentation Index
> Fetch the complete documentation index at: https://braintrust.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Integrations

> Connect Braintrust with your AI providers and frameworks

export const IntegrationsGrid = () => {
  const [searchTerm, setSearchTerm] = React.useState("");
  const searchInputRef = React.useRef(null);
  React.useEffect(() => {
    const handleKeyDown = e => {
      if ((e.metaKey || e.ctrlKey) && e.key === "f") {
        e.preventDefault();
        e.stopPropagation();
        searchInputRef.current?.focus();
        searchInputRef.current?.select();
      } else if (e.key === "Escape" && document.activeElement === searchInputRef.current) {
        setSearchTerm("");
        searchInputRef.current?.blur();
      }
    };
    window.addEventListener("keydown", handleKeyDown, true);
    return () => window.removeEventListener("keydown", handleKeyDown, true);
  }, []);
  const recommendedOrder = ["Anthropic", "OpenAI", "OpenRouter", "Gemini", "Custom provider", "OpenTelemetry", "Vercel AI SDK", "Claude Agent SDK", "OpenAI Agents SDK", "LlamaIndex", "CrewAI", "AgentScope", "LangChain", "LangSmith", "LangGraph", "AWS Lambda"];
  const integrations = [{
    title: "Agno",
    href: "/integrations/sdk-integrations/agno",
    icon: "https://img.logo.dev/agno.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "AgentScope",
    href: "/integrations/agent-frameworks/agentscope",
    icon: "https://img.logo.dev/modelscope.cn?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Anthropic",
    href: "/integrations/ai-providers/anthropic",
    icon: "https://img.logo.dev/anthropic.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Apollo GraphQL",
    href: "/integrations/sdk-integrations/apollo-graphql",
    icon: "https://img.logo.dev/apollographql.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Autogen",
    href: "/integrations/agent-frameworks/autogen",
    icon: "https://img.logo.dev/autogenai.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "AWS Bedrock",
    href: "/integrations/ai-providers/bedrock",
    icon: "https://img.logo.dev/aws.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "AWS Lambda",
    href: "/integrations/runtime-environments/aws-lambda",
    icon: "https://img.logo.dev/aws.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Azure AI Foundry",
    href: "/integrations/ai-providers/azure",
    icon: "https://img.logo.dev/azure.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Azure AI Gateway",
    href: "/integrations/ai-providers/azure-ai-gateway",
    icon: "https://img.logo.dev/azure.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Baseten",
    href: "/integrations/ai-providers/baseten",
    icon: "https://img.logo.dev/baseten.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Braintrust MCP",
    href: "/integrations/developer-tools/mcp",
    icon: "/images/favicon.ico"
  }, {
    title: "Cerebras",
    href: "/integrations/ai-providers/cerebras",
    icon: "https://img.logo.dev/cerebras.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Cohere",
    href: "/integrations/ai-providers/cohere",
    icon: "https://img.logo.dev/cohere.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Claude Agent SDK",
    href: "/integrations/agent-frameworks/claude-agent-sdk",
    icon: "https://img.logo.dev/claude.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Claude Code",
    href: "/integrations/developer-tools/claude-code",
    icon: "https://img.logo.dev/claude.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Claude Cowork",
    href: "/integrations/developer-tools/claude-cowork",
    icon: "https://img.logo.dev/claude.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Cloudflare Think",
    href: "/integrations/agent-frameworks/cloudflare-think",
    icon: "https://img.logo.dev/cloudflare.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Cloudflare Workers AI",
    href: "/integrations/sdk-integrations/cloudflare",
    icon: "https://img.logo.dev/cloudflare.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Cloudflare Agents",
    href: "/integrations/agent-frameworks/cloudflare-agents",
    icon: "https://img.logo.dev/cloudflare.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Cloudflare AI Chat",
    href: "/integrations/agent-frameworks/cloudflare-ai-chat",
    icon: "https://img.logo.dev/cloudflare.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "CloudWeGo Eino",
    href: "/integrations/sdk-integrations/cloudwego-eino",
    icon: "https://img.logo.dev/cloudwego.io?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Codex",
    href: "/integrations/developer-tools/codex",
    icon: "https://img.logo.dev/openai.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "CrewAI",
    href: "/integrations/agent-frameworks/crew-ai",
    icon: "https://img.logo.dev/crewai.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Cursor",
    href: "/integrations/developer-tools/cursor",
    icon: "https://img.logo.dev/cursor.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Cursor SDK",
    href: "/integrations/agent-frameworks/cursor-sdk",
    icon: "https://img.logo.dev/cursor.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Custom provider",
    href: "/integrations/ai-providers/custom",
    icon: "box"
  }, {
    title: "Databricks",
    href: "/integrations/ai-providers/databricks",
    icon: "https://img.logo.dev/databricks.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Deep Agents",
    href: "/integrations/agent-frameworks/deepagents",
    icon: "https://img.logo.dev/langchain.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "DSPy",
    href: "/integrations/sdk-integrations/dspy",
    icon: "https://img.logo.dev/dspy.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Eve",
    href: "/integrations/agent-frameworks/eve",
    icon: "https://img.logo.dev/eve.dev?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Firebase Genkit",
    href: "/integrations/sdk-integrations/firebase-genkit",
    icon: "https://img.logo.dev/firebase.google.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Flue",
    href: "/integrations/agent-frameworks/flue",
    icon: "https://img.logo.dev/flueframework.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Fireworks",
    href: "/integrations/ai-providers/fireworks",
    icon: "https://img.logo.dev/fireworks.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Gemini",
    href: "/integrations/ai-providers/gemini",
    icon: "https://img.logo.dev/google.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Google ADK",
    href: "/integrations/agent-frameworks/google",
    icon: "https://img.logo.dev/google.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Groq",
    href: "/integrations/ai-providers/groq",
    icon: "https://img.logo.dev/groq.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Harbor",
    href: "/integrations/sdk-integrations/harbor",
    icon: "circle-dashed"
  }, {
    title: "Hugging Face",
    href: "/integrations/ai-providers/huggingface",
    icon: "https://img.logo.dev/huggingface.co?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Instructor",
    href: "/integrations/sdk-integrations/instructor",
    icon: "circle-dashed"
  }, {
    title: "LangChain",
    href: "/integrations/sdk-integrations/langchain",
    icon: "https://img.logo.dev/langchain.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "LangGraph",
    href: "/integrations/agent-frameworks/langgraph",
    icon: "https://img.logo.dev/langchain.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "LangSmith",
    href: "/integrations/sdk-integrations/langsmith",
    icon: "https://img.logo.dev/langchain.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Lepton",
    href: "/integrations/ai-providers/lepton",
    icon: "https://img.logo.dev/lepton.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "LiteLLM",
    href: "/integrations/sdk-integrations/litellm",
    icon: "https://img.logo.dev/litellm.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "LiveKit Agents",
    href: "/integrations/agent-frameworks/livekit-agents",
    icon: "https://img.logo.dev/livekit.io?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "LlamaIndex",
    href: "/integrations/sdk-integrations/llamaindex",
    icon: "https://img.logo.dev/llamaindex.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Mastra",
    href: "/integrations/agent-frameworks/mastra",
    icon: "https://img.logo.dev/mastra.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Microsoft Agent Framework",
    href: "/integrations/agent-frameworks/microsoft-agent-framework",
    icon: "https://img.logo.dev/microsoft.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Mistral",
    href: "/integrations/ai-providers/mistral",
    icon: "https://img.logo.dev/mistral.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Node.js test runner",
    href: "/integrations/sdk-integrations/node-test-runner",
    icon: "https://img.logo.dev/nodejs.org?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Ollama",
    href: "/integrations/ai-providers/ollama",
    icon: "https://img.logo.dev/ollama.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "OpenAI",
    href: "/integrations/ai-providers/openai",
    icon: "https://img.logo.dev/openai.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "OpenRouter",
    href: "/integrations/ai-providers/openrouter",
    icon: "https://img.logo.dev/openrouter.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "OpenRouter Agent",
    href: "/integrations/agent-frameworks/openrouter-agent",
    icon: "https://img.logo.dev/openrouter.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Pytest",
    href: "/integrations/sdk-integrations/pytest",
    icon: "https://img.logo.dev/pytest.org?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "OpenAI Agents SDK",
    href: "/integrations/agent-frameworks/openai-agents-sdk",
    icon: "https://img.logo.dev/openai.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "OpenAI Codex SDK",
    href: "/integrations/agent-frameworks/openai-codex-sdk",
    icon: "https://img.logo.dev/openai.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "OpenCode",
    href: "/integrations/developer-tools/opencode",
    icon: "https://img.logo.dev/opencode.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "pi",
    href: "/integrations/developer-tools/pi",
    icon: "https://img.logo.dev/pi.dev?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Pi Coding Agent SDK",
    href: "/integrations/agent-frameworks/pi-coding-agent",
    icon: "https://img.logo.dev/pi.dev?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "OpenTelemetry",
    href: "/integrations/sdk-integrations/opentelemetry",
    icon: "https://img.logo.dev/opentelemetry.io?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Perplexity",
    href: "/integrations/ai-providers/perplexity",
    icon: "https://img.logo.dev/perplexity.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Pipecat",
    href: "/integrations/agent-frameworks/pipecat",
    icon: "https://img.logo.dev/pipecat.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Pydantic AI",
    href: "/integrations/agent-frameworks/pydantic-ai",
    icon: "https://img.logo.dev/pydantic.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Replicate",
    href: "/integrations/ai-providers/replicate",
    icon: "https://img.logo.dev/replicate.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Ruby LLM",
    href: "/integrations/sdk-integrations/ruby-llm",
    icon: "https://img.logo.dev/rubyllm.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Spring AI",
    href: "/integrations/sdk-integrations/spring-ai",
    icon: "https://img.logo.dev/spring.io?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Strands Agent SDK",
    href: "/integrations/agent-frameworks/strands-agent",
    icon: "https://img.logo.dev/strandsagents.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Temporal",
    href: "/integrations/sdk-integrations/temporal",
    icon: "https://img.logo.dev/temporal.io?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Together",
    href: "/integrations/ai-providers/together",
    icon: "https://img.logo.dev/together.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Traceloop",
    href: "/integrations/sdk-integrations/traceloop",
    icon: "https://img.logo.dev/traceloop.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "TrueFoundry",
    href: "/integrations/sdk-integrations/truefoundry",
    icon: "https://img.logo.dev/truefoundry.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Vercel AI SDK",
    href: "/integrations/sdk-integrations/vercel",
    icon: "https://img.logo.dev/vercel.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Vitest",
    href: "/integrations/sdk-integrations/vitest",
    icon: "https://img.logo.dev/vitest.dev?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Google Vertex AI",
    href: "/integrations/ai-providers/google",
    icon: "https://img.logo.dev/google.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "VS Code",
    href: "/integrations/developer-tools/vscode",
    icon: "https://img.logo.dev/vscode.dev?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Devin Desktop",
    href: "/integrations/developer-tools/devin-desktop",
    icon: "https://img.logo.dev/devin.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "xAI",
    href: "/integrations/ai-providers/xai",
    icon: "https://img.logo.dev/x.ai?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }, {
    title: "Voyage AI",
    href: "/integrations/ai-providers/voyageai",
    icon: "https://img.logo.dev/voyageai.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ"
  }];
  const getCategory = href => {
    if (href.includes("/ai-providers/")) return "ai-providers";
    if (href.includes("/sdk-integrations/")) return "sdk-integrations";
    if (href.includes("/agent-frameworks/")) return "sdk-integrations";
    if (href.includes("/developer-tools/")) return "developer-tools";
    if (href.includes("/runtime-environments/")) return "runtime-environments";
    return "all";
  };
  const categories = [{
    id: "all",
    label: "All"
  }, {
    id: "ai-providers",
    label: "AI providers"
  }, {
    id: "sdk-integrations",
    label: "SDK integrations"
  }, {
    id: "developer-tools",
    label: "Developer tools"
  }, {
    id: "runtime-environments",
    label: "Runtime environments"
  }];
  const categoryCounts = React.useMemo(() => {
    const counts = {
      all: integrations.length
    };
    integrations.forEach(integration => {
      const category = getCategory(integration.href);
      counts[category] = (counts[category] || 0) + 1;
    });
    return counts;
  }, []);
  const getFilteredIntegrations = categoryId => {
    const filtered = integrations.filter(integration => {
      const matchesCategory = categoryId === "all" || getCategory(integration.href) === categoryId;
      const matchesSearch = !searchTerm || integration.title.toLowerCase().includes(searchTerm.toLowerCase());
      return matchesCategory && matchesSearch;
    });
    return filtered.sort((a, b) => {
      const aIndex = recommendedOrder.indexOf(a.title);
      const bIndex = recommendedOrder.indexOf(b.title);
      const aOrder = aIndex === -1 ? Infinity : aIndex;
      const bOrder = bIndex === -1 ? Infinity : bIndex;
      if (aOrder !== bOrder) {
        return aOrder - bOrder;
      }
      return a.title.localeCompare(b.title);
    });
  };
  return <>
      <div style={{
    marginBottom: "1.5rem"
  }}>
        <div style={{
    position: "relative",
    width: "100%"
  }}>
          <div style={{
    position: "absolute",
    left: "0.875rem",
    top: "50%",
    transform: "translateY(-50%)",
    pointerEvents: "none",
    display: "flex",
    alignItems: "center",
    zIndex: 1
  }}>
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="integrations-search-icon">
              <circle cx="11" cy="11" r="8"></circle>
              <path d="m21 21-4.3-4.3"></path>
            </svg>
          </div>
          <input ref={searchInputRef} type="text" placeholder="Search integrations..." value={searchTerm} onChange={e => setSearchTerm(e.target.value)} className="integrations-search-input" />
          <div className="integrations-search-kbd" style={{
    position: "absolute",
    right: "0.75rem",
    top: "50%",
    transform: "translateY(-50%)",
    pointerEvents: "none",
    fontSize: "0.75rem",
    fontWeight: "600"
  }}>
            {typeof navigator !== "undefined" && "⌘F"}
          </div>
        </div>
      </div>
      {!searchTerm ? <Tabs>
          {categories.map(category => <Tab key={category.id} title={`${category.label} (${categoryCounts[category.id] || 0})`}>
              <CardGroup cols={3}>
                {getFilteredIntegrations(category.id).map(integration => <Card key={integration.href} horizontal title={integration.title} href={integration.href} icon={integration.icon} arrow />)}
              </CardGroup>
            </Tab>)}
        </Tabs> : <CardGroup cols={3}>
          {getFilteredIntegrations("all").map(integration => <Card key={integration.href} horizontal title={integration.title} href={integration.href} icon={integration.icon} arrow />)}
        </CardGroup>}
    </>;
};

If you are a coding agent, prefer the Braintrust [`bt` CLI](/docs/reference/cli/quickstart) for repeatable, scriptable work: running evals, instrumenting code, querying logs, syncing data, managing functions, and configuring coding agents. Use the MCP server for reasoning over Braintrust data in conversation, and for capabilities the CLI doesn't cover, such as monitor views, alerts, and authoring evaluators, preprocessors, and facets.

<IntegrationsGrid />

Don't see your provider or framework? Use the [Braintrust Gateway](/docs/deploy/gateway) to add any provider or [contact us](https://braintrust.dev/contact) to request an integration.
