Assembly LineDocs

Channels

Select public ingress, delivery, attachments, and channel-owned audio.

Edit

Channels normalize provider events into turns and deliver replies. Omit channels for no public ingress. Because the field is plural, select even one complete channel plugin with a list:

channels: [photon]

The Photon plugin owns its route, ingress verification, delivery, and attachments. Its declared dependency installs and locks the audio provider plugin, whose openrouter contribution supplies the default transcription. Selecting a channel also activates tools contributed by that same plugin. Optional connections and other capabilities remain explicit, so channel selection does not expand unrelated network authority. Do not repeat Photon or its audio dependency under capabilities:.

Multiple channels

Use a list when no channel needs an exception:

channels: [photon, slack]

A sole channel becomes the default outbound channel. Multiple channels have no inferred outbound default. Use mapping form and mark at most one:

channels:
  photon: {}
  slack:
    default: true

Audio

Photon, Slack, Teams, and Telegram transcribe inbound audio through OpenRouter by default. A2A and Discord do not. The channel package depends on the audio plugin, and the audio plugin owns provider kind, package, env contract, and option schema. Override or disable the default inside the channel:

channels:
  photon:
    audio: openai
  slack:
    audio: disabled

Configure a provider only when its defaults are insufficient:

channels:
  telegram:
    audio:
      openrouter:
        model: openai/whisper-large-v3
        language: en

There is no top-level media or audio field. See Declarative Reference: Audio options for models, fallbacks, size limits, timeouts, endpoints, and credentials.

Typed exceptions

Every channel accepts default, audio, and hooks. Official channel plugins add only these fields:

ChannelExtra fields
PhotonNone
SlackNone
TelegramparseMode, disableWebPagePreview, replyToMessage, allowedUpdates
TeamsallowedTenants, allowedServiceUrls, stripMentions, typing
Discordgateway, allowedGuilds, dmSupport, requireMention, allowedMentions
A2Aname, description, version, skills, provider, documentationUrl, iconUrl

Routes, HTTP methods, transport, required environment, descriptions, connection bindings, and metadata are channel-owned and rejected in agent.md. The Declarative Reference: Channels lists every type and default.

Custom channels

A local or published plugin may contribute a uniquely named channel. Select that contribution directly; there is no separate implementation override:

channels: [support]

Attach plugin-owned lifecycle exports through the typed hook mapping:

channels:
  photon:
    hooks:
      startTurn: company.photon-start

Provider authors should use Authoring Plugins.

On this page