Skip to main content

Variant attributes provide per-variant configuration so prompts and behavior can change by location, environment, or tenant without separate code or deployments.

At runtime, the platform selects a variant, and the agent reads the attributes associated with that variant.

Location

Variant attributes are defined in:

What the file contains

The file has two top-level keys:
  • variants
  • attributes

Variants

The variants section defines the available variants. Each variant includes: Exactly one variant should have is_default: true.

Attributes

The attributes section defines the values that vary by variant. Each attribute includes: Every attribute must provide a value for every defined variant, even if that value is an empty string.

Example

Why variants are useful

Variants let one agent behave differently in different contexts without duplicating the whole project.

Branding

Change names, labels, or brand-specific wording.

Contact details

Swap phone numbers, addresses, and office hours.

Environment-specific behavior

Store values such as region codes, timezones, or flags.

Multi-tenant setups

Reuse the same logic with tenant-specific values.

Using variant attributes in prompts and resource files

Use {{attr:attribute_name}} in supported text fields such as:
  • flow step prompts
  • topic actions
  • rules
  • greeting messages
  • disclaimer messages
  • personality custom
  • role custom

Example

Using variant attributes in Python

In code, variant values are read from conv.variant:
Use the same attribute names that are defined in variant_attributes.yaml.

Typical attribute types

Common uses include:

Important formatting notes

  • variant names with special characters should be quoted
  • multi-line values should use |-
  • every variant must have a value for every attribute
Missing values will fail validationIf a variant is missing from an attribute’s values map, validation will fail.

Best practices

  • keep variant names stable over time
  • set exactly one default variant
  • provide a value or "" for every variant in every attribute
  • prefer {{attr:...}} over hard-coded strings when values vary by location or environment
  • use multi-line YAML for disclaimers, instructions, or longer text values

Topics

See how variant attributes are used in topic actions.

Voice settings

Use variant attributes in greetings and disclaimers.

Variant management (platform)

How variants are routed at runtime — SIP header routing, default selection, and conv.variant access.
Last modified on July 9, 2026