# Exploring a Hybrid Protocol Stack: Solid + AT Protocol + ActivityPub

**URL:** https://forum.solidproject.org/t/exploring-a-hybrid-protocol-stack-solid-at-protocol-activitypub/8252
**Category:** General Discussion
**Created:** [November 28, 2024, 3:31am UTC](https://forum.solidproject.org/t/exploring-a-hybrid-protocol-stack-solid-at-protocol-activitypub/8252 "2024-11-28T03:31:21Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![rajugeorge](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/rajugeorge/32/3816_2.png) [@rajugeorge](https://forum.solidproject.org/u/rajugeorge)
#### Post date: [November 28, 2024, 3:31am UTC](https://forum.solidproject.org/t/exploring-a-hybrid-protocol-stack-solid-at-protocol-activitypub/8252/1 "2024-11-28T03:31:21Z")

</div>

I’m exploring an experimental architecture that combines components from different decentralized protocols, and I’d love to get your thoughts and learn from anyone who might have attempted something similar.

The core idea is to build a decentralized storage and networking solution with these components:

1. Solid’s Pod architecture as the foundation for personal data storage and access control
2. AT Protocol’s DID-based identity system for user identification
3. ActivityPub’s federation capabilities for cross-node networking and communication

- Has anyone attempted to integrate AT Protocol’s DID system with Solid Pods? What challenges did you face?

- Are there any fundamental incompatibilities between these protocols that I should be aware of?

- How would you approach the authentication flow when combining Solid’s WebID-OIDC with AT Protocol’s identity system?

Please provide your insights on successful integration patterns, architectural pitfalls to avoid, maintaining interoperability, and performance implications when combining these protocols.

---

<div class="post-metadata">

### Author: ![jeswr](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/jeswr/32/3924_2.png) [@jeswr](https://forum.solidproject.org/u/jeswr)
#### Post date: [November 28, 2024, 3:52pm UTC](https://forum.solidproject.org/t/exploring-a-hybrid-protocol-stack-solid-at-protocol-activitypub/8252/2 "2024-11-28T15:52:17Z")

</div>

For Solid + ActivityPub, there is already interesting work being done by the folks working on [ActivityPods](https://activitypods.org/); I suggest you reach out to them using the links provided on their website.

[DIDs](https://www.w3.org/TR/did-core/) are a W3C standard that have a life of their own outside of AT. There have been [many conversations around supporting DIDs in addition to WebIds](https://github.com/solid/specification/issues/217); but I don’t know how much work has been made in this direction.

Indeed, I personally believe that there would be benefit to having a shared specification for authentication across many of these specs; and would help move towards the Solid vision of “Global Single Sign on”.

May I ask, in what context are you doing this experimental development (research, industry, hobby, …) and where are you hoping to take it.

---

<div class="post-metadata">

### Author: ![gaz009](https://avatars.discourse-cdn.com/v4/letter/g/a5b964/32.png) [@gaz009](https://forum.solidproject.org/u/gaz009)
#### Post date: [November 29, 2024, 1:54am UTC](https://forum.solidproject.org/t/exploring-a-hybrid-protocol-stack-solid-at-protocol-activitypub/8252/3 "2024-11-29T01:54:38Z")

</div>

I think one thing holding the integration back is someone attempting to create an OIDC providing service which handles all of the scopes. Solid has the “webid” scope, and probably more in the future. The AT protocol has some custom OAuth2 scoping. DIDs I have less familiarity with but they would probably need some custom logic as well.

---

<div class="post-metadata">

### Author: ![rajugeorge](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/rajugeorge/32/3816_2.png) [@rajugeorge](https://forum.solidproject.org/u/rajugeorge)
#### Post date: [November 29, 2024, 6:41am UTC](https://forum.solidproject.org/t/exploring-a-hybrid-protocol-stack-solid-at-protocol-activitypub/8252/4 "2024-11-29T06:41:38Z")

</div>

> [@jeswr](#):
>
> For Solid + ActivityPub, there is already interesting work being done by the folks working on [ActivityPods](https://activitypods.org/); I suggest you reach out to them using the links provided on their website.
> 
> [DIDs](https://www.w3.org/TR/did-core/) are a W3C standard that have a life of their own outside of AT. There have been [many conversations around supporting DIDs in addition to WebIds](https://github.com/solid/specification/issues/217); but I don’t know how much work has been made in this direction.
> 
> Indeed, I personally believe that there would be benefit to having a shared specification for authentication across many of these specs; and would help move towards the Solid vision of “Global Single Sign on”.
> 
> May I ask, in what context are you doing this experimental development (research, industry, hobby, …) and where are you hoping to take it.

Thanks for sharing those useful resources about ActivityPods and DIDs! I’ll definitely dive into the links and see what the ActivityPods team has been working on.

To give you some context: I’m starting this as a side research project, but it’s linked to a growing professional interest. In my work, I’ve noticed a rising interest in decentralized systems, especially from healthcare and education companies. I explored Solid before, but that effort lost momentum. However, the current excitement around the AT Protocol and ActivityPub has reignited my interest.

Thought to travel this route and see where it takes me .

---

<div class="post-metadata">

### Author: ![rajugeorge](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/rajugeorge/32/3816_2.png) [@rajugeorge](https://forum.solidproject.org/u/rajugeorge)
#### Post date: [November 29, 2024, 6:46am UTC](https://forum.solidproject.org/t/exploring-a-hybrid-protocol-stack-solid-at-protocol-activitypub/8252/5 "2024-11-29T06:46:16Z")

</div>

> [@gaz009](#):
>
> I think one thing holding the integration back is someone attempting to create an OIDC providing service which handles all of the scopes. Solid has the “webid” scope, and probably more in the future. The AT protocol has some custom OAuth2 scoping. DIDs I have less familiarity with but they would probably need some custom logic as well.

Thanks for the pointers.  
I hadn’t fully considered all the complexities involved.

---

<div class="post-metadata">

### Author: ![Dame](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/dame/32/4472_2.png) [@Dame](https://forum.solidproject.org/u/Dame)
#### Post date: [December 4, 2024, 1:42am UTC](https://forum.solidproject.org/t/exploring-a-hybrid-protocol-stack-solid-at-protocol-activitypub/8252/7 "2024-12-04T01:42:35Z")

</div>

Hi,

I think it’s a great idea, fortunately there’s a lot to build on top of. As Jesse shared there’s ActivityPods. I would build upon that.  
Here’s a working example of mapping WebIDs to DIDs:

> <https://github.com/solid/specification/issues/217>
>
> This is a placeholder proposal for the Solid project to support Decentralized Id…entifiers (DIDs), in addition to Web IDs.
> 
> !\[DIDs vs WebIDs\](https://user-images.githubusercontent.com/947005/65088773-9465f400-d988-11e9-8164-dc9b76beeb9c.png)
> 
> Similarities:
> 
> \* Both DIDs and Web IDs are \*\*URIs\*\* (follow the URI RFC), both resolve to a Linked Data document
> \* Both are used as \*\*identifiers\*\* for individual people, organizations, services, and other entities
> \* Both are intended to \*\*store Public Key material\*\*, for uses such as authentication
> \* Both \*\*store links\*\* to documents or API endpoints (such as preferences, OIDC Issuers, etc)
> \* Essentially interoperable
> 
> Differences:
> 
> \* \*\*PII\*\*: In addition to key material and links, Web ID Profiles also contain Personally Identifiable Information (PII) such as User Profile Info (name, email, user picture), or the user's Social Graph (using things like \`foaf:knows\`). DID Documents, on the other hand, are required (due to GDPR pressures and similar) to \_not\_ store any sort of PII, as much as is possible.
> \* \*\*Vocab\*\*: Web ID Profiles use a combination of \`foaf\`, \`solid\` and \`cert\` vocabularies. DID Documents use the \`did\` vocab.
> \* \*\*Key Type Support\*\*: DIDs use the Linked Data Proof and Linked Data Signatures specs, and support a wider array of key types (RSA, Ed25519, Curve25519, Secp256k1, etc) and purposes (authentication, digital signatures, encryption, delegation, capability invocation)
> \* \*\*Storage and Resolution mechanisms\*\*: There are many different DID methods; some of them store their DID Documents on distributed ledgers, some of them on the Web (see the \[\`did:web\` method\](https://github.com/w3c-ccg/did-method-web)), some on IPFS, some on IoT devices, etc.
> \* \*\*W3C Level of Standardization\*\*: The \[DID spec\](https://github.com/w3c/did-core) has been incubated for 3 years in the \[Credentials Community Group\](https://www.w3.org/community/credentials/), and is now an official W3C \[DID Working Group\](https://github.com/w3c/did-core).
> 
> (Inrupt, as well as the Solid community, should join the DID WG!)

the server is over at [GitHub - interop-alliance/life-server: A decentralized personal data framework inspired by MIT's Solid Project](https://github.com/interop-alliance/life-server)  
the DID-specific code is basically at [life-server/src/accounts/dids.js at main · interop-alliance/life-server · GitHub](https://github.com/interop-alliance/life-server/blob/main/src/accounts/dids.js#L33)  
so when an account is created, a did:web DID is generated (with the keypair etc)

Someone discussed ActivityPub over ATProto that you may find interesting [ActivityPub Over ATProto](https://berjon.com/ap-at/)

There’s also this which could be used as middleware as it’s a social protocols translator [GitHub - snarfed/granary: 💬 The social web translator](https://github.com/snarfed/granary)  
The ActivityPods devs have expressed supporting ATProto so if it’s something you’re looking to do I’m sure they’d appreciate it as it would speed up their timeline. They have a Matrix space [You're invited to talk on Matrix](https://matrix.to/#/%23activitypods:matrix.org)

---

<div class="post-metadata">

### Author: ![rajugeorge](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/rajugeorge/32/3816_2.png) [@rajugeorge](https://forum.solidproject.org/u/rajugeorge)
#### Post date: [December 5, 2024, 3:06am UTC](https://forum.solidproject.org/t/exploring-a-hybrid-protocol-stack-solid-at-protocol-activitypub/8252/8 "2024-12-05T03:06:44Z")

</div>

Hey,

That is great info in the direction I was planning to head too.  
Thanks for the links. I will definitely look into this.

---

<div class="post-metadata">

### Author: ![Dame](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/dame/32/4472_2.png) [@Dame](https://forum.solidproject.org/u/Dame)
#### Post date: [April 19, 2025, 9:36pm UTC](https://forum.solidproject.org/t/exploring-a-hybrid-protocol-stack-solid-at-protocol-activitypub/8252/9 "2025-04-19T21:36:10Z")

</div>

Hi,

Was curious if there was any progress on this?
