Ably's capability model is more flexible than Pusher's - rather than having a fixed private: channel type, you can instead control the capabilities of your channels or sets of channels. These capabilities will specify which operations (such as subscribe or publish) can be performed on which channels.

Have a read of our authentication docs to find out more about channel capabilities.


If you would like to, for example, have users who can only receive, not send, messages to any channels then you could create a namespace called "private" (though it can be called whatever you like), and give them a token with the capability:
{ "private:*" : ['subscribe'] }.


If you have been using the Pusher protocol adapter and want to gradually migrate, note that the Pusher channel private-foo is mapped to the Ably channel private:foo for precisely this reason.

See https://support.ably.io/en/support/solutions/articles/3000055086-using-the-ably-pusher-protocol-adapter for more information on the Pusher protocol adapter.