Skip to main content


From the #ActivityPub spec, it seems like servers must know your social graph as an inherent part of the protocol. Is this correct?

I'm writing a privacy-centric social media app that hides your social graph, and I'd like to adapt it to AP but that seems impossible. Possible approaches include:

a) embed an AP server in the client app to do the AP server role (is this realistic?)

b) continue with my own protocol and build a bridge to AP

Any other ideas? All thoughts welcome!

@evan
@cwebber
they need to know your social graph to do the distribution to followers. Is that what you mean?
yeah, that's the question, thanks.
you could do that on the client side, but there are some tricky bits like the HTTP signatures. And handling fanout on a client! It is an interesting challenge, I have to admit.
my app has the client encrypt messages in layers to hide non-adjacent nodes from each other, kinda like Tor but at a higher protocol layer, and with multiple recipients. Replies and reactions to a post have to be routed through the OP's device, which then distributes them to the OP's friends. In this way, the social graph is hidden from servers.
servers do little but pass encrypted messages among themselves and clients.
so, in this case I would probably model the distribution as 1-to-1 messages.
even with 1-to-1 messages, wouldn't the servers on each message's delivery path still know who the recipient is? That can be used to build the social graph of the sender.