Configure the AI Transport channel rule
AI Transport streams tokens by appending to a single Ably channel message. That requires one channel rule on the namespace your conversations live on. This is a one-time configuration per Ably app.
The Message annotations, updates, deletes, and appends channel rule (mutableMessages: true) must be enabled on every channel you use with AI Transport. AI Transport streams each response by appending tokens to a single channel message, and this rule is what allows that.
Channel rules are enabled per namespace, which is the part of a channel name up to the first colon. Enabling the rule on a namespace applies it to every channel in that namespace. Pick a namespace prefix that scopes your conversations away from other channels in the same app, such as conversations: or chat:, and enable the rule on it.
Without the rule, AI Transport fails on the first token append after a stream starts, with error 93002 Can only update/delete/append messages on channels with mutableMessages enabled. See troubleshooting for the symptom-side detail.
Enable the rule
In your app settings:
- Click Add new rule.
- Enter the channel name or namespace on which to enable message updates and deletes.
- Check Message annotations, updates, deletes, and appends.
- Click Create rule to save.
Verify the rule applies to your channel names
The namespace matches by prefix. If your conversations live on channel names like conversations:abc-123, the namespace conversations covers them. A namespace called conversation (singular) does not match conversations:*. Names are matched literally up to the first colon.
The fastest verification is to send one user message through AI Transport and check the agent's logs for 93002. If no 93002 appears and the first token streams through, the rule is applied correctly.
Read next
- Set up authentication: the auth setup AI Transport needs alongside the channel rule.
- Troubleshooting: namespace not configured: the symptom-side detail.
- Core SDK getting started: build a chat app once the namespace is configured.