# elevenlabs/cli architecture

> Architecture diagram of the GitHub repository elevenlabs/cli, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/elevenlabs/cli
- Repository: https://github.com/elevenlabs/cli

## Overview

ElevenLabs CLI combines broad platform API access with local-file-based Conversational AI agent management. The principal workflow is to initialize or edit an agent project, then push or pull its configurations to synchronize with ElevenLabs; other major branches cover direct API commands, text-to-speech playback, and waiting for asynchronous Flows results. The tree and sampled references support the CLI entry point, onboarding helpers, and SDK transport layers; unsampled workflow details are represented at their enclosing directories, with README-documented relationships identified as such.

Main entry points: [`cli/elevenlabs/main.rs`](https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/main.rs) (Command entry), [`cli/elevenlabs/workflow/agents.rs`](https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/agents.rs) (Agent sync), [`cli/elevenlabs/workflow/say.rs`](https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/say.rs) (Speak text), [`elevenlabs-sdk/src/client.rs`](https://github.com/elevenlabs/cli/blob/main/elevenlabs-sdk/src/client.rs) (SDK client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["CLI entry"]
  node_entrypoint["Command entry<br/>[main.rs]"]
  node_onboarding["Project onboarding"]
  node_onboard_session["Setup session<br/>[session.rs]"]
end

subgraph group_agent["Agent projects"]
  node_local_project["Agent project files<br/>[project.rs]"]
  node_agent_sync["Agent sync<br/>[agents.rs]"]
  node_templates["Agent templates<br/>[templates.rs]"]
  node_workflow_diagram["Workflow diagrams<br/>[diagram.rs]"]
  node_agent_graph["Agent graph<br/>[graph.rs]"]
end

subgraph group_commands["CLI workflows"]
  node_api_commands["API commands<br/>[sdk.rs]"]
  node_speech["Speak text<br/>[say.rs]"]
  node_flows_wait["Wait for Flows<br/>[flows_wait.rs]"]
  node_residency["Data residency<br/>[residency.rs]"]
  node_telemetry["Telemetry<br/>[telemetry.rs]"]
end

subgraph group_sdk["API client"]
  node_sdk_client["SDK client<br/>[client.rs]"]
  node_api_resources["API resources"]
  node_speech_engine["Speech engine API<br/>[speech_engine.rs]"]
  node_webhooks["Webhooks API<br/>[webhooks.rs]"]
end

subgraph group_transport["SDK transport"]
  node_http_client["HTTP transport<br/>[http_client.rs]"]
end

node_user(("CLI user"))
node_api_platform{{"ElevenLabs platform"}}
node_audio_player{{"Audio player"}}

node_user -->|"runs commands"| node_entrypoint
node_entrypoint -->|"dispatches API"| node_api_commands
node_entrypoint -->|"dispatches setup"| node_onboarding
node_onboarding -->|"runs session"| node_onboard_session
node_user -->|"edits configs"| node_local_project
node_entrypoint -->|"dispatches agents"| node_agent_sync
node_agent_sync -->|"syncs configs"| node_local_project
node_agent_sync -->|"pushes and pulls"| node_api_platform
node_user -->|"manages templates"| node_templates
node_user -->|"requests diagram"| node_workflow_diagram
node_user -->|"inspects links"| node_agent_graph
node_entrypoint -->|"dispatches speech"| node_speech
node_speech -->|"requests speech"| node_api_platform
node_speech -->|"plays audio"| node_audio_player
node_entrypoint -->|"dispatches wait"| node_flows_wait
node_flows_wait -->|"polls results"| node_api_platform
node_entrypoint -->|"configures residency"| node_residency
node_entrypoint -->|"configures telemetry"| node_telemetry
node_api_commands -->|"uses SDK"| node_sdk_client
node_sdk_client -->|"exposes resources"| node_api_resources
node_api_resources -->|"includes endpoint"| node_speech_engine
node_api_resources -->|"includes endpoint"| node_webhooks
node_sdk_client -.->|"uses transport"| node_http_client
node_http_client -.->|"sends requests"| node_api_platform

click node_entrypoint "https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/main.rs"
click node_onboarding "https://github.com/elevenlabs/cli/tree/main/cli/elevenlabs/workflow/onboard"
click node_onboard_session "https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/onboard/session.rs"
click node_local_project "https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/project.rs"
click node_agent_sync "https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/agents.rs"
click node_templates "https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/templates.rs"
click node_workflow_diagram "https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/diagram.rs"
click node_agent_graph "https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/graph.rs"
click node_api_commands "https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/sdk.rs"
click node_speech "https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/say.rs"
click node_flows_wait "https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/flows_wait.rs"
click node_residency "https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/residency.rs"
click node_telemetry "https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/telemetry.rs"
click node_sdk_client "https://github.com/elevenlabs/cli/blob/main/elevenlabs-sdk/src/client.rs"
click node_api_resources "https://github.com/elevenlabs/cli/tree/main/elevenlabs-sdk/src/api/resources"
click node_speech_engine "https://github.com/elevenlabs/cli/blob/main/elevenlabs-sdk/src/api/resources/speech_engine/speech_engine.rs"
click node_webhooks "https://github.com/elevenlabs/cli/blob/main/elevenlabs-sdk/src/api/resources/webhooks/webhooks.rs"
click node_http_client "https://github.com/elevenlabs/cli/blob/main/elevenlabs-sdk/src/core/http_client.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_entrypoint,node_onboarding,node_onboard_session,node_user toneBlue
class node_local_project,node_agent_sync,node_templates,node_workflow_diagram,node_agent_graph toneAmber
class node_api_commands,node_speech,node_flows_wait,node_residency,node_telemetry toneMint
class node_sdk_client,node_api_resources,node_speech_engine,node_webhooks toneRose
class node_http_client,node_api_platform,node_audio_player toneIndigo
```

## Components

### CLI entry

- [Command entry](https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/main.rs): `cli/elevenlabs/main.rs`
- [Project onboarding](https://github.com/elevenlabs/cli/tree/main/cli/elevenlabs/workflow/onboard): `cli/elevenlabs/workflow/onboard`
- [Setup session](https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/onboard/session.rs): `cli/elevenlabs/workflow/onboard/session.rs`

### Agent projects

- [Agent project files](https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/project.rs): `cli/elevenlabs/workflow/project.rs`
- [Agent sync](https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/agents.rs): `cli/elevenlabs/workflow/agents.rs`
- [Agent templates](https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/templates.rs): `cli/elevenlabs/workflow/templates.rs`
- [Workflow diagrams](https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/diagram.rs): `cli/elevenlabs/workflow/diagram.rs`
- [Agent graph](https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/graph.rs): `cli/elevenlabs/workflow/graph.rs`

### CLI workflows

- [API commands](https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/sdk.rs): `cli/elevenlabs/sdk.rs`
- [Speak text](https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/say.rs): `cli/elevenlabs/workflow/say.rs`
- [Wait for Flows](https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/flows_wait.rs): `cli/elevenlabs/workflow/flows_wait.rs`
- [Data residency](https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/residency.rs): `cli/elevenlabs/workflow/residency.rs`
- [Telemetry](https://github.com/elevenlabs/cli/blob/main/cli/elevenlabs/workflow/telemetry.rs): `cli/elevenlabs/workflow/telemetry.rs`

### API client

- [SDK client](https://github.com/elevenlabs/cli/blob/main/elevenlabs-sdk/src/client.rs): `elevenlabs-sdk/src/client.rs`
- [API resources](https://github.com/elevenlabs/cli/tree/main/elevenlabs-sdk/src/api/resources): `elevenlabs-sdk/src/api/resources`
- [Speech engine API](https://github.com/elevenlabs/cli/blob/main/elevenlabs-sdk/src/api/resources/speech_engine/speech_engine.rs): `elevenlabs-sdk/src/api/resources/speech_engine/speech_engine.rs`
- [Webhooks API](https://github.com/elevenlabs/cli/blob/main/elevenlabs-sdk/src/api/resources/webhooks/webhooks.rs): `elevenlabs-sdk/src/api/resources/webhooks/webhooks.rs`

### SDK transport

- [HTTP transport](https://github.com/elevenlabs/cli/blob/main/elevenlabs-sdk/src/core/http_client.rs): `elevenlabs-sdk/src/core/http_client.rs`

### Other components

- **CLI user**
- **ElevenLabs platform**
- **Audio player**

## Connections

- CLI user → Command entry: runs commands (evidence: `README.md`)
- Command entry → API commands: dispatches API (evidence: `cli/elevenlabs/main.rs`)
- Command entry → Project onboarding: dispatches setup (evidence: `README.md`)
- Project onboarding → Setup session: runs session (evidence: `cli/elevenlabs/workflow/onboard/session.rs`)
- CLI user → Agent project files: edits configs (evidence: `README.md`)
- Command entry → Agent sync: dispatches agents (evidence: `README.md`)
- Agent sync → Agent project files: syncs configs (evidence: `README.md`)
- Agent sync → ElevenLabs platform: pushes and pulls (evidence: `README.md`)
- CLI user → Agent templates: manages templates (evidence: `README.md`)
- CLI user → Workflow diagrams: requests diagram (evidence: `README.md`)
- CLI user → Agent graph: inspects links (evidence: `README.md`)
- Command entry → Speak text: dispatches speech (evidence: `README.md`)
- Speak text → ElevenLabs platform: requests speech (evidence: `README.md`)
- Speak text → Audio player: plays audio (evidence: `README.md`)
- Command entry → Wait for Flows: dispatches wait (evidence: `README.md`)
- Wait for Flows → ElevenLabs platform: polls results (evidence: `README.md`)
- Command entry → Data residency: configures residency (evidence: `README.md`)
- Command entry → Telemetry: configures telemetry (evidence: `README.md`)
- API commands → SDK client: uses SDK
- SDK client → API resources: exposes resources (evidence: `elevenlabs-sdk/src/client.rs`)
- API resources → Speech engine API: includes endpoint (evidence: `elevenlabs-sdk/src/api/resources/speech_engine/speech_engine.rs`)
- API resources → Webhooks API: includes endpoint (evidence: `elevenlabs-sdk/src/api/resources/webhooks/webhooks.rs`)
- SDK client → HTTP transport: uses transport
- HTTP transport → ElevenLabs platform: sends requests
