Small clarification: FediHood is fully a web app, like other Fediverse software (Mastodon, Pleroma, etc.). I reused the work I did on HolosSocial, which already used the Signal Protocol. I'll write a FEP about it, since it works well.
@nunesgh The Signal Protocol (i.e. the encryption itself) is an open, documented spec with open libraries (libsignal). I use the protocol, not Signal's API or servers.
@nunesgh I vendored, not reimplemented. I use npmjs.com/package/@privacyrese…, a pure TS port of libsignal running on Web Crypto. I only wired the sessions and the ActivityPub transport.
@amd I'm following what they're doing, though it works differently: they're going for MLS over ActivityPub, while I use the Signal Protocol. With HolosSocial I already had something working and published, so I just extended it to my other project. Once their approach is available, I even suggested switching to it.
@amd I'm following what they're doing, though it works differently: they're going for MLS over ActivityPub, while I use the Signal Protocol. With HolosSocial I already had something working and published, so I just extended it to my other project. Once their approach is available, I even suggested switching to it.
I saw below that you’re planning an FEP. I’d love to read what you’ve got, once it’s published :)
And yeah @all - we’ve talked about interior with Bonfire and Emissary. One thing at a time.. but that’ll be important once Mastodon joins the party next year.
@SpaceLifeForm In the browser, in IndexedDB (one store per account), kept encrypted with a non-extractable AES-GCM key, and wiped on logout. The server only ever sees public keys and encrypted messages, never private keys.
@SpaceLifeForm It's the Signal Protocol via libsignal, not handmade. Your message reaches the server the moment you send it, so logout never loses it and delivery doesn't depend on your session. The server only holds public keys and ciphertext, held 30 days for pickup. Each message is bound to the sender's identity key, so the recipient can confirm who sent it, verified by a safety number. Logout only wipes local keys, affecting old history on a new device. Key backup is planned.
Fedilab Apps
in reply to Fedilab Apps • • •I'll write a FEP about it, since it works well.
Gabriel H. Nunes
in reply to Fedilab Apps • • •Fedilab Apps
in reply to Gabriel H. Nunes • • •The Signal Protocol (i.e. the encryption itself) is an open, documented spec with open libraries (libsignal). I use the protocol, not Signal's API or servers.
Gabriel H. Nunes
in reply to Fedilab Apps • • •Did you reimplement the protocol or did you vendor libsignal?
Fedilab Apps
in reply to Gabriel H. Nunes • • •I vendored, not reimplemented. I use npmjs.com/package/@privacyrese…, a pure TS port of libsignal running on Web Crypto. I only wired the sessions and the ActivityPub transport.
amd
in reply to Fedilab Apps • • •Fedilab Apps
in reply to amd • • •I'm following what they're doing, though it works differently: they're going for MLS over ActivityPub, while I use the Signal Protocol. With HolosSocial I already had something working and published, so I just extended it to my other project. Once their approach is available, I even suggested switching to it.
Włóczykij
in reply to Fedilab Apps • • •I tried to find more info, but I couldn't.
Fedilab Apps
in reply to Włóczykij • • •I've written several posts recently with the #FediHood tag, you should find all the details there.
Daniel Supernault
in reply to Fedilab Apps • • •Fedilab Apps
in reply to Daniel Supernault • • •@dansup
Unfortunately not, but I am following what is being done :)
toot.fedilab.app/@apps/1170676…
Fedilab Apps
2026-08-09 21:33:11
Ben Pate 🤘🏻
in reply to Fedilab Apps • • •Hey, cool news, and congrats on this development!
I saw below that you’re planning an FEP. I’d love to read what you’ve got, once it’s published :)
And yeah @all - we’ve talked about interior with Bonfire and Emissary. One thing at a time.. but that’ll be important once Mastodon joins the party next year.
SpaceLifeForm
in reply to Fedilab Apps • • •Fedilab Apps
in reply to SpaceLifeForm • • •In the browser, in IndexedDB (one store per account), kept encrypted with a non-extractable AES-GCM key, and wiped on logout. The server only ever sees public keys and encrypted messages, never private keys.
SpaceLifeForm
in reply to Fedilab Apps • • •You have been overcharged for your Koolaid.
It looks like a good idea from the server side on the surface, to not have private keys.
How long do the public keys persist?
How do I know my message will be delivered to the recipient before I logout?
Can the server guarantee delivery?
How will the recipient have authentication that I sent the message?
This design is easily attacked.
Fedilab Apps
in reply to SpaceLifeForm • • •It's the Signal Protocol via libsignal, not handmade. Your message reaches the server the moment you send it, so logout never loses it and delivery doesn't depend on your session. The server only holds public keys and ciphertext, held 30 days for pickup. Each message is bound to the sender's identity key, so the recipient can confirm who sent it, verified by a safety number. Logout only wipes local keys, affecting old history on a new device. Key backup is planned.