Policies
Policies define what a profile is allowed to do.
A policy is a reusable bundle of permissions and runtime behavior - it controls which adapters and functions are available during a call.
Policies are declared under [policies].
[policies.concierge]
adapters = ["call_transfer", "hangup"]
functions = ["dispatch_single_webhook"]
intent_router = "default"
vad = { enabled = true }
[policies.service_agent]
adapters = ["webhook_validate", "webhook_process", "webhook_audit", "multi_webhook_workflow", "call_transfer"]
call_memory = { enabled = true }
functions = ["dispatch_single_webhook", "dispatch_multi_webhook_pipeline"]
intent_router = "default"
Policy names
Policy names are the keys below [policies].
In this example:
conciergedefault
Profiles reference policies by name:
[profiles.main]
persona = "concierge"
policy = "concierge"
realtime = "deepgram_rt"
Adapters
The adapters array defines which adapters are allowed.
adapters = ["call_transfer", "hangup"]
This does not execute adapters by itself. It only makes them available to the active profile.
A router still needs to select an adapter.
Functions
The functions array defines which assistant functions are available.
functions = ["dispatch_single_webhook"]
Functions describe structured actions the assistant can call. Policies decide which functions are exposed during a call.
Intent router
The intent_router field selects the router used by the policy.
intent_router = "default"
This references a router defined under:
[routers.intent.default]
The router maps detected intents or function calls to adapters.
Voice activity detection
Policies can enable voice activity detection behavior.
vad = { enabled = true }
Voice activity detection helps the runtime understand when the caller is speaking and when a turn has ended.
Call memory
Call memory can be enabled per policy.
call_memory = { enabled = true }
Use call memory when the assistant must retain context during the call flow.