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

# Overview

> Every platform Roark connects to, and exactly which capabilities each one supports

Roark connects to your agent platform in two directions: it **pulls production conversations in** for monitoring and scoring, and it **drives simulated conversations out** for testing. Which of those you get depends on the platform.

This page is the map. Start with the capability matrix, then jump to the setup guide for your platform.

***

## Capability Matrix

<Icon icon="check" color="#16a34a" /> Supported out of the box  ·  <Icon icon="circle-dashed" color="#c2842a" /> Possible with extra setup  ·  <Icon icon="minus" color="#a8a29e" /> Not supported

| Platform                                                                     |              Import calls             |              Import chats             |                  Sync agents                  |                 Telephony sims                |              WebRTC sims              |               Chat sims               |                     Traces                    |
| :--------------------------------------------------------------------------- | :-----------------------------------: | :-----------------------------------: | :-------------------------------------------: | :-------------------------------------------: | :-----------------------------------: | :-----------------------------------: | :-------------------------------------------: |
| [**VAPI**](/documentation/integrations/vapi)                                 | <Icon icon="check" color="#16a34a" /> | <Icon icon="minus" color="#a8a29e" /> |     <Icon icon="check" color="#16a34a" />     |     <Icon icon="check" color="#16a34a" />     | <Icon icon="minus" color="#a8a29e" /> | <Icon icon="minus" color="#a8a29e" /> |     <Icon icon="check" color="#16a34a" />     |
| [**Pipecat**](/documentation/integrations/pipecat)                           | <Icon icon="check" color="#16a34a" /> | <Icon icon="minus" color="#a8a29e" /> |     <Icon icon="check" color="#16a34a" />     |     <Icon icon="minus" color="#a8a29e" />     | <Icon icon="check" color="#16a34a" /> | <Icon icon="minus" color="#a8a29e" /> |     <Icon icon="check" color="#16a34a" />     |
| [**Retell AI**](/documentation/integrations/retell)                          | <Icon icon="check" color="#16a34a" /> | <Icon icon="minus" color="#a8a29e" /> |     <Icon icon="check" color="#16a34a" />     |     <Icon icon="check" color="#16a34a" />     | <Icon icon="minus" color="#a8a29e" /> | <Icon icon="minus" color="#a8a29e" /> | <Icon icon="circle-dashed" color="#c2842a" /> |
| [**ElevenLabs**](/documentation/integrations/elevenlabs)                     | <Icon icon="check" color="#16a34a" /> | <Icon icon="minus" color="#a8a29e" /> |     <Icon icon="check" color="#16a34a" />     |     <Icon icon="check" color="#16a34a" />     | <Icon icon="minus" color="#a8a29e" /> | <Icon icon="check" color="#16a34a" /> | <Icon icon="circle-dashed" color="#c2842a" /> |
| [**Bland AI**](/documentation/integrations/bland)                            | <Icon icon="check" color="#16a34a" /> | <Icon icon="minus" color="#a8a29e" /> |     <Icon icon="check" color="#16a34a" />     |     <Icon icon="check" color="#16a34a" />     | <Icon icon="minus" color="#a8a29e" /> | <Icon icon="minus" color="#a8a29e" /> | <Icon icon="circle-dashed" color="#c2842a" /> |
| [**Leaping**](/documentation/integrations/leaping)                           | <Icon icon="check" color="#16a34a" /> | <Icon icon="minus" color="#a8a29e" /> |     <Icon icon="check" color="#16a34a" />     |     <Icon icon="check" color="#16a34a" />     | <Icon icon="minus" color="#a8a29e" /> | <Icon icon="minus" color="#a8a29e" /> | <Icon icon="circle-dashed" color="#c2842a" /> |
| [**LiveKit Cloud**](/documentation/integrations/livekit)                     | <Icon icon="check" color="#16a34a" /> | <Icon icon="minus" color="#a8a29e" /> | <Icon icon="circle-dashed" color="#c2842a" /> | <Icon icon="circle-dashed" color="#c2842a" /> | <Icon icon="check" color="#16a34a" /> | <Icon icon="minus" color="#a8a29e" /> |     <Icon icon="check" color="#16a34a" />     |
| [**LiveKit (self-hosted)**](/documentation/integrations/livekit-self-hosted) | <Icon icon="check" color="#16a34a" /> | <Icon icon="minus" color="#a8a29e" /> |     <Icon icon="check" color="#16a34a" />     | <Icon icon="circle-dashed" color="#c2842a" /> | <Icon icon="check" color="#16a34a" /> | <Icon icon="minus" color="#a8a29e" /> |     <Icon icon="check" color="#16a34a" />     |
| [**Google CES**](/documentation/integrations/google-ces)                     | <Icon icon="minus" color="#a8a29e" /> | <Icon icon="minus" color="#a8a29e" /> |     <Icon icon="minus" color="#a8a29e" />     |     <Icon icon="minus" color="#a8a29e" />     | <Icon icon="minus" color="#a8a29e" /> | <Icon icon="check" color="#16a34a" /> |     <Icon icon="minus" color="#a8a29e" />     |
| [**Kore AI**](/documentation/integrations/kore)                              | <Icon icon="minus" color="#a8a29e" /> | <Icon icon="minus" color="#a8a29e" /> |     <Icon icon="minus" color="#a8a29e" />     |     <Icon icon="minus" color="#a8a29e" />     | <Icon icon="minus" color="#a8a29e" /> | <Icon icon="check" color="#16a34a" /> |     <Icon icon="minus" color="#a8a29e" />     |
| [**Custom / API**](/documentation/integrations/custom-integrations)          | <Icon icon="check" color="#16a34a" /> | <Icon icon="check" color="#16a34a" /> |     <Icon icon="check" color="#16a34a" />     |     <Icon icon="check" color="#16a34a" />     | <Icon icon="check" color="#16a34a" /> | <Icon icon="check" color="#16a34a" /> |     <Icon icon="check" color="#16a34a" />     |

### Notes on specific cells

<AccordionGroup>
  <Accordion title="LiveKit Cloud: agent sync is names only">
    LiveKit is a real-time transport, not an agent framework, so it doesn't expose prompts or worker source code. Roark imports the **named agents** configured in your LiveKit project purely so calls can be attributed to the right agent. If you want prompts and tool definitions in Roark, use the [self-hosted SDK integration](/documentation/integrations/livekit-self-hosted), which captures the system prompt as a tracked prompt revision.
  </Accordion>

  <Accordion title="Traces: platform guides vs. generic OTLP">
    Roark acts as an OpenTelemetry collector at `https://api.roark.ai/v1/traces`, so **any** platform can send traces over OTLP/HTTPS. Step-by-step guides exist for [VAPI](/documentation/observability/traces#vapi), [LiveKit](/documentation/observability/traces#livekit), and [custom integrations](/documentation/observability/traces#custom-integration). Platforms marked <Icon icon="circle-dashed" color="#c2842a" /> work through the custom-integration path: you instrument your own code and correlate spans to the call yourself.
  </Accordion>

  <Accordion title="Importing chats">
    No provider currently pushes production **chat** transcripts into Roark. Text conversations reach Roark either from a [chat simulation](/documentation/simulation-testing/chat-simulations) or by posting them to the [`/v1/chat` API](/api-reference/introduction) yourself, which is why **Custom / API** is the only row with chat import.
  </Accordion>

  <Accordion title="WebRTC on other platforms">
    A WebRTC endpoint can be attached to any Roark agent whose underlying agent speaks **LiveKit** or **SmallWebRTC**. The matrix marks the platforms where that's the native, documented path. If your VAPI or ElevenLabs agent is fronted by one of those transports, you can wire up a WebRTC endpoint for it too.
  </Accordion>
</AccordionGroup>

***

## What Each Capability Means

| Capability         | What you get                                                                                                                                                                                        |
| :----------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Import calls**   | Production voice calls flow into Roark with audio, transcript, tool invocations, and metadata, then get scored automatically by your [metric collectors](/documentation/metrics/metric-collectors). |
| **Import chats**   | Production text conversations land as first-class [chat records](/documentation/simulation-testing/chat-simulations), evaluated the same way calls are.                                             |
| **Sync agents**    | Agent configurations, system prompts, phone numbers, and tool definitions import automatically and stay up to date. Prompt changes are tracked as revisions.                                        |
| **Telephony sims** | Roark dials your agent over a real PSTN call, or answers when your agent dials Roark. See [inbound vs. outbound](/documentation/simulation-testing/inbound-vs-outbound).                            |
| **WebRTC sims**    | Roark joins your agent over [WebRTC](/documentation/simulation-testing/webrtc) instead of a phone line: no SIP, no telephony minutes, same transport as your web and mobile users.                  |
| **Chat sims**      | Roark drives persona-based [text conversations](/documentation/simulation-testing/chat-simulations) against your agent over its chat transport.                                                     |
| **Traces**         | OpenTelemetry spans attach to the matching call so you can debug latency, LLM calls, and tool failures on the [call detail page](/documentation/observability/traces).                              |

***

## Browse Integrations

### Voice agent platforms

<CardGroup cols={3}>
  <Card title="VAPI" icon="phone" href="/documentation/integrations/vapi">
    Sync assistants and stream calls in over webhooks
  </Card>

  <Card title="Retell AI" icon="mic" href="/documentation/integrations/retell">
    Sync agents and analyze conversations
  </Card>

  <Card title="ElevenLabs" icon="audio-lines" href="/documentation/integrations/elevenlabs">
    Voice **and** chat, the only platform that does both
  </Card>

  <Card title="Bland AI" icon="phone-call" href="/documentation/integrations/bland">
    Monitor Bland phone agents via pull-based sync
  </Card>

  <Card title="Leaping" icon="phone-forwarded" href="/documentation/integrations/leaping">
    Sync Leaping AI agents, prompts, and tools
  </Card>
</CardGroup>

### Real-time frameworks & self-hosted

<CardGroup cols={3}>
  <Card title="LiveKit Cloud" icon="video" href="/documentation/integrations/livekit">
    Dashboard-managed webhook integration, plus WebRTC endpoints
  </Card>

  <Card title="LiveKit (self-hosted)" icon="server" href="/documentation/integrations/livekit-self-hosted">
    Drop `observe_session` into your own Agents worker
  </Card>

  <Card title="Pipecat" icon="waypoints" href="/documentation/integrations/pipecat">
    Drop the Roark observer into your Pipecat pipeline, self-hosted or on Pipecat Cloud
  </Card>
</CardGroup>

### Chat agent platforms

<CardGroup cols={3}>
  <Card title="Google CES" icon="cloud" href="/documentation/integrations/google-ces">
    Chat simulations against Customer Engagement Suite apps
  </Card>

  <Card title="Kore AI" icon="bot" href="/documentation/integrations/kore">
    Chat simulations against Kore Agent Platform apps
  </Card>

  <Card title="Custom / API" icon="code" href="/documentation/integrations/custom-integrations">
    Any platform: send calls and chats with the API or SDKs
  </Card>
</CardGroup>

<Note>
  Don't see your platform? [Custom integrations](/documentation/integrations/custom-integrations) cover every capability in the matrix. Send an audio file or a message transcript and Roark handles the rest.
</Note>

***

## Simulation Transports

Whether a simulation runs as a call or a chat is decided by the **endpoint type** on the agent target. You don't pick a modality separately.

| Transport            | Endpoint type                     | Modality | Best for                                                                                             |
| :------------------- | :-------------------------------- | :------- | :--------------------------------------------------------------------------------------------------- |
| **Telephony (PSTN)** | Phone                             | Voice    | Any agent reachable at a phone number (the default for VAPI, Retell, ElevenLabs, Bland, and Leaping) |
| **LiveKit**          | LiveKit                           | Voice    | Agents running in a LiveKit room, cloud or self-hosted                                               |
| **SmallWebRTC**      | SmallWebRTC                       | Voice    | Pipecat agents using peer-to-peer WebRTC with no media server                                        |
| **WebSocket**        | WebSocket                         | Chat     | Custom text agents you expose yourself                                                               |
| **Provider chat**    | ElevenLabs WS · Google CES · Kore | Chat     | Auto-created when you connect the integration, nothing to wire up                                    |

<Note>
  ElevenLabs WS endpoints resolve to **chat**, not voice. To test an ElevenLabs agent over audio, use a Phone endpoint instead.
</Note>

***

## How Integrations Work

<Steps>
  <Step title="Choose your platform">
    Pick your platform from the cards above and open its setup guide.
  </Step>

  <Step title="Authenticate">
    Connect with an API key, OAuth, or (for self-hosted frameworks) a Roark API key dropped into your worker.
  </Step>

  <Step title="Configure sync">
    Select which agents to track and how far back to backfill historical calls.
  </Step>

  <Step title="Start monitoring and testing">
    Calls flow in and get scored automatically. Synced agents become targets you can point [run plans](/documentation/simulation-testing/run-plans) at.
  </Step>
</Steps>

Data reaches Roark one of three ways, depending on the platform: **webhooks** (VAPI, Retell, LiveKit Cloud), **scheduled pull** (ElevenLabs, Bland, Leaping), or a **drop-in SDK** you add to your own code (LiveKit self-hosted, Pipecat, custom).

***

## One Integration, Many Agents

A single integration syncs every agent in the connected account:

```
VAPI Integration
├── Customer Support Agent
├── Sales Qualification Agent
├── Appointment Booking Agent
└── Survey Collection Agent
```

* **Single setup**: configure once, sync all agents
* **Centralized management**: monitor every agent from one integration
* **Unified analytics**: compare performance across agents and across platforms
* **Simplified testing**: target any synced agent in a run plan

***

## Security & Privacy

* **Encrypted connections**: TLS on every data transfer
* **Secure storage**: credentials encrypted at rest and referenced by ID, never embedded in plans
* **Access control**: role-based permissions for integration management
* **Audit logging**: every integration activity is recorded
* **Data isolation**: customer data separated by organization
* **PII redaction**: strip sensitive data from transcripts and recordings with [PII redaction](/documentation/observability/pii-redaction)

For network-level controls, see [IP whitelisting](/documentation/integrations/ip-whitelisting).

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Generate an API key" icon="key" href="/documentation/getting-started/api-keys">
    Every integration path starts here
  </Card>

  <Card title="Set up collectors" icon="shield" href="/documentation/metrics/metric-collectors">
    Score every imported call automatically
  </Card>

  <Card title="Build a run plan" icon="list-check" href="/documentation/simulation-testing/run-plans">
    Turn a synced agent into a test suite
  </Card>

  <Card title="Webhooks" icon="webhook" href="/documentation/integrations/webhooks">
    Push Roark events into your own systems
  </Card>
</CardGroup>
