Overview
Discover what makes Jami powerful
Jami is a peer‑to‑peer communication platform that bundles instant messaging, audio/video calls, group chats, and media streaming into a single self‑hosted stack. From a developer’s standpoint it is an end‑to‑end encrypted, distributed system that eliminates the need for centralized servers. The core of Jami is written in C++ with a Qt‑based UI, while the networking layer leverages libjami, an open‑source library that exposes a clean API for building custom clients or integrating Jami’s communication primitives into other applications. All protocols are compliant with X.509 and provide perfect forward secrecy, making it attractive for privacy‑centric projects.
Core Library
Protocol Stack
Data Persistence
Extension System
Overview
Jami is a peer‑to‑peer communication platform that bundles instant messaging, audio/video calls, group chats, and media streaming into a single self‑hosted stack. From a developer’s standpoint it is an end‑to‑end encrypted, distributed system that eliminates the need for centralized servers. The core of Jami is written in C++ with a Qt‑based UI, while the networking layer leverages libjami, an open‑source library that exposes a clean API for building custom clients or integrating Jami’s communication primitives into other applications. All protocols are compliant with X.509 and provide perfect forward secrecy, making it attractive for privacy‑centric projects.
Architecture
- Core Library:
libjami(C++/Qt) implements the signaling, transport, and media handling. It is built on top of libjami‑core, which in turn uses the PJSIP stack for SIP and WebRTC for media streams. - Protocol Stack: Jami uses its own distributed identity system based on X.509 certificates, with a bootstrap mechanism that relies on the “Rendezvous” protocol to discover peers without centralized servers.
- Data Persistence: SQLite is used for local storage of contacts, chat history, and media metadata. No external database server is required.
- Extension System: The application ships with a plugin architecture that allows developers to write extensions in C++ or JavaScript (via the Qt QML engine). Extensions can hook into events, add UI elements, or expose new protocols.
- Cross‑Platform: The same codebase compiles for Linux, macOS, Windows, Android, and iOS. For mobile devices, the native UI is written in Kotlin/Swift while reusing
libjamifor networking.
Core Capabilities
- Messaging API: Send and receive encrypted text, files, audio/video blobs. The
jami::coreAPI exposes methods likesendMessage,receiveMessage, and event callbacks for delivery status. - Call API: Initiate and manage SIP/WebRTC calls via
jami::call. Developers can control codecs, media streams, and implement custom UI widgets. - Group Management: Create multi‑party chats with group chat rooms that are distributed and self‑contained. The API provides
createGroup,addParticipant, andbroadcastMessage. - Rendezvous & Discovery: A bootstrap service that can be run on a dedicated machine or embedded into an existing infrastructure. It uses a DHT‑like mechanism to resolve peer addresses.
- Webhooks & REST: A minimal HTTP server can be enabled for external automation, exposing endpoints such as
/contacts,/messages, and/calls. This is ideal for integrating Jami into larger orchestration workflows.
Deployment & Infrastructure
Because the system is peer‑to‑peer, there is no need for a central server; however, for large deployments you may run one or more Bootstrap Nodes to accelerate peer discovery. These nodes can be containerized with Docker:
services:
bootstrap:
image: jami/boostrap:latest
Jami can also be deployed behind a reverse proxy if you wish to expose the REST API over HTTPS. The application is lightweight (under 200 MB for binaries) and can run on low‑resource devices, making it suitable for edge deployments or IoT gateways.
Integration & Extensibility
- Plugin SDK: The C++ API allows developers to write plugins that are loaded at runtime. Plugins can expose new UI components, integrate with external databases, or implement custom signaling protocols.
- JavaScript Bridge: Using Qt’s QML engine, extensions can be written in JavaScript, enabling rapid prototyping and web‑style UI changes without recompiling the core.
- External SIP Integration: Jami can act as a SIP client; developers can connect it to PBX systems or VoIP gateways by configuring the SIP transport layer in
jami.conf. - Webhooks: The built‑in webhook system can trigger external services on events such as
onMessageReceivedoronCallEnded, facilitating automation and monitoring.
Developer Experience
The documentation is hosted on the official website and includes a comprehensive API reference, sample code snippets, and tutorials for building extensions. The community is active on GitHub and the Jami mailing list, where contributors discuss protocol improvements and bug fixes. The license (GNU GPLv3+) ensures that any derivative work must remain open source, which aligns with many privacy‑focused projects. Tooling support is strong: the project uses CMake for cross‑platform builds, and continuous integration runs on GitHub Actions.
Use Cases
- Enterprise Private Chat: Companies can deploy Jami on their intranet to provide a fully encrypted messaging and calling solution without relying on cloud providers.
- IoT Device Communication: Edge devices can embed
libjamito exchange telemetry securely and trigger actions via webhooks. - Educational Platforms: Universities can host Jami servers to offer video‑conferencing and collaborative chat for students, ensuring compliance with data‑protection regulations.
- Open‑Source Collaboration: Open‑source projects can use Jami’s group chat and file‑sharing features to coordinate developers worldwide while keeping communication private.
Advantages
- Zero‑Trust Architecture: No central server means no single point of failure or data collection.
- Performance & Scalability: Peer‑to‑peer routing keeps latency low; adding more peers only increases redundancy.
Open SourceReady to get started?
Join the community and start self-hosting Jami today
Related Apps in apis-services
Mastodon
Decentralized, real‑time social networking
Discourse
Open‑source community forum platform with real‑time chat and AI
Rocket.Chat
Secure, open‑source team communication platform
Novu
Unified notification platform for multi‑channel delivery
Mattermost
Secure, self‑hosted team collaboration with chat, voice, and AI
Jitsi Meet
Free, encrypted video conferencing for everyone
Weekly Views
Repository Health
Information
Explore More Apps
dpaste
Self-hosted pastebin for quick code sharing
HOMER 10
Carrier‑grade VoIP & RTC observability platform
ClearFlask
Open‑source feedback and roadmap management
NodeBB
Modern, real‑time community forum platform
Tiledesk
Open‑source, AI‑powered live chat for all channels
HumHub
Modular social intranet for teams and communities
