Skip to content

Channels

Channels are the ordered top-level structure of a server. They live in channels.json and are loaded into memory at startup. Text, forum, and voice channels are exposed only when the requester can view them; separators are always retained in channels_get for layout.

Type Purpose Type-specific state
text Linear conversation Last message, current user’s last message, slow mode
forum Container for named threads Visible thread list
voice Peer-state coordination Connected users and mute state
separator Visual organization size controls the UI spacing/padding rendered around it; retained even though it has no messages

Every channel has an internal name and can have display_name, description, permissions, max_message_age, and slow-mode cooldown. Names are unique and validated by channelNameError. A separator’s size is a presentation hint: clients use it as the amount of padding or empty space around the separator. max_message_age is stored metadata only in the current server; no cleanup path reads or enforces it.

The public channel serializer overlays the complete default permission set onto any channel overrides. view determines whether a channel is included and whether its live events can be broadcast to a connection. Other actions include send, delete, delete_own, edit, edit_own, react, pin, and create_thread.

Create, update, move, and delete require manage_channels, persist through src/db/channels/management.osl, record an audit event, then call refreshChannels. Clients advertising channel_get can receive a focused refresh when one unchanged-name channel changes; otherwise the server sends a full channels_get list.

See the channel command pages and manage channels guide.