# Introduction

> Put a Voxio voice agent on your website, in your app or on the phone, and manage it from your own code.

Source: https://voxio.in/docs · voxioagent 2.0.0 · Index: https://voxio.in/docs/llms.txt

Voxio runs voice agents. You design an agent in the dashboard: what it says, how it sounds and what it can do. The `voxioagent` package then puts it in front of people as a button on your site, a talking face, a chat window or a phone call.

## What you can build

| To build | Use | Guide |
| --- | --- | --- |
| A "Talk to us" button on a website | `<voxio-voice-button>` | [Voice button](https://voxio.in/docs/voice-button.md) |
| A lip-synced face that talks | `<voxio-avatar>` | [Talking avatar](https://voxio.in/docs/avatar.md) |
| A chat window | `<voxio-chat>` | [Chat](https://voxio.in/docs/chat.md) |
| Your own call interface | `voxioagent/client` | [Headless sessions](https://voxio.in/docs/sessions.md) |
| An agent that fills in forms and clicks as it talks | Web actions | [Web actions](https://voxio.in/docs/web-actions.md) |
| Agents created and changed from your server | `voxioagent/server` | [Flows](https://voxio.in/docs/flows.md) |
| Calls to your customers’ phones | Calls API | [Phone calls](https://voxio.in/docs/phone-calls.md) |

## Concepts

### Flow

A **flow** is one agent: its workflow (the conversation it follows), its voice (speech-to-text and text-to-speech), its behaviour settings, its face if it has one, its phone numbers and its webhook. Everything you put on a page talks to exactly one flow.

### Keys

Every flow has a **flow key**, which widgets and sessions use to reach it. Your account has an **account key**, which creates and changes flows and must stay on your server. For which key goes where, see [Keys and authentication](https://voxio.in/docs/authentication.md).

### Session

A **session** is one conversation: a browser call, a chat or a phone call. Each session has an id, a transcript, timings and, when recording is on, a recording.

## The package

One npm package, `voxioagent`, has an entry point for each place your code runs:

| Import | What it is | Runs in |
| --- | --- | --- |
| `voxioagent/widget` | Ready-made web components: voice button, avatar, chat | Browser |
| `voxioagent/react` | `useVoxioSession` and React components | Browser (React 18+) |
| `voxioagent/client` | Headless voice sessions over WebRTC, with typed events and web actions | Browser |
| `voxioagent/server` | Flows, sessions and usage | Node 18+ or edge |
| `voxioagent/voxio.js` | One file for a script tag, with no build step | Browser |

## Next steps

- [Quickstart](https://voxio.in/docs/quickstart.md): put a working voice button on a page in five minutes.
- [Keys and authentication](https://voxio.in/docs/authentication.md): learn which key goes where.
- [Headless sessions](https://voxio.in/docs/sessions.md): build your own call interface.
