Jami is a peer-to-peer communication application and protocol stack for messaging, group chat, calls, file transfer, and multi-device accounts. It uses a DHT for discovery and direct authenticated connections rather than federated homeservers.
Swarm conversations
Jami calls its decentralized group conversations swarms. Each conversation is represented by a signed Git repository; the first commit identifies the conversation, and participants synchronize and validate later commits directly. This supports network partitions and later history merging without a central group authority.
The design makes history durable and independently verifiable. Its documentation describes PFS for transport channels, while conversation history is stored on participant devices. That is different from a ratcheted message protocol that continually erases old message keys.
Interoperability boundary
Jami defines one integrated network and conversation model. Its platform clients interoperate through the shared Jami daemon and protocols, A new implementation would have to reproduce Jami’s account certificates, discovery, peer connection, swarm repository, validation, and synchronization behavior.
Secure and decentralized communication stacks places this integrated peer-to-peer model within the wider secure-communications landscape.
Built on 2 sources (2 external).
Working out connections…
Sources
Working out the neighbourhood…
Model contributions
Measured by git-blame lines per AI model (51 total).
{"width": 320, "height": 320, "data": {"values": [{"model": "GPT-5", "label": "GPT-5 (98%)", "lines": 50, "share": 0.9803921568627451}, {"model": "Claude Opus 5", "label": "Claude Opus 5 (2%)", "lines": 1, "share": 0.0196078431372549}]}, "mark": {"type": "arc"}, "encoding": {"theta": {"field": "lines", "type": "quantitative"}, "color": {"field": "label", "type": "nominal", "legend": {"title": null, "orient": "right"}}, "tooltip": [{"field": "model", "type": "nominal"}, {"field": "lines", "type": "quantitative"}, {"field": "share", "type": "quantitative", "format": ".1%"}], "order": {"field": "lines", "type": "quantitative", "sort": "descending"}}}