ElevenAgents SDK

Wire ElevenLabs multimodal voice agents into web and React Native apps with TypeScript in minutes.

Stars
★ 116
Last updated
today
License
MIT
Primary language
TypeScript

At a glance

Works with
Platform-specific
You'll need
Node.jspnpmTurbo@livekit/react-native @livekit/react-native-webrtc livekit-client (React Native peer dependencies)ElevenLabs agent IDShell / CLINetwork access
Typical use
A frontend team adding voice support to an existing React/Next.js site wires useConversation from @elevenlabs/react to an existing agent in minutes.
Main limitation
Sessions depend on ElevenLabs-hosted agents identified by agentId; there is no documented way to run the agent runtime yourself.

What does this agent do, and when should you use it?

This is ElevenLabs' official monorepo for the ElevenAgents SDK, which brings multimodal voice agents into web and mobile applications through TypeScript/JavaScript. It ships five separately installable npm packages: the core client @elevenlabs/client, React bindings @elevenlabs/react, mobile bindings @elevenlabs/react-native, and two website embeddings, @elevenlabs/convai-widget-core and @elevenlabs/convai-widget-embed. The execution model is a real-time WebRTC audio session between the browser or mobile app and an agent hosted by ElevenLabs, with the SDK handling session lifecycle, event callbacks, client-tool invocation and audio device control. You point at an agent with an agentId, and what you get is a conversation surface and event stream embedded in your own product, not a standalone CLI or server. The repo uses Turbo and pnpm for builds and tests, plus Changesets for releases, and is MIT licensed.

The core @elevenlabs/client package opens WebRTC-based audio streaming, exposes an event-driven session lifecycle API, supports registering client tools, handles both public and private agent authentication, and gives fine-grained control over input and output audio devices. @elevenlabs/react exports the useConversation hook: you pass agentId, call conversation.startSession(), and can pass a clientTools object in that same call to register async functions the agent may invoke, such as logMessage. @elevenlabs/react-native targets mobile and requires the extra peer dependencies @livekit/react-native, @livekit/react-native-webrtc and livekit-client, plus microphone and network permission entries in iOS Info.plist and Android AndroidManifest.xml. The two widget packages package an agent as a Web Component embeddable in any site. End to end: create an agent on the ElevenLabs platform to get an agentId, initialize the SDK in your React, React Native or plain JS app, start a session, exchange audio with the hosted agent, and receive transcripts, state changes and tool-call events through your callbacks.

  1. A frontend team adding voice support to an existing React/Next.js site wires useConversation from @elevenlabs/react to an existing agent in minutes.
  2. A mobile developer who wants one voice-conversation codebase for iOS and Android adopts @elevenlabs/react-native along with the LiveKit dependencies and microphone permissions.
  3. A marketer or content owner without a frontend framework drops the pre-bundled @elevenlabs/convai-widget-embed into an arbitrary website.
  4. A product team that needs the voice agent to trigger in-page actions — logging, routing, form filling — registers client-side functions through clientTools.
  5. An app that needs granular control over audio input/output devices and session events in plain JavaScript uses the @elevenlabs/client core package directly.

How do you install or deploy this agent?

Install the package you need with npm; React Native also needs its peer dependencies.

How do you use this agent?

After installing, call useConversation inside a React component with your agentId and start the session; client tools are registered in the same startSession call:

What are this agent's strengths and limitations?

Pros
  • Official monorepo covering three distinct delivery surfaces at once: core JS client, React hooks, React Native SDK and two embeddable widgets.
  • WebRTC-based streaming, which the README describes as low-latency, matching interactive voice conversation needs.
  • Client tools let the agent invoke functions inside your application, so it can do more than talk.
  • The React Native package documents the exact iOS Info.plist and Android AndroidManifest.xml permission entries needed, reducing mobile setup guesswork.
  • MIT licensed, so it can be used in commercial products and audited directly.
Limitations
  • Sessions depend on ElevenLabs-hosted agents identified by agentId; there is no documented way to run the agent runtime yourself.
  • React Native adds three peer dependencies (@livekit/react-native, @livekit/react-native-webrtc, livekit-client) plus native config edits, making mobile setup heavier than web.
  • Only JavaScript/TypeScript ecosystems are covered; there are no official packages for Python, Go or Java backends.
  • It requires microphone access and WebRTC audio; the docs do not describe use in headless server environments.
  • Pricing, quotas and retry/failure behavior are absent from the README and must be checked elsewhere.

How does this agent compare with similar options?

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
ElevenAgents SDK This agent 43 · Major gaps — ★ 116 today TypeScript —
LiveKit Agents: Framework for Realtime Voice AI 43 · Major gaps CLIFree + model costs ★ 15k today Python OpenAI API · Claude API
Gitagent 44 · Major gaps CLIFree + model costs ★ 743 1d ago Rust OpenAI API · Claude API
TanStack AI 76 · Some gaps Library / SDKFree + model costs ★ 3.3k today TypeScript OpenAI API · Claude API

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Major gaps
43/ 100 5-point scale 2.2 / 5
This review covers the source as of Oct 30, 2026. The project has shipped 14 stable release(s) since, which have not been re-reviewed. The score and verdict describe the reviewed version only. Recent releases ↓
Trust 10/29
Reliability 5/14
Adaptability 9/18
Convention 10/18
Effectiveness 6/13
Verifiability 3/8
Why each dimension lost points
Trust10 / 29 · 1.7/5

README shows clientTools letting the agent trigger in-app actions but gives no least-privilege, user-confirmation, or data-flow detail; microphone permissions appear only as platform snippets, with no sensitive-data handling or rollback guidance. Dependency security is thin (pnpm overrides, onlyBuiltDependencies). Source attribution is clear (MIT, ElevenLabs copyright, README credit), so source_attribution scores 2.

Reliability5 / 14 · 1.8/5

README, package.json scripts, and CI workflows (build/lint) are mutually consistent, so self_consistency is 2; dependency availability rests only on npm badges and peer-dependency lists without lockfile verification, scoring 1; no failure messages or error-handling documentation exist, so failure_messages is 0.

Adaptability9 / 18 · 2.5/5

Covers client/react/react-native/widget scenarios, so audience_and_scenarios is 2; capability boundaries (what the agent can/cannot do) and trigger precision (when sessions start, tool-call conditions) are barely described, each 1; environment fit has iOS/Android setup and Node engine constraints, scoring 2.

Convention10 / 18 · 2.8/5

Information architecture is clear (package table, sections); install_notes are complete with peer deps and platform permissions; naming_stability is 2 given stable package names and version badges; examples only link to external repos, so examples_and_faq is 1; no known-limitations section, so known_limitations is 0; LICENSE is complete, scoring 3; Changesets release flow is explicit, scoring 2; maintenance responsibility points only to Discord/email without SLA or owner, scoring 1.

Effectiveness6 / 13 · 2.3/5

Output usability has runnable snippets, scoring 2; marginal value depends on the external ElevenLabs service and the repo is only an SDK wrapper, so marginal_value and cost_benefit are each 1.

Verifiability3 / 8 · 1.9/5

Claims mostly point to external docs with limited in-repo traceability, so claim_traceability is 1; cross-source corroboration is partial (README vs package.json), scoring 1; fact/inference separation is acceptable but lacks test evidence, scoring 1.

Risks and how to mitigate them
  • Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
  • clientTools let the agent trigger in-app actions, but the repo documents no least-privilege or user-confirmation mechanism; integrators must add their own safeguards.
  • Microphone and network permissions appear only as platform snippets, with no sensitive audio-data handling or rollback guidance.
  • No failure messages, error handling, or known-limitations docs; production risk must be assessed independently.
  • Publisher identity is unverified by FollowAgents, and maintenance responsibility/update path is unclear.
Evidence confidence: Low Reviewed Oct 30, 2026 Reviewed revision 23e10c4bc423 New commits since this review; the score may not cover them
See the full review method →

Recent releases

Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.

  1. Release notes excerpt
    Minor Changes - 29f9b8e: Add the entityRedaction and entityRedactionMode options to Scribe.connect() and dispatch the new redacted_transcript server message: - entityRedaction: redact entities from committed transcripts. Accepts the same values as entityDetection ("all", a category, a specific entity type, or a list), sent as repeated entity_redaction query params. Cannot be combined with transcriptEdit. …
    View on GitHub ↗
  2. Release notes excerpt
    Minor Changes - 29f9b8e: Add the entityRedaction and entityRedactionMode options to Scribe.connect() and dispatch the new redacted_transcript server message: - entityRedaction: redact entities from committed transcripts. Accepts the same values as entityDetection ("all", a category, a specific entity type, or a list), sent as repeated entity_redaction query params. Cannot be combined with transcriptEdit. …
    View on GitHub ↗
  3. Release notes excerpt
    Patch Changes - Updated dependencies [29f9b8e] - Updated dependencies [6dab091] - @elevenlabs/[email protected]
    View on GitHub ↗

FAQ

Do I have to pay to use these SDKs?
The SDK is MIT-licensed and free, but every session connects to an agent hosted by ElevenLabs, so real costs depend on your ElevenLabs plan and usage. The README does not list prices.
Can I self-host the agent and skip the ElevenLabs cloud?
No. The SDK connects to an agent you created on the ElevenLabs platform via agentId and the session audio is handled by that service; no self-hosted inference path is documented.
Why is React Native setup more involved than web?
It requires installing @livekit/react-native, @livekit/react-native-webrtc and livekit-client as peer dependencies, and manually declaring microphone and network permissions in iOS Info.plist and Android AndroidManifest.xml.
Can the agent act on my page, not just talk?
Yes — register client-side functions such as logMessage through clientTools, and the SDK runs your async logic when the agent triggers them during a session.
Does it work with Vue, Svelte or plain JavaScript?
You can use the core @elevenlabs/client TypeScript/JavaScript package, but hooks like useConversation are React-only, so other frameworks need their own wrapper on top of the core client.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents