Table of contents

Greetings people. In this part of the documentation, you will learn how Jami works from the high level, to the bottom, with some examples. The following part will follow this plan:

  1. [The different APIs](1. The different APIs)

  2. Basic features

    1. [Manage accounts](2.1. Manage Accounts)

    2. [Manage contacts](2.2. Manage contacts)

    3. [Swarm](2.3. Swarm)

    4. [Let’s do a call!](2.4. Let’s do a call)

    5. [File transfer](2.5. File transfer) DEPRECATED cf swarm

    6. Displayed status

  3. Advanced features

    1. Manage audio/videos

    2. Call recording

    3. The push notifications system

    4. What is a DHTProxy

    5. Supporting SIP

    6. Setup your own TURN server

    7. [Plugins](7. Jami plugins)

    8. Sync profiles

  4. Contribute

    1. Build instructions

    2. [Submit your first patch](4.2. Submit your first patch)

    3. [Features Requests](4.3. Features requests)

  5. Group chats in details

    1. Description

    2. [The connection manager](5.2. The connection manager)

    3. DRT

    4. Voting system

    5. [Call in swarms](5.5 Call in Swarms)

  6. Drafts

    1. [Conference Protocol](6.1. Conference Protocol)

    2. [Sync Protocol](6.2. Sync Protocol)


If you read this, you probably want to either contribute to one of the projects or to implement your own client. There is three main layers in this project:

  1. OpenDHT used to do the whole p2p communication. You can interact with this library like any Cpp library or with the python wrapper or via the REST API.

  2. The daemon, which is the main part. It’s the part which does all the logic for Ring and interact with OpenDHT, pjsip, ffmpeg and all libraries used and implement the whole protocol. If you want to do a client, we recommend to use implement your client on top of this daemon and use one of the many APIs (REST/dbus/libwrap/JNI).

  3. The client part, which is basically the frontend.

The following documentation will explain the different uses features for all layers.