Assistants
Define assistants, settings, languages, opening messages, and FAQ in config.yaml.
Each directory directly under the repository root that contains config.yaml
defines an assistant. Its directory name identifies it across syncs.
.
├── reception/
│ ├── config.yaml
│ ├── base.md
│ ├── default.md
│ ├── functions.yaml # optional
│ └── workflows/ # optional
└── sales/
├── config.yaml
├── base.md
└── default.mdAssistant directory names must start with a letter or digit, contain only
letters, digits, ., _, or -, and be at most 100 characters long. Put
assistants directly at the root: assistants/reception/config.yaml is not
discovered as an assistant. A repository-level config.yaml is also ignored.
Configuration
name: Reception
type: inbound
spokenName: Reception
timeout:
firstNotice: 30
final: 60
languages: [en, nl]
timezone: Europe/Amsterdam
opening:
en: "Hello, you are speaking with {{assistant_name}} at {{organization_name}}. How can I help?"
nl: "Hallo, u spreekt met {{assistant_name}} van {{organization_name}}. Waarmee kan ik u helpen?"
faq:
hours:
en:
question: "When are you open?"
answer: "Monday to Friday, from 9am to 5pm."
nl:
question: "Wanneer zijn jullie open?"
answer: "Van maandag tot vrijdag, van 9 tot 17 uur."| Field | Required | Meaning and constraints |
|---|---|---|
name | Yes | Dashboard name, 1–120 characters. |
type | No | inbound or outbound. Defaults to inbound. |
spokenName | No | Spoken assistant name, 1–80 characters. Defaults to name; set this explicitly if name exceeds 80 characters. |
timeout.firstNotice | Yes | Seconds of silence before the first notice; an integer from 5 to 300. |
timeout.final | Yes | Additional silence timeout after the first notice, in seconds; an integer from 5 to 300. |
languages | Yes | Nonempty list of en and/or nl. The first entry is the default language. |
timezone | Yes | One of the supported timezones below. |
models | No | AI model, speech model, and voices. New assistants start with Telnyx Kimi K2.6 and the initial ElevenLabs v3 voices; later syncs preserve saved selections. |
opening | No | Opening text by language. Omitted languages use the standard introduction for the assistant type. |
faq | No | Up to 100 FAQ entries, each containing answers by language. Defaults to an empty object. |
Unknown fields are rejected. Keep prompts in Markdown files and functions in
functions.yaml. Phone assignments, transfer settings, SMS sender settings, and
integration credentials are configured in the dashboard.
Models and voices
Set models to choose the same approved options shown in the dashboard's
Models & voice page. Changes apply to new calls. Speech recognition stays
on Deepgram Nova-3.
name: Reception
timeout: { firstNotice: 30, final: 60 }
languages: [en, nl]
timezone: Europe/Amsterdam
models:
llm: openai/gpt-4.1-mini
voices:
en:
tts: gradium/default
voice: 4SZHfMpw-p46Ywgs
nl:
tts: cartesia/sonic-3.6
voice: 9626c31c-bec5-4cca-baa8-f8ba9e84c8bcWhen models is provided, llm and both voices language entries are required.
Each language has its own tts model and voice ID, with an optional name
for display. Providers only need to support the language they are selected for.
Existing configurations with a shared models.tts, string voice IDs, and
optional voiceNames remain supported.
| AI model | models.llm |
|---|---|
| Telnyx Kimi K2.6 (default) | telnyx/kimi-k2.6 |
| Gemma 4 31B | google/gemma-4-31b-it |
| GPT-4.1 mini | openai/gpt-4.1-mini |
Speech model (models.voices.<language>.tts) | Voice IDs | Languages in this app |
|---|---|---|
elevenlabs/eleven_v3 (default) | An accessible ElevenLabs voice ID | English, Dutch |
cartesia/sonic-3.6 | Public Cartesia voice ID, such as Jacqueline in the example above | English, Dutch |
gradium/default | Gradium catalog voice ID, such as 4SZHfMpw-p46Ywgs (Harper) | English only |
deepgram/aura-2 (legacy) | Aura-2 voice name, such as athena (English) or rhea (Dutch) | English, Dutch |
Omit models to initialize a new assistant with the initial AI model and concrete
speech voices. Later syncs preserve that assistant's saved selections when
models is omitted. Changing the platform's initial voices does not change
existing assistants. Every voice must be a concrete provider ID; default is
not a voice ID.
The dashboard library searches current provider catalogs by name, ID, or descriptive
keywords. Copy IDs from that library and preview them before using them in Git.
Sync checks model names, voice ID syntax, and model language support; provider
availability is checked when speech is generated. An ElevenLabs shared voice must
already be accessible to the platform account. Gradium can handle English while
another provider handles Dutch, as shown above.
Supported timezones
| Region | Values |
|---|---|
| Europe | Europe/London, Europe/Amsterdam, Europe/Paris, Europe/Berlin, Europe/Moscow |
| Americas | America/New_York, America/Chicago, America/Denver, America/Los_Angeles, America/Toronto, America/Sao_Paulo |
| Asia | Asia/Dubai, Asia/Kolkata, Asia/Shanghai, Asia/Singapore, Asia/Hong_Kong, Asia/Tokyo, Asia/Seoul |
| Oceania | Australia/Sydney, Pacific/Auckland |
| Africa | Africa/Cairo, Africa/Johannesburg |
Opening messages and FAQ
Every language used in opening or faq must also appear in languages.
Opening messages support {{organization_name}} and {{assistant_name}};
see Prompt variables.
The example above uses a stable key, hours, with a translated question and
answer for each language. If the question is shared across languages, a FAQ entry
can instead use the question itself as the key:
faq:
"Wi-Fi?":
en: "Ask reception for the guest network password."
nl: "Vraag de receptie naar het wachtwoord van het gastnetwerk."FAQ keys and questions must be nonempty and at most 500 characters. Answers must be nonempty and at most 10,000 characters. FAQ supplies knowledge for the assistant to use during the conversation.
Multiple assistants and identity
Add another root directory with its own config.yaml, base.md, and
default.md to create another assistant. Each assistant has its own prompts,
functions, workflows, and dashboard integration connections.
Changing name updates the existing assistant's display name. Renaming its
directory creates a new assistant and marks the previous one as removed from
the repository. The old assistant's phone assignments do not move to the new
one.
An existing assistant's type cannot change between inbound and outbound.
Create a new directory for the other type. See
Syncing and changes for identity, removals, and import limits.