For the complete documentation index, see llms.txt. This page is also available as Markdown.

Channel Tagging System

Configure services for deployment channels (voice, text, async) with LLM preset validation.

Channel tags tell Amigo how your service will be used: over voice, over text, or asynchronously. Those tags drive validation and pick LLM presets suited to each channel's latency and capability profile.

Overview

Different deployment channels have distinct requirements:

  • Voice channels need ultra-low latency and restrict which state types you can use.

  • Text channels support the full feature set at moderate latency.

  • Async channels (email, API) have relaxed latency requirements and the largest capability surface.

The channel tagging system helps you configure services appropriately and validates configurations before sync.

Channels

Channel
Type
Typical Use Case

phone

voice

Telephony: PSTN (public switched telephone network) or VoIP (Voice over IP)

web_voice

voice

Browser WebRTC

mobile_voice

voice

Mobile app voice

sms

text

SMS messaging

whatsapp

text

WhatsApp

web_chat

text

Web chat widget

mobile_chat

text

Mobile app chat

email

async

Email

api

async

Direct API integration

Channel Profiles

Each channel type has a profile that defines its constraints.

Voice Channels

  • Max states: 5

  • Allowed state types: action, annotation, tool-call

  • Memory retrieval: disabled

  • Dynamic behaviors: not supported

  • Recommendation: configure keyterms for transcription accuracy

Text Channels

  • Max states: unlimited

  • Allowed state types: all

  • Memory retrieval: supported

  • Dynamic behaviors: supported

Async Channels

  • Max states: unlimited

  • Allowed state types: all

  • Memory retrieval: supported

  • Dynamic behaviors: supported

  • Maximum capabilities with relaxed latency requirements

Version Set Presets

Presets configure LLM models optimized for each channel type.

Tier
Voice
Text
Async

Standard

voice

text

async

Premium

voice_premium

text_premium

async_premium

Economy

voice_economy

text_economy

async_economy

Ultra-Low

voice_ultra_low

-

-

Ultra-Low Premium

voice_ultra_low_premium

-

-

Regional Availability

Some presets use LLMs that are not available in all regions. See LLM Regional Availability for the full availability matrix.

Ultra-Low Latency Presets

The voice_ultra_low and voice_ultra_low_premium presets require single-state context graphs.

Tag Format

Services support two tag formats in local JSON files.

Object Format

Tags encode two things:

  1. Channel (e.g., phone, web_chat): which deployment channel the service runs on.

  2. Preset (e.g., voice_premium, text): which LLM configuration to apply.

Service Environment Tags

Services can be tagged with dev or production to enforce different validation rules for version set pinning.

Environment Tag Options

Tag
Description
Validation Rules

dev

Development/sandbox services

No version pinning required. Can push directly to release.

production

Production services

Must have preview defined. release must match preview. All version sets must be pinned.

Adding Environment Tags

Add an environment tag alongside your channel tags:

Use "dev" instead of "production" for development or sandbox services.

No environment tag? Services without an environment tag skip environment-specific validation entirely.

Production Service Requirements

When a service is tagged production, the following rules are enforced during forge sync-to-remote:

  1. Preview version set required: a preview version set must be defined.

  2. Release matches preview: the release configuration must exactly match preview (agent version, context graph version, LLM preferences).

  3. Versions pinned: all version sets (except edge) must have explicit pinned version numbers. No latest.

Example validation error:

Dev Service Flexibility

Services tagged dev have no version set restrictions:

  • Can use unpinned versions (latest) in any version set.

  • No preview requirement.

  • Can push directly to release without going through a promotion workflow.

Validation

Services with channel tags are validated against channel constraints before every sync. Service tags determine which rules apply: LLM preferences must match the channel and cost expectations for those tags, presets must be compatible with their channels, and linked context graphs must fit the channel profile. Errors block sync. Warnings prompt for confirmation.

Validation Rules

Tag / Condition
Validation
Severity

Voice channel (phone, web_voice, mobile_voice)

Non-voice-optimized LLMs

ERROR

Voice preset (voice, voice_premium, etc.)

Non-voice-optimized LLMs

ERROR

Preset-channel mismatch

Voice presets only work with voice channels

ERROR

Regional availability

Preset LLMs must be available in the target region

ERROR

Economy preset (*_economy)

Premium-tier LLMs

ERROR

Premium preset (*_premium)

Only economy-tier LLMs

ERROR

Production environment

release LLM prefs != preview

ERROR

Channel constraints

Context graph checked against channel profile limits (see Dependency Validation below)

ERROR / WARNING

Voice service without keyterms

Transcription accuracy may suffer

WARNING

Empty llm_model_preferences (voice)

System defaults may not be voice-optimized

WARNING

No channel/preset tags

LLM preferences cannot be validated

WARNING

Voice-Optimized LLMs

Voice channels need a low Time-To-First-Token (TTFT) for real-time conversation, so only a subset of available LLMs meet the latency bar. Run forge channel llm-info --channel phone to see the current list of voice-optimized models.

Cost Tier Classifications

LLMs are classified into cost tiers for validation against preset expectations.

Tier
Description

Economy

Lightweight, lowest-cost models optimized for speed

Standard

Balanced cost and capability

Premium

Highest capability models at the highest cost

Run forge channel llm-info to see the current model-to-tier mapping and pricing.

System Defaults vs Preset Defaults

Example Validation Output

Standalone Validation

Use forge validate to check services locally before syncing.

This catches issues early without making any changes to the remote.

Dependency Validation (--check-dependencies)

The --check-dependencies flag validates that a service's linked assets are compatible with its channel constraints. It's essential for voice services, which have strict latency requirements.

What gets validated:

Check
Voice Channels
Severity

Context graph state count of 5 or fewer

Warning

No decision/reflection/recall states

Error

No active memory retrieval

Warning

No dynamic behaviors applied

Error

Single-state for ultra-low presets

Error

Example output:

Validation Flow

CLI Commands

Use forge channel commands to explore and validate configurations.

List Channels

Shows all supported channels with their profiles.

List Presets

Show Channel Profile

Displays constraints and recommendations for a specific channel.

Show Tags

Outputs the JSON tags to add to your service.

Validate Preset

Checks whether a preset is compatible with a channel, and optionally validates regional LLM availability.

Validate Context Graph

Validates context graph characteristics against channel constraints.

LLM Info

Shows the LLM catalog with voice-optimized recommendations.

Best Practices

Preset Selection Guide

Scenario
Recommended Preset

Production voice with quality focus

voice_premium

High-volume voice, cost-sensitive

voice_economy

Single-state voice flows

voice_ultra_low

Standard text chat

text

Complex reasoning (email, API)

async_premium

Example: Configuring a Voice Service

  1. Check channel constraints:

  2. Get tags for your preset:

  3. Add tags to your service in local/<env>/entity_data/service/<service>.json:

  4. Validate locally (catches issues without touching remote):

  5. Validate dependencies (makes sure the context graph is compatible):

  6. Preview sync changes:

  7. Apply changes:

Version Sets & Promotion

Last updated

Was this helpful?