@julian Have you seen the implementation of private groups in Streams? It is based on the Conversation Containers https://fediversity.site/help/develop/en/Containers
I'll probably use this model in my project.
(There's is comment about it from @mikedev but for some reason it didn't arrive to your server)