> For the complete documentation index, see [llms.txt](https://docs.ojin.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ojin.ai/apps/overview/configure.md).

# Create & Configure

> Set up your Human Agent in the Ojin dashboard — pick a mode, configure appearance and behaviour, and go online.

## Prerequisites

1. An Ojin account with an active API key — [get your API key](/getting-started/authentication.md)

## Creating an Agent

Head to the [Ojin dashboard](https://ojin.ai/dashboard) and create a new agent. Give it a name and pick your mode:

* **Ojin Agent** — Ojin handles everything: the conversational pipeline and avatar rendering. You just configure the personality and appearance.
* **Third-Party Agent** — you bring your own speech-to-speech provider (Hume, ElevenLabs Agents, or Ultravox). Ojin adds the visual avatar.

### Starting from a Preset

If you choose Ojin Agent mode, you can start from a preset — a ready-made template that pre-fills the face, voice, system prompt, and behaviour for common use cases like Customer Support, Sales Assistant, or Receptionist. You can customize everything after creation.

Alternatively, start blank and configure each field yourself.

## Configuring an Ojin Agent

### System Prompt

Write a prompt that defines how the agent behaves — its personality, knowledge, tone, and any instructions for the conversation. This works the same as a system prompt for any LLM.

### Face

Pick a visual appearance for your agent. The face is powered by Ojin's avatar model [ojin/oris-portrait](/models/oris-portrait.md), which generates lifelike personas from a single reference image. Browse the available face configurations in the dashboard and select the one that best fits your agent's personality.

### Voice

Select a TTS voice for the agent's speech output. The voice determines how the agent sounds when it responds.

### Behaviour

Configure how the agent interacts:

* **Greeting** — the first thing the agent says when a session starts (e.g., "Hi, how can I help you today?")
* **Vocal burst** — a short sound the agent makes while listening (e.g., "mhm", "uh-huh") to signal active listening
* **Nudge** — a message the agent sends if the user stays silent for a while

### Tools (Function Calling)

Give the agent tools it can call during a conversation — to look something up, update your UI, or notify a backend. Add and configure tools here, choosing how each one's calls are delivered (to a webhook or to the embedding page). See [**Tools & Events**](/apps/overview/tools.md) for the delivery modes and how to handle calls.

### Advanced Settings

Fine-tune the agent's audio processing:

* **VAD stop seconds** — how long to wait after the user stops speaking before the agent responds (default: 0.5s)
* **Min volume** — minimum audio volume threshold to detect speech (default: 0.1)
* **Noise filter** — toggle background noise filtering (default: off)

### Session Limit

Set the maximum duration for a single session in seconds. Default is 600 seconds (10 minutes). When the limit is reached, the session ends automatically.

## Configuring a Third-Party Agent

### Face

Same as Ojin Agent — pick a visual appearance using Ojin's avatar model [ojin/oris-portrait](/models/oris-portrait.md). Regardless of which provider powers the conversation, Ojin renders the avatar.

### Provider

Select your speech-to-speech provider from the dropdown:

* **Hume** — enter your Hume API key. Config ID is optional (Hume can use a default config).
* **ElevenLabs Agents** — enter your ElevenLabs API key and your ElevenLabs agent ID (required).
* **Ultravox** — enter your Ultravox API key. Config ID is optional.

{% hint style="warning" %}
Your provider API key is encrypted at rest and never displayed after you save it. To rotate a key, enter the new one in the dashboard — it takes effect for new sessions immediately.
{% endhint %}

## Going Online

When your agent is configured, toggle its status to **online** in the [dashboard](https://ojin.ai/dashboard). The system validates that all required fields are filled before allowing the agent to go live:

* **Ojin Agent** requires: system prompt, voice, and face
* **Third-Party Agent** requires: provider, API key, and face (plus any provider-specific required fields)

If anything is missing, the dashboard tells you which fields need attention.

## Concurrency

The **max concurrency** setting controls how many simultaneous sessions your agent can handle. Default is 1 — meaning one user can talk to the agent at a time. Increase this if you expect multiple concurrent users.

When all slots are in use, new connection attempts receive a `concurrency_limit` error with a `retry_after_seconds` hint.

## Next Steps

* [**Tools & Events**](/apps/overview/tools.md) — give the agent function-calling tools and react to it from your page
* [**Widget Integration**](/apps/overview/widget-integration.md) — add the agent to your web page
* [**Session API Reference**](/apps/overview/api-reference.md) — for custom integrations


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ojin.ai/apps/overview/configure.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
