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

# Fact0 Integrations

> Drop-in audit logging and telemetry for popular agent frameworks, web stacks, and observability tools.

<div className="px-4 pt-8 pb-4 lg:pt-10 max-w-4xl mx-auto text-center space-y-3">
  <h1 className="text-3xl lg:text-4xl font-bold text-gray-900 dark:text-zinc-50 tracking-tight mb-2">
    Integrations
  </h1>

  <p className="max-w-2xl mx-auto text-base text-gray-600 dark:text-zinc-400 leading-relaxed">
    Add Fact0 to the stack you already use. Auto-instrument agent runs, capture audit events, and stream telemetry without writing boilerplate.
  </p>
</div>

<section className="px-4 pt-2 pb-2 max-w-6xl mx-auto">
  <h2 className="text-sm font-semibold uppercase tracking-wider text-gray-500 dark:text-zinc-400 mb-3">Agent frameworks</h2>

  <div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
    <a href="/integrations/langchain" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <path d="M10 13a5 5 0 0 0 7.07 0l1.41-1.41a5 5 0 0 0-7.07-7.07L10 5.93" />

          <path d="M14 11a5 5 0 0 0-7.07 0l-1.41 1.41a5 5 0 0 0 7.07 7.07L14 18.07" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">LangChain</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">Auto-instrument chains, tools, and LLM calls via `Fact0CallbackHandler`.</p>
      </div>
    </a>

    <a href="/integrations/langgraph" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <path d="M14 5a2 2 0 1 1-4 0 2 2 0 0 1 4 0z" />

          <path d="M8 19a2 2 0 1 1-4 0 2 2 0 0 1 4 0z" />

          <path d="M20 19a2 2 0 1 1-4 0 2 2 0 0 1 4 0z" />

          <path d="M12 7l-5.2 10.3" />

          <path d="M12 7l5.2 10.3" />

          <path d="M8 19h8" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">LangGraph</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">Trace stateful, multi-step agent graphs with node-level spans.</p>
      </div>
    </a>

    <a href="/integrations/llamaindex" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <ellipse cx="12" cy="5.5" rx="7" ry="2.5" />

          <path d="M5 5.5v6c0 1.4 3.1 2.5 7 2.5s7-1.1 7-2.5v-6" />

          <path d="M5 11.5v6c0 1.4 3.1 2.5 7 2.5s7-1.1 7-2.5v-6" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">LlamaIndex</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">Capture retrieval and LLM telemetry from LlamaIndex query engines.</p>
      </div>
    </a>

    <a href="/integrations/crewai" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <circle cx="9" cy="8" r="3" />

          <circle cx="17" cy="9" r="2.5" />

          <path d="M3 20c0-3.3 2.7-6 6-6s6 2.7 6 6" />

          <path d="M14 20c0-2.5 1.6-4.5 3.5-4.5S21 17.5 21 20" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">CrewAI</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">One execution per crew run, one span per agent task.</p>
      </div>
    </a>

    <a href="/integrations/autogen" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <path d="M21 12a9 9 0 1 1-3-6.7" />

          <polyline points="21 4 21 9 16 9" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">AutoGen</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">Trace multi-agent conversations and `GroupChat` rounds.</p>
      </div>
    </a>

    <a href="/integrations/agno" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="currentColor" stroke="none" aria-hidden="true">
          <path d="M13 2L4 14h7l-1 8 10-12h-7z" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">Agno</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">Wrap `agent.run()` with execution + tool-call telemetry.</p>
      </div>
    </a>

    <a href="/integrations/camel-ai" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <rect x="2.5" y="4.5" width="12" height="8" rx="2" />

          <rect x="9.5" y="11.5" width="12" height="8" rx="2" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">CAMEL AI</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">Capture role-playing societies turn by turn.</p>
      </div>
    </a>

    <a href="/integrations/openai-agents-sdk" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <path d="M12 3v6m0 6v6m-9-9h6m6 0h6M6 6l3 3m6 6l3 3M6 18l3-3m6-6l3-3" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">OpenAI Agents SDK</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">Wrap `Runner` to record tool calls and handoffs as spans.</p>
      </div>
    </a>

    <a href="/integrations/google-adk" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <path d="M12 2 3 7v10l9 5 9-5V7z" />

          <path d="M3 7l9 5 9-5" />

          <path d="M12 12v10" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">Google ADK</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">Emit spans from `before_model` / `after_tool` callbacks.</p>
      </div>
    </a>

    <a href="/integrations/mastra" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="currentColor" stroke="none" aria-hidden="true">
          <path d="M8 5v14l11-7z" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">Mastra</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">TypeScript-native agents with `@fact0/sdk`.</p>
      </div>
    </a>

    <a href="/integrations/vercel-ai-sdk" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="currentColor" stroke="none" aria-hidden="true">
          <path d="M12 4l9 16H3z" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">Vercel AI SDK</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">Audit AI route handlers and stream LLM telemetry.</p>
      </div>
    </a>

    <a href="/integrations/chatdev" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" />

          <polyline points="9 9 7 11 9 13" />

          <polyline points="15 9 17 11 15 13" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">ChatDev</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">Trace `ChatChain` phases for software-engineering crews.</p>
      </div>
    </a>
  </div>
</section>

<section className="px-4 pt-6 pb-2 max-w-6xl mx-auto">
  <h2 className="text-sm font-semibold uppercase tracking-wider text-gray-500 dark:text-zinc-400 mb-3">Coding agents</h2>

  <div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
    <a href="/integrations/claude-code" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <path d="M4 17l6-5-6-5" />

          <path d="M12 19h8" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">Claude Code</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">One-command plugin: every session becomes a tamper-evident audit log, with block-and-prove governance.</p>
      </div>
    </a>
  </div>
</section>

<section className="px-4 pt-6 pb-2 max-w-6xl mx-auto">
  <h2 className="text-sm font-semibold uppercase tracking-wider text-gray-500 dark:text-zinc-400 mb-3">Web frameworks</h2>

  <div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
    <a href="/integrations/fastapi" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="currentColor" stroke="none" aria-hidden="true">
          <path d="M13 2L4 14h7l-1 8 10-12h-7z" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">FastAPI</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">Lifespan-managed async client plus `AuditMiddleware`.</p>
      </div>
    </a>

    <a href="/integrations/nextjs" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <circle cx="12" cy="12" r="9" />

          <path d="M9 7v10" />

          <path d="M9 7l8 10" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">Next.js</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">Server actions, route handlers, and middleware audit.</p>
      </div>
    </a>

    <a href="/integrations/express" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <path d="M5 5l7 7-7 7M12 5l7 7-7 7" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">Express</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">Drop-in middleware for Node services and serverless functions.</p>
      </div>
    </a>
  </div>
</section>

<section className="px-4 pt-6 pb-8 max-w-6xl mx-auto">
  <h2 className="text-sm font-semibold uppercase tracking-wider text-gray-500 dark:text-zinc-400 mb-3">Observability</h2>

  <div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
    <a href="/integrations/opentelemetry" className="group flex h-full flex-col gap-3 rounded-2xl border border-gray-200 dark:border-zinc-800/40 bg-white dark:bg-zinc-900/40 p-4 transition hover:border-primary/60 hover:bg-gray-50 dark:hover:bg-zinc-900">
      <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
          <path d="M5 13a7 7 0 0 1 14 0" />

          <path d="M8.5 13a3.5 3.5 0 0 1 7 0" />

          <circle cx="12" cy="13" r="1.5" fill="currentColor" />
        </svg>
      </div>

      <div>
        <h3 className="text-base font-semibold text-gray-900 dark:text-zinc-100 group-hover:text-primary">OpenTelemetry</h3>
        <p className="mt-1 text-sm text-gray-600 dark:text-zinc-400">Bridge OTel spans into Fact0 telemetry, or export events to any collector.</p>
      </div>
    </a>
  </div>
</section>
