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.md

Assistant 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

reception/config.yaml
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."
FieldRequiredMeaning and constraints
nameYesDashboard name, 1–120 characters.
typeNoinbound or outbound. Defaults to inbound.
spokenNameNoSpoken assistant name, 1–80 characters. Defaults to name; set this explicitly if name exceeds 80 characters.
timeout.firstNoticeYesSeconds of silence before the first notice; an integer from 5 to 300.
timeout.finalYesAdditional silence timeout after the first notice, in seconds; an integer from 5 to 300.
languagesYesNonempty list of en and/or nl. The first entry is the default language.
timezoneYesOne of the supported timezones below.
modelsNoAI model, speech model, and voices. Defaults to Telnyx Kimi K2.6 and the configured ElevenLabs v3 voices.
openingNoOpening text by language. Omitted languages use the standard introduction for the assistant type.
faqNoUp 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.

reception/config.yaml
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-f8ba9e84c8bc

When 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.

AI modelmodels.llm
Telnyx Kimi K2.6 (default)telnyx/kimi-k2.6
Gemma 4 31Bgoogle/gemma-4-31b-it
GPT-4.1 miniopenai/gpt-4.1-mini
Gemini 3.8 Flashgoogle/gemini-3.8-flash
Gemini 3.5 Flash Litegoogle/gemini-3.5-flash-lite
GPT-5.4 miniopenai/gpt-5.4-mini
GPT-5.4 nanoopenai/gpt-5.4-nano
Speech model (models.voices.<language>.tts)Voice IDsLanguages in this app
elevenlabs/eleven_v3_conversational (default)default or an accessible ElevenLabs voice IDEnglish, Dutch
elevenlabs/eleven_flash_v2_5default or an accessible ElevenLabs voice IDEnglish, Dutch
elevenlabs/eleven_multilingual_v2default or an accessible ElevenLabs voice IDEnglish, Dutch
cartesia/sonic-3.6Public Cartesia voice ID, such as Jacqueline in the example aboveEnglish, Dutch
gradium/defaultGradium catalog voice ID, such as 4SZHfMpw-p46Ywgs (Harper)English only

An explicit ElevenLabs default voice is resolved to the configured voice ID for that language when syncing. Omit models to initialize a new assistant with the default AI model and concrete voice IDs. Later syncs with models omitted preserve the saved selections, even if the platform defaults have changed. 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. ElevenLabs voice IDs must already be accessible to the platform account and pass its standard-rate filter before the configuration is saved. Calls reuse that approval; pricing is checked again when the configuration is saved or synced with a new commit. Gradium can handle English while another provider handles Dutch, as shown above.

Supported timezones

RegionValues
EuropeEurope/London, Europe/Amsterdam, Europe/Paris, Europe/Berlin, Europe/Moscow
AmericasAmerica/New_York, America/Chicago, America/Denver, America/Los_Angeles, America/Toronto, America/Sao_Paulo
AsiaAsia/Dubai, Asia/Kolkata, Asia/Shanghai, Asia/Singapore, Asia/Hong_Kong, Asia/Tokyo, Asia/Seoul
OceaniaAustralia/Sydney, Pacific/Auckland
AfricaAfrica/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.

On this page