Skip to main content

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:

  • concierge
  • default

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.