# Integrations — Install ACP in your AI client. Keep the stack you have.

ACP installs into the AI clients your team already uses — Claude Code, Cursor, ChatGPT, Claude Desktop, Cline. Identity, policy, audit on every tool call.

<div class="acp-section" style="padding-top:56px;">
  <div class="acp-container" style="text-align:center;">
    <h1 class="acp-hero-h1" style="font-size:40px;margin:0 auto;">Install in your AI client. Keep everything else.</h1>
    <p class="acp-subtitle" style="max-width:640px;margin:16px auto 0;">
      ACP sits between your AI client and the tools it calls. Install the hook (or point at our MCP endpoint) and every tool call gets identity, policy, and audit &mdash; without changing how your team works.
    </p>
    <p class="acp-muted" style="max-width:620px;margin:12px auto 0;font-size:14px;">
      Building the agent yourself (CrewAI, LangGraph, Anthropic Agent SDK, OpenAI Agents SDK)? See <a href="/frameworks" style="color:var(--color-accent);">Frameworks</a> for guided starter code.
    </p>
  </div>
</div>

<!-- Clients -->
<div class="acp-section" style="padding-top:8px;">
  <div class="acp-container">
    <div class="acp-card acp-card-pad">
      <div class="acp-integ-header">
        <div class="acp-integ-label">Clients</div>
        <h2 class="acp-section-title" style="margin-bottom:4px;">The AI tools your team already uses.</h2>
      </div>
      <p class="acp-muted" style="max-width:680px;margin-bottom:20px;">
        Step-by-step install guides for each AI client &mdash; with the caveats vendor docs leave out. Two install paths: a local hook (for coding agents) or an MCP server connection (for chat clients).
      </p>
      <div class="acp-grid-cards" style="display:grid;grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));gap:12px;">
        <a href="/integrations/claude-code" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">Claude Code</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">PreToolUse hook</div>
        </a>
        <a href="/integrations/cursor" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">Cursor</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">Hook &middot; MCP server</div>
        </a>
        <a href="/integrations/codex" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">OpenAI Codex CLI</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">Hook + MCP</div>
        </a>
        <a href="/integrations/dsh" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">DeepSeek Harness</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">Native plugin &middot; full coverage &middot; inline rewrite</div>
        </a>
        <a href="/integrations/pi" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">pi</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">Native extension &middot; full coverage &middot; inline rewrite</div>
        </a>
        <a href="/integrations/grok-build" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">Grok Build</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">Native hooks &middot; fires even in always-approve</div>
        </a>
        <a href="/integrations/antigravity" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">Antigravity</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">Native force_ask approvals &middot; CLI, IDE, and app</div>
        </a>
        <a href="/integrations/muse-code" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">Muse Code</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">Plugin hooks &middot; deny + receipts</div>
        </a>
        <a href="/integrations/hermes" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">Hermes Agent</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">Python plugin &middot; full hook coverage</div>
        </a>
        <a href="/integrations/openclaw" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">OpenClaw</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">Native plugin &middot; one command</div>
        </a>
        <a href="/integrations/opencode" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">opencode</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">Native TS plugin &middot; one command</div>
        </a>
        <a href="/integrations/cline" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">Cline (VS Code)</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">MCP server</div>
        </a>
        <a href="/integrations/claude-desktop" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">Claude Desktop</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">MCP server</div>
        </a>
        <a href="/integrations/zed" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">Zed (Parallel Agents)</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">LLM-provider proxy</div>
        </a>
        <a href="/integrations/chatgpt-workspace-agents" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">ChatGPT Workspace Agents</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">Agents SDK &middot; MCP</div>
        </a>
        <a href="/integrations/google-agents-cli" class="acp-linkcard" style="display:block;padding:16px;border:1px solid var(--gs-border, #e0e0e8);border-radius:10px;text-decoration:none;">
          <div style="font-weight:600;font-size:14px;color:var(--gs-text);">Google Agents CLI (ADK)</div>
          <div style="font-size:12px;color:var(--gs-text-faint);margin-top:4px;">LiteLLM proxy &middot; ADK callback</div>
        </a>
      </div>
      <p class="acp-muted" style="margin-top:18px;font-size:13px;">
        Using a client we don't list? If it speaks <strong>MCP</strong> (Windsurf, Continue, ChatGPT&rsquo;s connectors) or the <strong>OpenAI chat-completions API</strong>, point it at ACP &mdash; same governance, no code change.
      </p>
      <p class="acp-muted" style="margin-top:10px;font-size:13px;">
        Want <strong>cost</strong> too? Governance hooks cover tool calls; to meter model spend, cache-hit rate, and the loop-vs-leaf cost X-ray, <a href="/cost-tracking">route your model calls through the proxy</a> &mdash; one base-URL change.
      </p>
    </div>
  </div>
</div>

<!-- Identity Providers -->
<div class="acp-section">
  <div class="acp-container">
    <div class="acp-card acp-card-pad">
      <div class="acp-integ-header">
        <div class="acp-integ-label">Identity Providers</div>
        <h2 class="acp-section-title" style="margin-bottom:4px;">Your IdP. Your users. Our governance.</h2>
      </div>
      <p class="acp-muted" style="max-width:640px;margin-bottom:20px;">
        ACP verifies JWTs against your IdP's JWKS endpoint on every call. Any OIDC-compliant provider works out of the box &mdash; your users stay in your directory.
      </p>
      <div class="acp-integ-grid">
        <div class="acp-integ-item">
          <strong>Auth0</strong>
          <span class="acp-muted">OIDC + JWKS</span>
        </div>
        <div class="acp-integ-item">
          <strong>Okta</strong>
          <span class="acp-muted">OIDC + JWKS</span>
        </div>
        <div class="acp-integ-item">
          <strong>Microsoft Entra ID</strong>
          <span class="acp-muted">OIDC + JWKS</span>
        </div>
        <div class="acp-integ-item">
          <strong>Google Identity</strong>
          <span class="acp-muted">Google Workspace SSO</span>
        </div>
        <div class="acp-integ-item">
          <strong>Firebase Auth</strong>
          <span class="acp-muted">Firebase tokens</span>
        </div>
        <div class="acp-integ-item">
          <strong>Any OIDC provider</strong>
          <span class="acp-muted">Configurable issuer, audience, JWKS URI</span>
        </div>
      </div>
      <p class="acp-muted" style="margin-top:16px;font-size:13px;"><a href="/agent-identity" style="color:var(--color-accent);">How agent identity works &rarr;</a></p>
    </div>
  </div>
</div>

<!-- What You Get -->
<div class="acp-section">
  <div class="acp-container">
    <div class="acp-card acp-card-pad" style="text-align:center;">
      <h2 class="acp-section-title">What every integration gets</h2>
      <p class="acp-muted" style="max-width:560px;margin:0 auto 24px;">Regardless of which client you install &mdash; every agent action passes through the same governance pipeline.</p>
      <div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;text-align:left;">
        <div class="acp-integ-gov-item">
          <div class="acp-integ-gov-title">Identity binding</div>
          <div class="acp-muted" style="font-size:13px;">JWT-verified user or agent on every call</div>
        </div>
        <div class="acp-integ-gov-item">
          <div class="acp-integ-gov-title">Policy enforcement</div>
          <div class="acp-muted" style="font-size:13px;">Audit-only by default; deny-by-default once you configure it</div>
        </div>
        <div class="acp-integ-gov-item">
          <div class="acp-integ-gov-title">PII detection</div>
          <div class="acp-muted" style="font-size:13px;">Scan and redact sensitive data</div>
        </div>
        <div class="acp-integ-gov-item">
          <div class="acp-integ-gov-title">Audit logging</div>
          <div class="acp-muted" style="font-size:13px;">Identity-attributed trail on every action</div>
        </div>
        <div class="acp-integ-gov-item">
          <div class="acp-integ-gov-title">Budget controls</div>
          <div class="acp-muted" style="font-size:13px;">Per-user and per-agent spend limits</div>
        </div>
        <div class="acp-integ-gov-item">
          <div class="acp-integ-gov-title">Tenant isolation</div>
          <div class="acp-muted" style="font-size:13px;">Multi-tenant separation at every layer</div>
        </div>
      </div>
    </div>
  </div>
</div>

<!-- CTA -->
<div class="acp-section">
  <div class="acp-container">
    <div class="acp-cta-card" style="text-align:center;">
      <h2 class="acp-section-title">Your clients. Our governance.</h2>
      <p class="acp-muted" style="max-width:480px;margin:8px auto 0;">
        Free to start. Add governance to your existing AI client in minutes.
      </p>
      <div style="margin-top:24px;display:flex;justify-content:center;gap:16px;flex-wrap:wrap;">
        <a href="https://cloud.agenticcontrolplane.com/login?from=%2Fonboarding" class="acp-btn acp-btn-primary" data-track="Integrations: Get Started Free" style="padding:14px 32px;font-size:16px;">Get started free &rarr;</a>
        <a href="/for-teams" class="acp-btn acp-btn-ghost" data-track="Integrations: For IT Teams" style="padding:14px 32px;font-size:16px;">For IT teams &rarr;</a>
      </div>
    </div>
  </div>
</div>

<style>
.acp-integ-header { margin-bottom: 16px; }
.acp-integ-label {
  display: inline-block;
  padding: 5px 16px;
  border-radius: 100px;
  background: linear-gradient(135deg, rgba(79,70,229,0.14), rgba(6,182,212,0.10));
  color: var(--color-accent);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 12px;
}
.acp-integ-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 12px;
}
.acp-integ-item {
  padding: 16px 20px;
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.acp-integ-item:hover {
  border-color: var(--color-accent);
  box-shadow: 0 0 0 3px rgba(91,91,214,0.08);
}
.acp-integ-item strong {
  display: block;
  font-size: 15px;
  color: var(--color-text-primary);
  margin-bottom: 3px;
}
.acp-integ-item .acp-muted {
  font-size: 13px;
}
.acp-integ-gov-item {
  padding: 20px;
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  transition: border-color 0.15s ease;
}
.acp-integ-gov-item:hover {
  border-color: var(--color-accent);
}
.acp-integ-gov-title {
  font-size: 14px;
  font-weight: 700;
  color: var(--color-text-primary);
  margin-bottom: 4px;
}
.acp-integ-gov-title::before {
  content: "";
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--color-accent);
  margin-right: 8px;
  vertical-align: middle;
}
@media (max-width: 640px) {
  .acp-integ-grid { grid-template-columns: 1fr; }
}
</style>
