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

# SDK Introduction

> RTVI SDK design and architecture

RTVI is an open standard that aims to support a wide variety of use cases.

The core functionality of the SDK has a fairly small footprint:

* Device and media stream management
* Managing bot configuration
* Sending generic actions to the bot
* Managing session state and errors

To connect to a bot, you will need both this SDK and a transport implementation.

A platform that implements RTVI will generally ship a helper library designed to be used with this SDK. The helper library will provide the transport functions. Helper libraries also may provide [helper methods](./helpers/introduction) for interacting with that platform's bot profiles.

Programming computers is often an exercise in finding the right level of abstraction. A core goal of RTVI is to make it possible to write real-time AI clients that can talk to lots of different inference services. An important goal in designing this RTVI JavaScript SDK is to make it easy and ergonomic to write *specific* client applications. These goals partially conflict! The split between the core SDK and helper libraries is a way to achieve both of these goals.

For an example of a platform-specific helper library, see the source code for [Daily's RTVI client library](https://github.com/rtvi-ai/rtvi-client-web/tree/main/rtvi-client-js-daily).

Reference docs for the major parts of the RTVI spec implemented by this SDK are in the sidebar, or just click on the links below:

* The `VoiceClient` [constructor](./client-constructor)
* Client [instance methods](./client-methods)
* Setting up a bot's [services](./services)
* Service [configuration](./configuration)
* [Messages and events](./messages)
* [Callbacks](./callbacks)
* [Errors](./errors)
