<![CDATA[Jami]]>https://jami.net/https://jami.net/favicon.pngJamihttps://jami.net/Ghost 4.48Thu, 12 Nov 2026 22:33:06 GMT60<![CDATA[Jami Web - First Preview Now Available!]]>
🌐
Jami, now available at your local(host) browser!

The Jami Team is excited to announce the first preview of our newest client - Jami Web. It's the same Jami you all know and love, but this time, it's in your web browser!

Jami Web in
]]>
https://jami.net/jami-web-preview-1/6a7b7437a44a7103db452c25Tue, 01 Sep 2026 20:28:42 GMT
🌐
Jami, now available at your local(host) browser!
Jami Web - First Preview Now Available!

The Jami Team is excited to announce the first preview of our newest client - Jami Web. It's the same Jami you all know and love, but this time, it's in your web browser!

Jami Web - First Preview Now Available!
Jami Web in all its glory 💫️

⬇️ Installing Jami Web

Installing Jami Web is incredibly simple; the only requirement is that you have Node.js installed on your system. Then you can run the following:

npm install @savoirfairelinux/jami-web

⚙️ Setting Up Jami Web

Before running Jami Web, you'll need to configure the server's administrator password and some basic items such as the nameserver.

npx jami-web setup
Jami Web - First Preview Now Available!
Setting up the server with default values

🏃 Running Jami Web

Once you've gone through the initial setup, you can start Jami Web by running the following:

npx jami-web

You should see a line in the output saying where you can access the UI (usually http://localhost:8080).

Jami Web - First Preview Now Available!
The Jami Web login page (apologies dark mode evangelists) ☀️

If you want to use an existing account from another device, click the Connect from another device button to initiate the device-linking process.

🛡️ Administration

One of the cool things about Jami Web is the ability to administer the Jami Web server from the administrator panel. Some settings may appear familiar to you (if you've used our current desktop client), while others are brand new. We'll fill you in on the new ones below 👇️.

Q: Can an administrator see my account activity (such as my conversations)? 😰️
A: Administrators can see account activity; however, if you are running jami-web solely on your machine then there is nothing to worry about!
  • 👨🏻‍💼 Account Management: Manage all the accounts associated with the Jami Web server, irrespective of the authentication method. Administrators can add and delete accounts as well as reset an account's password.
  • 🔒️ OpenID Authentication: Allows users to associate an OAuth identity with a Jami account and log in using that identity. Jami Web currently supports Google, GitHub, GitLab, Discord and LinkedIn, provided that the administrator configures and activates the provider.
  • 🥷️ Guest Accounts: These are ephemeral Jami accounts; users will not need to provide credentials.

Ready to Try Jami-Web?

Have an issue with Jami-Web?

contact@jami.net

Our donation campaign

Building Jami is not only about writing code. It also means funding engineering time, testing, support, packaging, and the ability to keep the project independent.

If Jami is useful to you, whether every day or as a reliable alternative when you need it, your donation directly helps maintain this level of quality and accelerate development, without compromising the project’s founding principles.

Jami Web - First Preview Now Available! Donate to Jami


Article by: Ilyas Erdogan (Jami Team)

Feature Image by: Jami Team

]]>
<![CDATA[Feature Drop: OpenClaw Plugin]]>
🦀
Pincers out - you can now control your OpenClaw agents directly in peer-to-peer with Jami!
💲️Configuring the Jami channel in OpenClaw

There's a chance you've heard of OpenClaw - a tool to control AI agents on your computer. OpenClaw allows you to run

]]>
https://jami.net/jami-openclaw/6a42a6f75d13beb35cd46573Wed, 22 Jul 2026 14:40:00 GMT
🦀
Pincers out - you can now control your OpenClaw agents directly in peer-to-peer with Jami!
Feature Drop: OpenClaw Plugin
💲️Configuring the Jami channel in OpenClaw
Feature Drop: OpenClaw Plugin

There's a chance you've heard of OpenClaw - a tool to control AI agents on your computer. OpenClaw allows you to run cloud and local models, and lets you control AI agents remotely from your phone ! It does this by connecting third-party messaging servers (such as those from WhatsApp and iMessage) to an OpenClaw instance.

But what if you don't want to depend on these third-parties? This is where Jami comes in. As a distributed and peer-to-peer communication platform, Jami allows users to communicate directly over the network, no third-party servers involved. It can even work on a local network!

Do you need to bring some claw-and-order to your life? Setting up bots on Jami with our OpenClaw plugin is easy, so grab your claw-fee and keep reading!

What is a Bot Account in Jami?

A bot account is a Jami account designed to be controlled by external applications or scripts via an API token. A bot account's profile has markers identifying it as a bot and the account controlling it.

API access and bot accounts are currently supported on Jami for desktop (available on Linux, macOS and Windows).

🔌 Installing the Jami OpenClaw Plugin

✅️ Prerequisite: you must have OpenClaw installed on your system before proceeding! You can follow installation instructions here.

Installing the OpenClaw channel plugin for Jami is shell-shockingly simple. All one needs to do is run the following command in their terminal👇️

$ openclaw plugins install @savoirfairelinux/jami-openclaw

If you want to take a look at the code of the plugin you can check out the plugin's repository here.

🤖️ Creating a Bot Account in Jami

To create a bot account you'll need to navigate to the App Access page in Jami's settings first. You can then click the Create Bot button to start the bot creation wizard 🧙‍♂️️, and (optionally) choose a profile name for your bot.

🪙 Your Bot's Token

After customizing your bot's profile, you will be presented with its token (such as the one seen below). Make sure you copy it and keep it somewhere safe, it'll only be shown to you once!

Feature Drop: OpenClaw Plugin
Be like Gollum from The Hobbit, make sure no one steals your precious (Jami token)! 💍
⚠️ Never share your bot's token to anyone!

Once you've created your bot, you can add it as a contact in you Jami account.

⚙️ Configuring the OpenClaw Plugin

Configuring the Jami channel in OpenClaw is easy thanks to the config wizard we've implemented.

☝️The Jami OpenClaw plugin currently only supports one channel per OpenClaw config!
  1. Run openclaw config
  2. When asked what you want to configure, select Channels
  3. Using the down arrow key (⬇️), scroll down the channel list until you reach Jami
  4. Enter the server URL (you can usually leave this as the default http://localhost:8080 value. Just make sure that the port value matches the one you've set in Jami (see Settings → General → System → Local API Server → Server Port)
  5. Enter the Jami API token of your bot account (you know, the one you've intelligently and safely stored somewhere)
  6. You'll be shown the channel list, select finished.
  7. You can them modify the DM access policy if you wish. See the description provided

💬️ Talking to Your Bot

You might be thinking: "I've done all this configuring, but how do I actually talk to my bot".

If you recall from the beginning of this blog post, in the What is a Bot Account in Jami? We mentioned that is the same as any other Jami account. All you need to do is search for your bot's JamiID (which you can copy from the App Access page) and add it as a contact! Shortly after, the contact will be auto-accepted (by the OpenClaw plugin) so give it a few seconds.

🛠️ Troubleshooting: if your bot doesn't auto-accept your invitation, you may need to restart the OpenClaw gateway by running openclaw gateway restart!
Feature Drop: OpenClaw Plugin
🤝️An sample chat between our bot and our own account

🎉️ It's time to shell-ebrate, you've just setup you're first (and hopefully not last) bot on Jami!

Ready to Try Jami-OpenClaw?

Have an issue with Jami-OpenClaw?

contact@jami.net

Our donation campaign

Building Jami is not only about writing code. It also means funding engineering time, testing, support, packaging, and the ability to keep the project independent.

If Jami is useful to you, whether every day or as a reliable alternative when you need it, your donation directly helps maintain this level of quality and accelerate development, without compromising the project’s founding principles.


Article by: Ilyas Erdogan (Jami Team)

Feature Image: Still Life with a Lobster by Jan Davidsz. de Heem

]]>
<![CDATA[Feature Drop: Picture-in-Picture]]>
🖼️
A new feature for Jami on desktop - picture-in-picture - just dropped!

Have you ever been mid-call with one of your friends on Jami and wanted to do something else while still retaining the image of their delightful face? Or maybe you're screen sharing a spreadsheet

]]>
https://jami.net/picture-in-picture/6a17049b0c236d03c9202e51Tue, 23 Jun 2026 16:49:00 GMT
🖼️
A new feature for Jami on desktop - picture-in-picture - just dropped!
Feature Drop: Picture-in-Picture

Have you ever been mid-call with one of your friends on Jami and wanted to do something else while still retaining the image of their delightful face? Or maybe you're screen sharing a spreadsheet during the company-wide meeting, and want to see your boss' reaction when you mention you're up fifty thousand dollars. With picture-in-picutre (PiP), either of these situations can now become a reality!

❓How do I Use PiP?

Using PiP requires you to be in an active call, so get yourself in one. Hit up one of your friends, or ping your colleagues at work to start a conference.

Once you've entered the call, there are two ways to activate the PiP window:

  1. Minimize the Jami window.
  2. Manually activate the PiP window (see highlighted button in the screenshot below)
❗ Note that if your Jami window is too small, the PiP button (along with a ton of other useful functions) will be hidden behind a show more button (⋮).
Feature Drop: Picture-in-Picture
The PiP button can be found when you hover over an active call 📞

Result

Once you activate PiP using either of the two methods specified above, you'll see a small window popup with your peer's video. Say hi 👋!

Feature Drop: Picture-in-Picture
Spreadsheets are always more fun with friends! 🧮

👥 PiP in Conferences

There are two additional features the come with PiP when you use it in a conference.

❓ What does Jami consider a conference?
💡 A call in Jami is considered a conference if it contains more than two members!

🗣️ Active Speaker

If you've already activated PiP in a conference, you may have noticed that the participant you're shown changes sporadically. For a better user experience we've decided to show you the participant who spoke most recently. Don't worry, you won't have to stare at Bob (that teammate you've been avoiding at the office) for the entire duration of the call 😉.

✋Raising Hand

Sometimes you just need to know why HR won't let you bring your famous poutine to the company BBQ. You're a polite person, so you wait your turn to speak by doing what? Raising your hand of course!

Feature Drop: Picture-in-Picture
Raise your hand, without actually raising your hand! ✋

To raise your hand in a conference while using PiP, simply press the hand icon as seen above to let it be known that you have a question/comment. The button will surround itself in blue to left you know your hand-raise is active!

❌ Closing PiP

From the PiP Window

There are two ways to close the PiP window from the window itself with both performing different actions. Note that neither of these methods will end the call!

↖️ Popping-in

Press the pop-in button in the top-left corner (top-right corner on macOS). This will automatically open up Jami for you and navigate to the active call.

❌ Closing the Window

Press the close window button in the top-right corner (top-left corner on macOS). This will simply close the PiP window without re-opening Jami.

From a Conversation

To pop-in the PiP window with Jami open, simply press the large, green Return to Call button next to the contact/group photo.

Feature Drop: Picture-in-Picture
The return to call button, shown in green 🟢️

📱 What About My Portable Devices?!

PiP is already available for Android and iOS/iPadOS devices, but you knew that already, didn't you 👀?

Ready to Try Picture-in-Picture?

Have an Issue with PIP?

contact@jami.net

Our donation campaign

Building Jami is not only about writing code. It also means funding engineering time, testing, support, packaging, and the ability to keep the project independent.

If Jami is useful to you, whether every day or as a reliable alternative when you need it, your donation directly helps maintain this level of quality and accelerate development, without compromising the project’s founding principles.


Article by: Ilyas Erdogan (Jami Team)

Feature Image: The Gallery of Cornelis van der Geest by Willem van Haecht

Background Images for PiP Windows by Vitaly Gariev on Unsplash

]]>
<![CDATA[Feature Drop: Shared Services]]>
🪐
Come find out about the new shared services feature in Jami, and how to use it!

Are you tired of spending money on storage services just to share a couple of photos to your loved ones? Are you starting to lose track of all the alternate e-mail accounts you&

]]>
https://jami.net/shared-services/6a2199aa0c236d03c9203143Tue, 16 Jun 2026 16:57:00 GMT
🪐
Come find out about the new shared services feature in Jami, and how to use it!
Feature Drop: Shared Services

Are you tired of spending money on storage services just to share a couple of photos to your loved ones? Are you starting to lose track of all the alternate e-mail accounts you've made signing up for those free trials? Do you miss the early days of MySpace and Tumblr, when you got to show of your HTML and CSS skills? What if we told you that Jami could address all these problems, using the same feature?

🤔 What Is a Shared Service?

In practice, a shared service allows you to share any TCP network service (like a web server, game, etc.) with your contacts through Jami! It can also manage an embedded web server as needed to easily share simple websites or directories.

🤝 Accessing Your Contacts' Services

Accessing shared services exposed by your contacts is easy, but varies depending on the platform with limitations applying to each one.

❗Remember, accessing a shared service requires your contact to be online!
  1. Select one of your contacts
  2. Select the planet icon next to the call button (it's hard to miss it)
  3. A list will popup of your contact's shared services, simply click one of them to connect to it.
Q: Why don't I see the planet icon? 😔
A: Your contact is likely not sharing any services (that you know of 😉)!

🖥️ Desktop

On desktop, if the service is accessible from a web browser, then you will be prompted to exit Jami and taken to your default browser. Otherwise the service's link will be copied to your clipboard.

Feature Drop: Shared Services
Access those photos of your side quest to the Olympic stadium as fast as Usain Bolt in '09 ⚡

🤖 Android

Just as it would be on desktop, selecting a web-accessible shared service on the Android version of Jami will open the service in your default browser. Otherwise the link to the service will be copied.

Feature Drop: Shared Services
Old port might not be new, but Johnny's Android device sure is! ✨️

🍎 iOS

On iOS, selecting a shared service will open an integrated browser inside Jami. Note that the planet icon varies slighlty than that of the desktop and Android versions.

⚠️ Custom (non-web) shared services are inaccessible from Jami on iOS/iPadOS capable devices due to operating system restrictions.
Feature Drop: Shared Services
That metro station looks awfully familiar...🤔️

🎨 Creating a Shared Service

Creating a shared service in Jami is a simple process, and we invite you to follow along by reading the steps below.

⚠️ Creating shared services is currently only available on desktop!

Navigate to Settings → Account → Shared services.

📁 Sharing a Directory

In the shared services settings page, select 🌐 Add Website

0:00
/
So few clicks that your hands will fall asleep at the scroll wheel 💤

🌐 Sharing a Custom Website

❬/❭ Only proceed with the following if you feel comfortable with basic HTML and CSS!

In the shared services settings page, select 🌐 Add Website and select a directory. In the directory you've chosen to share, you will need to create an index.html file in its root. You are free to add any other HTML and/or CSS files to your liking. Note that your contacts will always land on the index.html page every time they connect to your services.

Your friends will be able to access your website as previously described, but if you're a good designer, they'll have a much more pleasant time looking at it. See an example of a customized website below 🌟 .

Feature Drop: Shared Services
Looks like Simon and Johnny covered some decent ground! 📸️

🕵🏼‍♂️ Limiting Visibility

Sometimes you don't want everyone to see everything. This is why Jami allows you to select from one of three options of visibility when sharing a service.

  • 📒 Contacts: The default visibility. Any contacts that you've confirmed can see the service
  • 🌍 Anyone (public): Anyone using Jami can see the service, even those who haven't added you
  • 🔒 Specific contacts only: Only specific contacts that you pick from your list of existing contacts can see the service

You can set or modify the visibility of a shared service in the configuration dialog as shown below. You will need to set the Accessible by option to one of the three options above. Should you select specific contacts only, you will then need to add/remove the contacts using the chips in the dialog.

0:00
/
I wouldn't want anyone else to see my photos either! 🙈️

🛠️ Sharing a Custom Service

Jami allows sharing any TCP service with your contacts, not just web pages!

In the shared services settings page, select 🔧 Custom service and configure the service to your liking

⛏️ Demo: Sharing a Minecraft Server on Jami

For this example, we will be hosting and sharing a Minecraft server between two contacts.

0:00
/
Hopefully those two punching each other was justified... 😳

👨‍🏫 Detailed Setup Instructions

  1. Create a dedicated folder on your machine for your Minecraft server. For the sake of this demo, we will name the folder MC Server.
  2. Download the official server.jar file from the Minecraft website and move it to the MC Server folder.
  3. Run the server.jar file you downloaded in Step 1. Windows users can perform the traditional double-click to run. MacOS and Linux users can run the following command in the directory containing their server.jar file:
    java -Xmx4G -Xms4G -jar server.jar nogui
  4. Once you've ran the server.jar file, you'll see the MC Server get populated with some additional files. Of these additional files, you will need to modify two.
    1. eula.txt: You will need to set the eula value to TRUE in this file. Make sure you actually read the EULA prior to agreeing to it!
    2. server.properties: Use this file to configure your Minecraft server to your liking. You may or may not need to modify the following property:
      1. Set the server-port for your server. You can usually leave this at the default value of 25565 provided that it's not already in use.
  5. Save the files you just modified and rerun the server the same way you did in Step 3. The server is ready once you see the message Done (XXXs)!.
  6. Add a custom service to Jami. Make sure to populate the Local port fields with the same value you set for server-port. Just like sharing a directory or website, you can also control access to service. Once you're ready, hit save.
Feature Drop: Shared Services
An example configuration for sharing the custom Minecraft server on Jami 📝️
  1. Make sure you can join the minecraft server yourself before letting your friends know to join it! Inside Minecraft, navigate to Multiplayer → Direct Connection and enter server-ip:server-port into the Server Address field and hit connect.

    If all is well, then you should have successfully joined the server and seen the following message in your server log USERNAME joined the game.
  2. Now that you've confirmed your Miencraft server is in fact alive and well, you can now let your contacts know to join the server
    1. Your contact must open up your shared services list and connect to your Minecraft Server service.
    2. The IP will automatically be connected to their clipboards. They must simply paste the copied contents in the Server Address field in their own Minecraft instances.

Ready to Try Shared Services?

Have an Issue with Shared Services?

contact@jami.net

Our donation campaign

Building Jami is not only about writing code. It also means funding engineering time, testing, support, packaging, and the ability to keep the project independent.

If Jami is useful to you, whether every day or as a reliable alternative when you need it, your donation directly helps maintain this level of quality and accelerate development, without compromising the project’s founding principles.


Credits

Article by Ilyas Erdogan (Jami Team)

Feature image: Village Lawyer painted by Pieter Brueghel the Younger

]]>
<![CDATA[Meet the Latest Version of Jami - Euclid]]>
❗
Today, the Jami team is releasing a new version: Euclid

📚 A Brief on Euclid

The name Euclid refers to the Greek mathematician Euclid of Alexandria. Known for having established the foundations of geometry, he is often referred to as the father of geometry. As you read this post

]]>
https://jami.net/euclid/69c2d6c89b355c03d5f8f36cWed, 01 Apr 2026 20:48:26 GMT
❗
Today, the Jami team is releasing a new version: Euclid

📚 A Brief on Euclid

Meet the Latest Version of Jami - Euclid

The name Euclid refers to the Greek mathematician Euclid of Alexandria. Known for having established the foundations of geometry, he is often referred to as the father of geometry. As you read this post about the latest version of Jami, you'll soon understand why we chose Euclid for this release.

✨ So, what's new?

🖼️ New User Interface (UI)

We've made a lot of changes to Jami's UI. The most noticeable differences you'll catch moving forward are the rounded corners (they're everywhere). We'll unpack the significant changes below, but we'll leave the rest for you to discover on your own 😉.

🪪 Jami Identifier

If you're opening Jami for the first time in a while, a particular item may have caught your eye: the Jami ID logo. It's been redesigned to better match our new UI.

Meet the Latest Version of Jami - Euclid
The new Jami ID logo and bar. Aren't they lovely?

⚙️ Account Management

As you first opened Jami, you may have thought: "Oh no! where have my accounts gone 😢". Not to worry, simply direct your eyes to the bottom-left corner and you'll find that it never left. Since Jami is a communications app, we decided that your conversations should be the first thing you see.

*️⃣ Telephone Input Panel

0:00
/
The telephone keypad panel for SIP accounts

For SIP users of Jami: you asked, and we listened. You now have access to a keypad when adding contacts. No longer will you need to guess if that customer service line using the mnemonic HELP starts with a four or five! The telephone panel can be revealed by clicking the keypad button next to the search bar.

💬 Conversation View

Meet the Latest Version of Jami - Euclid
The updated conversation view

The conversation view has gotten a noticeable update. We've reworked the message and contact bars to be more uniform with the new UI. The background of your conversation will now follow a tinted version of the conversation's colour. Not only that, but the colours will fade as you switch conversations.

0:00
/
Smooth like butter (or margarine, whichever you prefer...)

Finally, a tiny yet important detail is that your contact's fingerprint is now shown in a monospace font.

☰ Details Panel

The details pane for conversations has recently gotten some love, particularly for swarms (Jami's version of groupchats).

Meet the Latest Version of Jami - Euclid
I wonder what Artem did to get banned 🤔

We've converted the members lists into a slighlty more digestlible grid. It now provides you some additional visual cues for the states of each member. As administrator of a group, you get a flashy golden crown right above your profile. If a Jamer you've invited hasn't yet accepted their invitation to the swarm, they'll have an envelope above their profile to indicate that. Finally, if you've blocked anyone from the groupchat (such as Artem in the photo above), that too will be shown using the blocked icon.

❗ Remember, any active member of a swarm can see these details, but only the administrator of a swarm can block users.

↔️ Better right-to-left (RTL) support

We've improved the user experience for Jamers that use the app in RTL languages.

Users who prefer to navigate their devices in an RTL language (such as Arabic, Farsi, Hebrew, etc.) should find the application easier to get around.

⚙️ Jami will use your system language by default, but if you'd prefer to use the app in a different language, you can do so by navigating to Settings > General > System > User interface language
Meet the Latest Version of Jami - Euclid

A small yet particularly important touch we've introduced is directionally responsive icons. Icons such as those that imply direction or inquiry will mirror (when applicable) in RTL mode.

🌍 You may have noticed some contents in the photo above were untranslated. Translation of Jami is primarily community-driven. If translation is something you take interest in, we offer you to read our blog post on contributing translations for Jami!

🚹 Improved Accessibility

⌨️ Navigation

We've fixed some important navigation bugs in Euclid. Jami has never been more accessible! Whether you're switching accounts, changing conversations, researching messages, or snapping a new profile pic, you'll find that you can now do it with ease using nothing but your keyboard if you require/prefer it. Farewell computer mouse!

0:00
/
Look mom, no hands!
⌨️ Looking for a full list of keyboard shortcuts to help you navigate Jami? You can find it by clicking the keyboard shortcuts in the bottom-right corner of the Jami welcome page.

👁️ Screen Reading

All of the new and redesigned UI components that we've introduced by Euclid have been designed in an accessibility forward manner. The majority of the UI components include updated accessibility roles, names, and descriptions (where applicable) making it easier for Jamers that rely on screen readers to navigate the application.


🍎 Native Tahoe Integration

For our Jamers that daily-drive macOS, we've gone the extra mile to make refine their user experience. Curious? Take a look below:

Users running macOS 26 (Tahoe) will notice the smooth, rounded corners of the application window itself. The intention is to provide visual uniformity with other applications in mac desktop environment.

🧑‍💻 Behind the Scenes

If you're a developer (or maybe just a technically-inclined reader), you might want to know what changes have been made behind the scenes. Here's what's changed and improved:

  • Qt 6.10: Jami now runs on Qt 6.10 (previously 6.8)
  • C++20: We've upgraded some of Jami's dependencies (such as DHTNet, OpenDHT, and more) to C++20
  • Video quality: Noticeable improvements have been improved on the mobile side. On iOS in particular, encoding could reach up to 120 frames per second, causing performance issues. We've stabilized this in Euclid by cutting it down to a more acceptable 30 frames per second.
  • Connection drops: Fixes have been made for a problem concerning premature connection drops, resulting in interruptions during large file transfers.

For a extensive and detailed list of all changes, please see our changelog.

Ready to Experience the New Jami?


Our donation campaign

Building Jami is not only about writing code. It also means funding engineering time, testing, support, packaging, and the ability to keep the project independent.

If Jami is useful to you, whether every day or as a reliable alternative when you need it, your donation directly helps maintain this level of quality and accelerate development, without compromising the project’s founding principles.


Credits

Article by Ilyas Erdogan (Jami Team)

Feature image: Illusration by Jean-Pol GRANDMONT (Original artwork: The School of Athens painted by Raphael)

]]>
<![CDATA[Dev update #15]]>https://jami.net/dev-update-15/693107b8f645e925846ba547Mon, 15 Dec 2025 11:10:25 GMTDev update #15

Since the release of Atlas: Jami’s biggest step toward reliable communication, work hasn’t slowed down. On the contrary: the past few months have been about tightening the bolts, cleaning up edge cases, and making day-to-day use more predictable and reliable.

For this fifteenth edition, we’re bringing you: more control over 1:1 conversations, more accurate presence indicators, sturdier group calls, improved security on macOS, and a touch of extra customization on Desktop.

Every update makes your Jami experience a little more robust.

🔧 CORE

1:1 conversations, clean up without losing contacts

You can now delete a 1:1 conversation without removing the associated contact.

This gives you more control over your history: you can clear a thread that’s no longer relevant, keep your address book intact, and avoid the awkward “I deleted you by mistake” moment.

While implementing this, we uncovered and fixed several synchronization issues between contacts and conversations. Those fixes help keep your conversations list more consistent across devices when you modify or remove histories.

Presence indicator: green really means “online”

The presence indicator (the green/orange dot showing whether a contact is connected) was sometimes out of sync with reality. In a peer-to-peer system, presence is already a subtle thing; an unreliable indicator doesn’t help.

We’ve fixed this bug that could cause this status to be wrong in some cases. You should now see a presence state that better reflects what’s actually happening on the network.

Group calls: steady improvements after Atlas

Group calls remain one of the main focuses since Atlas. We’ve merged a series of commits in the daemon to make multi-party communication more resilient and less fragile in tricky conditions.

This includes several improvements such as:

Many of these changes target edge cases: unstable networks, participants joining and leaving rapidly, or complex device setups. You may not see them directly, but you should feel them during longer, more complex calls. And there’s more to come in the next iterations.

Fewer crashes, fewer deadlocks

We’ve identified and fixed various crashes and deadlocks in the daemon. These are the kind of bugs that might show up only in specific sequences of events, but when they do, they completely block your experience.

Each one removed is one less reason for Jami to freeze or quit unexpectedly.

🖥️ DESKTOP

macOS: App Sandbox for jami.net builds

On macOS, Jami has long used the App Sandbox, a security mechanism that isolates applications from the rest of the system, for the version distributed through the App Store.

However, the version downloaded directly from jami.net did not benefit from this protection. That’s now fixed: thanks to this change in the Qt client, the jami.net macOS builds now also run inside the App Sandbox.

What this means for you:

  • better isolation of Jami from the rest of your system,
  • a reduced attack surface,
  • a more consistent security level between App Store and jami.net versions.

If you prefer installing from the website, you now get the same security benefits without changing your habits.

Qt Desktop: a customizable home background

On the Desktop (Qt) client, you can now change the background image on the home screen, a feature requested and tracked in this GitLab issue.

This allows you to:

  • align Jami with your organization’s visual identity,
  • distinguish between different environments (work, personal, community),
  • or simply make the app feel more like your own space.

Small touches like this don’t change the core protocol, but they do change how it feels to open Jami every day.

Supporting Jami: why donations matter

We are already working on the next set of changes, with the same goal in mind: to make Jami a tool you can rely on at all times. But to support these improvements, we need your help.

Jami is free software: no ads, no tracking, no data sold to third parties, and no central server owned by a company that monetizes your communications.But this philosophy comes at a cost: building maintaining that kind of infrastructure, and testing a peer-to-peer communication platform requires time, resources, and a dedicated team is not free.

If you can, please support the project with a donation to fund ongoing development, increase testing and optimization on all platforms, and strengthen a truly free and privacy-respecting alternative.


Thank you for your support.

]]>
<![CDATA[Jami and the GNU/Linux spirit]]>https://jami.net/jami-and-the-gnu-linux-spirit/68d35d7ae81aaf27796ce37eFri, 28 Nov 2025 04:03:34 GMTJami and the GNU/Linux spirit

The free software movement shaped by GNU/Linux reminds us that control over our digital tools is essential to our freedom. Today, at the heart of this ongoing struggle, Jami embodies this philosophy by offering a genuinely free way to communicate. Fully distributed, end-to-end encrypted, and ad-free, Jami carries forward the spirit of the early free-software pioneers who fought to give users real autonomy.

A legacy in struggle

When the GNU project emerged in the early 1980s, it wasn’t just about writing code. It laid the foundations of a political and philosophical movement built on four core freedoms: to use, study, share, and modify software. A few years later, the rise of Linux transformed this vision into a global ecosystem open, transparent, and collectively shaped by millions of contributors.

Jami and the GNU/Linux spirit

Forty years later, this legacy lives on, but it is threatened by centralization and mass surveillance. That's where Jami comes in. Like Linux in its day, Jami is not just a technological alternative. It is a project that reminds us that digital freedom cannot be taken for granted: it must be defended, strengthened, and supported.

Free software: a philosophy that is still relevant today

The success of free software is based on a simple idea: software should never be a black box that controls its users. Yet even today, most consumer communication tools are closed and opaque. Users cannot verify their actual security or ensure that their data is not being resold.

Jami and the GNU/Linux spirit

With Jami, we find the very essence of free software:

  • Transparency: the code is open, anyone can audit it.
  • Community: the project is built collectively, like Linux. Users are not just passive customers, but actors who can participate in the development and reliability of the software.
  • Independence: no central server, no “owner” of your exchanges.


This is not just a technical issue. It is a question of fundamental rights: whoever controls our communications controls our collective thinking. This approach reflects the legacy of free software: instead of depending on a company to communicate, we trust each other to build a robust tool.

Jami and the spirit of Linux

Linux has shown that a free project can establish itself as the backbone of the global digital world. From web servers to supercomputers, Linux is everywhere precisely because it is built on an open and decentralized model.

Jami extends this logic to the field of communications by taking a radically different architectural path. Instead of relying on central servers or a single point of control, each user becomes a node within the network. The result is an architecture that is fully distributed: every device communicates directly with its correspondent, without passing through an intermediary.

In practice, this means Jami operates entirely peer-to-peer. Your messages, audio calls, and video calls do not transit through a company-managed cloud or a central infrastructure. Your data stays on your devices, protected by end-to-end encryption and inaccessible to anyone who doesn’t hold the key.

This is exactly what the GNU/Linux community stands for: the idea that users should have complete control over their tools.

Why free software remains necessary today

Some might say, “Free software has already won, Linux is everywhere.” But this can be misleading. Even if Linux powers much of the global infrastructure, the end-user experience remains largely shaped by a handful of digital giants.

Free software remains necessary for three reasons:

  1. Resisting centralization
    Much of our digital life still gravitates around a few dominant platforms. A project like Jami offers an alternative by proposing a model that doesn’t rely on a central authority.
  2. Protecting privacy
    Data has become the black gold of the 21st century. Every conversation, every click is monetized. Free software allows us to escape this logic by offering tools without commercial exploitation of data.
  3. Preserving ethics and sovereignty
    Proprietary tools create dependency. When a platform decides to close an account, an entire business, sometimes a professional life, can collapse, as was the case with the announcement of Skype's closure at the beginning of the year. With Jami, there is no such arbitrariness: sovereignty belongs to the users.

Support a community project today

Like Linux, Jami would not exist without its community. Supporting Jami is not just about funding an application, it is about defending a certain idea of the internet: a common good, not a captive market.

It also means giving a secure tool to those who need it most: journalists, NGOs, activists, and citizens living under restrictive regimes. In situations where certain platforms may be blocked or monitored, a distributed architecture allows Jami to continue operating reliably.

The principle behind free software has always been about freedom, not cost.
Today, this idea matters more than ever. Jami, like GNU/Linux before it, embodies this struggle. The struggle for digital freedom in the face of centralization, surveillance, and the commodification of our lives.

The history of free software teaches us a simple lesson: freedom only survives if it is actively defended. But to continue this fight, the project needs concrete support.

Every contribution, whether technical or financial, feeds an ecosystem that rejects the logic of dependence and surveillance. By supporting Jami, you are defending a legacy, you are choosing a future where technology remains a tool for emancipation, not enslavement. Supporting Jami means affirming that communication must remain a right, not a commodity. It means continuing the legacy of Linux, but also preparing for the future: an internet where every user becomes an actor again, not just a consumer, or worse, a prosumer.

🤝
Join the fight, contribute to Jami's donation campaign, and be part of those who are writing the next chapter in the history of free software.

Thank you for your support.

]]>
<![CDATA[Jami survival kit: Internet down? Keep talking!]]>https://jami.net/jami-survival-kit-your-backup-solution-in-case-of-internet-failure/68780e9f4f5933f14789d78cFri, 31 Oct 2025 21:19:54 GMT

📢
One of Jami’s core features is its ability to function in emergency settings where internet access is severely limited or entirely cut off.

‌In a world of growing instability, climate change is increasingly disrupting essential infrastructure. Extreme weather events (from severe storms and floods to wildfires) regularly damage power grids and communication networks, triggering blackouts that plunge entire communities into darkness and offline.

Even in developed systems, flooded areas can lose power as water knocks out buried lines, and such outages have cascading effects on communications networks and other services.‌‌ During Canada’s record 2024 wildfire season, blazes in the far north destroyed two key fiber-optic cables, causing a “total loss of communications” across vast areas. Residents of the Yukon suddenly found the internet down, mobile phones with no signal, and even landlines dead, cutting off any way to reach emergency services.

‌‌In many regions, recurring power cuts are already a daily reality: in sub-Saharan Africa, 60 to 80% of telecom towers face outages of 8 to 12 hours per day, a situation that disrupts mobile and internet access and deepens the digital divide.

Entire communities have also unexpectedly gone dark from deliberate cyber sabotage, such as the massive attack that knocked over 600,000 routers offline in the US in late 2023, by an unidentified hacking group. The outage left rural communities completely isolated for days, unable to access emergency services, telehealth, or even basic communication. Or such as state-sponsored hackers (Sandworm) in Eastern Europe who targeted power grids and telecoms by infiltrating Ukraine’s electrical grid and triggered a blackout by tripping substation circuit breakers amid a broader military strike. The year before, an audacious cyber-sabotage against satellite operator Viasat knocked offline thousands of satellite modems, disrupting internet access far beyond Ukraine and even disabling remote control of 5,800 wind turbines in Germany.

Such real-world cases underscore a growing threat: ransomware gangs, DDoS attackers, and infrastructure saboteurs are increasingly capable of silencing whole towns or countries by crippling the systems we rely on. Whether through digital means or physical sabotage, these attacks illustrate the modern vulnerability of civil infrastructure. Power grids, internet backbones, and phone networks, all the connective tissue of daily life, have become targets for those looking to wreak havoc. And when they succeed, the result is often entire communities knocked offline, businesses paralyzed, and citizens unable to call for help.

In this context, preserving the ability to communicate is crucial. This is the challenge the Jami Survival Kit aims to address: ensuring that when the internet is down, we can still stay connected and communicate, no matter what.

Please note, however, that due to Apple's design choices, which we will address later, this feature is currently not possible on iOS.

How can Jami work without internet while using the internet ?

💡
It’s all thanks to Jami’s distributed architecture.

‌Unlike traditional messaging apps that rely on central servers to relay messages, Jami connects users peer to peer. This means each device acts as a node in a decentralized web, sending encrypted data directly to others, without any intermediary.

As we explained in our article How does Jami work on mobile without a server?, Jami doesn’t depend on a central entity to transfer information. Instead, it’s as if each device forms part of a living network, capable of communicating as long as it finds another reachable node.

The internet is a global infrastructure, but it can sometimes be segmented. For example, a state can cut access to the world wide web. In such cases, even though users may lose access to online services, their devices can still maintain local or direct connections.

Most messaging apps become unusable during such blackouts because they need access to a central server. Jami, on the other hand, can rely on its distributed architecture.

What happens during an internet outage?

There are two main scenarios in which Jami remains functional:

  1. Local network (LAN): You can communicate with people who are on the same local infrastructure, such as your home Wi-Fi, a shared hotspot or the network of a University.
  2. Beyond the local network: During an outage, most messaging apps are down because their server is unreachable. Jami can allow you to connect in a cut off region. Additionally, if at least one device can reach the broader internet and connect to other nodes, it can relay messages across the entire network.

🔧
Let’s now look at the steps common to both scenarios...

1. Name Lookup 🔍

When the internet is inaccessible, Jami’s name server cannot be reached, which means searching for contacts by username won’t work. Instead, you’ll need to use the raw Jami ID, a 40-character string that uniquely identifies each user.

📌 Where to find your Jami ID:

  • Desktop: Go to Account Settings → Your Jami ID
Jami survival kit: Internet down? Keep talking!

  • Android: Open your account profile to find the Jami ID displayed under your name
Jami survival kit: Internet down? Keep talking!

Once you have someone’s Jami ID, you can add them as you would with a username.‌‌🔁 Pro tip: Add your key contacts in advance and assign display names to make navigation easier when you’re offline.

2.  Mobile Notifications Without Apple or Google 📱

Push notifications on mobile usually depend on servers from Apple or Google. But during a shutdown, these servers may be unreachable. Here’s how Jami handles it:

  • iOS: Unfortunately, due to Apple’s limitations, there is no alternative. Notifications won’t work without Apple’s push service.
  • iOS: notifications won’t work without Apple’s push service. In addition, it’s important to disable notifications manually on iOS when relying on local connectivity: Settings → Gear icon(top-right)→ Connectivity and Notifications → toggle "Enable notifications" OFF. ‌‌Keeping the app in the foreground is required for local discovery and connectivity to work; when the app is closed or backgrounded, iOS suspends the needed processes and local communication stops.

‌

  • Android: You can switch the app to Local DHT node mode to bypass Google servers.

To enable it: Go to Settings → Connectivity → Switch to local DHT node

Jami survival kit: Internet down? Keep talking!

Using Jami on a Local Network (LAN) 🌐

If you're connected to a shared network (like a university, café, or private Wi-Fi) and the global internet is down, you can still talk to others on the same LAN using Jami, as long as multicast is supported.

✅ Steps to activate local discovery:

  1. Open Jami
  2. Go to Account Settings → Advanced Settings
  3. Enable “Local Peer Discovery”
  4. (Optional) Set a custom bootstrap server if you plan to coordinate several devices on the LAN and want faster discovery.

iOS specific note: local connectivity works only while Jami is open in the foreground. Once it is closed or backgrounded, iOS suspends it and local discovery stops.

This will make your device visible to all users connected to the same network.

Jami survival kit: Internet down? Keep talking!

Using Jami Without Internet, Beyond the LAN 🌍

If you want to reach users outside your local network during an internet outage, you'll need to rely on a concept called a bootstrap.

🔗 What is a bootstrap node?

All Jami devices act as nodes in a decentralized web. To enter this web, your device must connect to at least one other node. That first point of contact is called a bootstrap.

Normally, Jami uses a public bootstrap (e.g. bootstrap.jami.net). But if that’s unavailable, someone else can host one and share its IP or hostname with you. In order to host a bootstrap the complete documentation on how to run such a node as a bootstrap can be found here.

🧪 Example: Running a Bootstrap Node with Docker

‌docker run -d -p 4222:4222/udpghcr.io/savoirfairelinux/opendht/opendht-alpine dhtnode -b bootstrap.jami.net -p 4222 -s

🛠️ Once the node is running:

  1. Go to Account Settings → Advanced Settings
  2. Replace the default bootstrap address with the new one
  3. Save and restart Jami.
Jami survival kit: Internet down? Keep talking!

🌐
You should now be able to connect!

Summary Table: Jami Offline Usage Scenarios

ScenarioWhat worksWhat to do
No internet (global shutdown)Peer-to-peer via LAN or custom bootstrapUse Jami IDs; enable Local peer discovery; (Android) switch to Local DHT node
Local network only (e.g., campus)Communicate with nearby usersSettings → gear → Connectivity and Configurations → Enable “Local peer discovery.”
iOS device offlineBasic functions while app is foregroundedDisable notifications (Settings → gear → Connectivity and Notifications); keep app open for local comms
Android device offlineMost functions + manual routingSettings → Connectivity → Local DHT node
Reach beyond the LANGlobal distributed commsSet up or connect to a custom bootstrap node and configure its address

‌

In Conclusion

In troubled times, staying connected is not a luxury. It is a necessity.‌‌It means ensuring safety, coordination, and the ability to call for help, share your location, and reach your loved ones.

When official channels fail, direct communication helps share verified information, document events, and fight misinformation.

It also defends our freedoms. Speaking freely, even under pressure, is essential to support, resist, and rebuild.

Staying connected maintains solidarity and mental well-being. No one should face crisis alone.

And above all, it keeps communities resilient, able to act and organize even in the darkest times.

To communicate is to survive. To communicate is to resist. To communicate is to rebuild.

That is why tools like Jami, which operate without a central server or reliance on tech giants, are essential parts of a digital survival kit.

If you have questions or need help setting things up, don’t hesitate to reach out.


💚
Jami is a non-profit project, made possible thanks to our amazing community of contributors, our volunteer translators, and our generous donors.

Thank you for your support.

]]>
<![CDATA[Manifesto 2025: the freedom to communicate belongs to all of us]]>https://jami.net/manifesto-2025/68dc67ad1a04ae45f86f4295Tue, 07 Oct 2025 02:07:47 GMT

Never has humanity had more tools to speak. Yet communicating freely has rarely been harder. Mass surveillance is expanding, laws that widen intrusive powers are multiplying, and wars redraw the boundaries of what can be said, often making room for censorship.

🕊️  Freedom of communication is a fundamental right that must be defended, now!

A climate of censorship and control, everywhere, now

From war zones to advanced democracies, our communications face growing interruptions, surveillance, and filtering.
In 2024, NGOs recorded 296 internet shutdowns in 54 countries, 47 of which still persisted in early 2025. Shutdowns now routinely accompany elections, protests, and conflicts, notably in India, Bangladesh, Iran, and Myanmar. India alone counted 84 shutdowns in 2024, a record for a democracy.

In armed conflicts, networks become targets. In Ukraine, infrastructure destruction regularly disrupts connectivity and the flow of information. In Gaza, the UN repeatedly reported complete blackouts, hampering humanitarian aid. Elsewhere, authorities have imposed sweeping blocks, like in Nepal, where a nationwide shutdown of 26 social platforms in September 2025 sparked major protests and deadly repression. Circumvention tools are also targeted: in Russia, nearly 200 VPN services were banned in autumn 2024, along with certain encrypted apps.

Youth-led movements born online have faced blocks, too. In Madagascar (late September 2025), a decentralized Gen Z movement triggered mass protests with tragic consequences. In Morocco, nighttime gatherings led by anonymous online groups (“GenZ 212”) escalated into riots, with hundreds injured and many arrests.
These episodes show how quickly mobilizations coordinated via social networks can emerge, and how platform pressure increases in response.

The legal framework is tightening in the West as well. In the United States, FISA Section 702 was reauthorized through April 2026 and remains highly contentious.
The Investigatory Powers (Amendment) Act 2024, in the UK, is being followed in 2025 by new codes of practice and regulations.
In the EU, the DSA opened non-compliance procedures against several major platforms, while the so-called Chat Control proposal returned to the Council with a vote announced for October 2025.

In this context, communications that minimize centralization, metadata collection, and choke points become a concrete need for civil society, journalists, NGOs, and, more broadly, for all citizens.

Platforms, AI, and data extraction: what is really happening

Major centralized platforms do more than carry our messages: they capture metadata (who talks to whom, when, from which device, etc.), profile behavior, and increasingly exploit our interactions with AI. Frances Haugen’s disclosures showed how engagement-driven recommendation systems favor polarizing and harmful content. A 2014 Facebook experiment also demonstrated that small tweaks to the newsfeed can influence users’ mood.

Even when message content is encrypted, metadata and algorithms remain levers for exploitation or censorship. Example: on WhatsApp, private exchanges are E2EE, but conversations with Meta AI are not; some functions send text to Meta’s servers via “private processing.” In 2025, Meta also announced it would resume training its models in Europe on public content (and interactions with Meta AI), with an objection mechanism. And in 2023, Meta received a record €1.2 billion GDPR fine for unlawful data transfers to the US.

Among messengers, Telegram does not enable E2EE by default: it applies only to Secret Chats (not groups). WeChat has been documented to surveil even non-Chinese accounts, using their content to improve censorship applied to Chinese users. X has adjusted its rules: the developer agreement forbids external model training on posts, but the privacy policy still allows certain training uses by partners, and the platform trains its own models.

Why Jami is necessary today: a practical response

The market is dominated by a handful of centralized platforms. Rather than one more platform, we need a different approach. That’s the alternative Jami is building.

Thanks to its distributed architecture, devices connect directly to one another (peer-to-peer), without a central server, which limits metadata capture, reduces choke points, and makes blocking harder. Jami end-to-end encryption provides persistent confidentiality, and the app requires no phone number and no personal data. By design, neither the developers nor Savoir-faire Linux can access your data: it stays on your devices.

As a GNU package (GPLv3+), developed under the stewardship of the Free Software Foundation, Jami is part of the digital commons. It guarantees code that is open, verifiable, modifiable, and reproducible.

Our mission is to offer everyone, wherever they are, a direct, private, and resilient space for conversation. We don’t rely on perfect laws; we shrink the surveillance and monetization surface by design. When networks go down or platforms obey opaque orders, peer-to-peer communication keeps working.

Call to action

♥️
We are launching our second donation campaign and calling on our community.

The first campaign, completed in March 2024, raised CAD $403,162 and led to tangible improvements to Jami. Building on that momentum, our current goal is $1,000,000, displayed on the new donations page, to accelerate development and ensure the project’s long-term viability.

If Jami helps you, please donate what you can and help spread the word :


Why we need you

Today, a small team of about five developers is pushing Jami forward to make it reliable and accessible to all.

In 2024, the Eleutheria release had a clear goal: reduce bugs and strengthen robustness. Goal achieved: a week ago, we released Atlas, turning months of engineering into greater reliability.

Usage is clearly up in recent months, with more than 3,000 new users every day, compared to 200 per day last year. And the more Jami grows, the greater our responsibility (testing, maintenance, and support across all platforms). To keep pace and secure the project’s future, we need your support!

Why you can trust us

Jami moves forward thanks to Savoir-faire Linux, and donations from our global community.

Savoir-faire Linux is an independent company
specialized in free/libre and open-source software

Founded in 1999 in Montreal and also present in France, Savoir-faire Linux designs and integrates open-source solutions for public and private organizations. It has incubated and developed Jami since 2015, under the GNU project umbrella since 2016. In 2023, GNU Jami received the FSF’s Free Software Award for Projects of Social Benefit.

Manifesto 2025: the freedom to communicate belongs to all of us

What your donations make possible

Your donations fund engineering time on Jami.

2025–2026 goals (direct user impact)

  • Group calls performing well on all platforms: stronger stability and ergonomics
  • Web version in preparation: improved accessibility without compromising security
  • Advanced diagnostics tools to fix complex bugs faster, with strict privacy safeguards and explicit consent
  • Better mobile performance: faster startup, lower power use, broader accessibility options
  • Sustainable packaging: maintain the official Flatpak and keep improving other distribution channels

Planned spending breakdown

  • 65% development and cross-platform maintenance
  • 20% quality, testing, and diagnostics tools
  • 10% documentation, community, and internationalization
  • 5% minimal distribution infrastructure

A report on fund usage will be published at the end of the campaign.

Donating: a political act

Supporting Jami means choosing a different model.
No advertising. No shareholders to satisfy. What drives us is you. What keeps us going are your donations.

  • Refuse data capture: remove your exchanges from systems built on metadata and opaque model training
  • Strengthen freedom and resilience: fewer single points of blockage, more resistance to intrusive laws and information warfare
  • Finance a common good: you back open-tools rather than an ad network
  • A proven alternative: already used by 250,000+ people in 176 countries
  • Direct impact: every donation directly funds our engineers’ work and sustains a small, dedicated team

“Saying you don’t care about the right to privacy because you have nothing to hide is no different from saying you don’t care about freedom of speech because you have nothing to say.” — Edward Snowden
]]>
<![CDATA[Atlas: Jami’s biggest step toward reliable communication]]>https://jami.net/atlas-jamis-biggest-step-toward-reliable-communication/68cb437b2507fa03aaa61766Wed, 24 Sep 2025 00:27:39 GMT
🏋️
Today we are releasing Atlas : the latest Jami update ❗
Atlas: Jami’s biggest step toward reliable communication

It rolls months of engineering into visible gains you can feel in daily use: stronger reliability, smoother calls and messaging across devices, and better behavior on slow or unstable networks. Atlas is about maturity and endurance, not flashy features !

This article walks through the meaning of the name Atlas, what has changed in Jami, and what is coming next.

Why Atlas?

  • Atlas, in Greek myth, is the Titan condemned by Zeus to hold up the sky for eternity. He embodies strength and the duty to carry a burden, so others can move freely. We chose this name as a commitment to help protect private communication and digital freedom, at a time when both face growing pressure from state surveillance, data brokers, and AI systems that feed on personal data.
  • Atlas also means a collection of maps, which fits Jami’s global mission. We build Jami for everyone, across borders and backgrounds, so anyone can connect for free in a dependable, privacy-respecting way.
  • In English, ‘Atlas’ also echoes ‘at last’, a nod to a year of collective work that put reliability at the center of the experience.

Eighteen months of steady improvements

Over the last year and a half, we focused on reliability in everyday use. Much of this work was invisible, and we documented it in our Dev Updates.

What you will notice

Aspect Improvements
📞 Smoother communications Smoother calls and conferences, with clearer audio, more stable video, better continuity on poor-quality networks.
✉️ Reliable messaging & transfers Delivery receipts with a not sent/received checks, fewer retries and dropouts, more predictable delivery.
📈 Higher performance Faster startup and account loading.
🖥️ Cleaner interface Simpler screens that surface the essentials.
🌍 Consistent across platforms More consistent behavior on desktop, mobile, and common Linux distributions.

Under the hood

  • Fewer packet-loss issues and stronger session handling in the distributed network.
  • A refined protocol and APIs, plus hundreds of bug fixes that cut edge-case failures and improve resource use.

😊
If you used Jami a year ago, you should feel the difference right away.

What comes next?

Atlas is a foundation, not a finish line. The roadmap ahead is rich.

Priority 1: Reliability

  • Device linking: fix reconnects after a wrong password, make multi-device linking solid.
  • Invitations and 1-to-1 chats: restore multiple conversations with the same contact, redesign the invitation flow. The replay feature stays off until it is provably safe.
  • History and sync: load messages reliably and in order, correct send and read states, fix cases where messages appear only after restart or old messages reappear on iOS.
  • Calls: clearer audio, steadier video, better bitrate selection, fix the group-call freeze on exit, optional auto-answer for simultaneous calls.
  • Network core: reduce long-run instability in relay nodes, fix a memory leak, improve packet-loss handling and session stability.
  • PJSIP library: unblock a stalled send path, address crashes and rare timeouts during connection setup.
  • Location sharing: ensure delivery is reliable.

Priority 2: Test smarter

  • Broader coverage: generate realistic scenarios automatically instead of writing them one by one, with fuzzing, property-based tests, and deterministic simulations.
  • Find hidden bugs early: inject failures in a safe lab and use strict internal checks to surface timing issues and regressions quickly.
  • Faster diagnosis: add clearer call and network diagnostics to speed up fixes and keep bugs from returning.


Our donation campaign

Building Jami takes more than code. It takes time, resources, and a community that cares.

We are launching our second donation campaign to accelerate development and secure Jami’s long-term sustainability. Your contribution directly funds the engineers who build, test, and maintain Jami, keep the project independent, and ensure it remains reliable for everyone.

Your support is essential to keep the project on solid ground. It lets Jami grow without compromising its core principles : freedom, privacy, and respect for your data.

🙏
If Jami helps you, please consider making a donation to keep it healthy for the long run.

]]>
<![CDATA[Dev update #14]]>https://jami.net/dev-update-14/6852e4c65ef3a377574a081dWed, 25 Jun 2025 14:20:38 GMT

For this fourteenth edition, we present a series of new features and fixes on all platforms. Whether you're using Jami on computer or mobile, or collaborating in groups, these updates aim to bring Performance, Polish, and Powerful Features to make your experience smoother, faster, and more powerful.

🔄
Your experience improves with every update.

🔧 CORE

Connectivity continues to be a top priority. We’ve implemented a proxy fix that significantly improves how devices connect to each other.
Also, the keyboard shortcuts window now supports dark mode, a small change for your eyes, a giant leap for aesthetics.

We've also resolved several crashes under the hood, contributing to a more stable and enjoyable Jami experience overall.


🖥️ DESKTOP

🏗️ A New Build System

Thanks to a series of commits, Jami Desktop is now easier to compile and distribute thanks to a brand new build system. This helps developers and contributors work faster and users get more frequent updates.

☑️ Spellcheck

We’ve revamped the spellchecker to work reliably across all platforms. It now supports both system dictionaries and downloaded ones, and fixes long-standing issues in the process.

⌨️ Keyboard Shortcuts & Call Handling

Shortcuts are back on track: the broken accessibility shortcuts are now fully functional again.

Dev update #14


You can now also choose how incoming calls behave when you're already on a call. Auto-refuse or manage manually, the choice is yours.


📱 ANDROID

Our Android team continues to work hard squashing bugs. Among the highlights:

🍏 iOS

📢
It's finally here: Group calls on iOS!


With group call support now implemented, Apple users can enjoy dynamic and secure multi-person communication from anywhere.


Thanks for reading! As always, we’d love to hear your thoughts, your feedback helps us improve. We’re already working on upcoming adjustments and can’t wait to show you what’s next.

📢
Until then, stay connected, stay private, use Jami.

To stay informed about our latest improvements and upcoming features, subscribe to our newsletter, visit our homepage, or check our blog regularly. Here are a few useful links:
]]>
<![CDATA[How accessible is Jami ?]]>https://jami.net/how-accessible-is-jami/682ca95620e5b20abd76e524Fri, 13 Jun 2025 01:30:49 GMT
Accessibility cannot be an afterthought. It's a core aspect of design. 
How accessible is Jami ?

We can all be faced with some form of disability, whether permanent or temporary, at different times in our lives. That's why accessibility must be a constant concern at every stage of development.


Accessibility is about ensuring that everyone can live the same experience as harmoniously as possible, whatever their abilities, background or identity. In Jami, this could mean features like screen reader support, keyboard navigation, customizable text sizes, or simplified user flows for users with cognitive differences. It aims to meet the challenges faced by people with disabilities, cultural minorities, and individuals from different social backgrounds and identities, as well as those at the intersection of these categories.


So, what’s the current state of Jami’s accessibility, and what comes next?

Accessibility on iOS

iOS is our most accessible platform so far. All core features are fully accessible with Apple’s VoiceOver. By relying heavily on native components, we ensured that Jami works well with most assistive technologies on the platform.

Accessibility on Android

We’re currently making great progress on the Android version of Jami. Its accessibility isn’t quite on par with the iOS version yet, but it’s already in solid shape.

Android's TalkBack is quite similar to iOS's VoiceOver, as both are screen readers designed to make smartphones accessible to people who are blind or visually impaired. Like iOS's VoiceOver, TalkBack reads aloud the content displayed on the screen, describes user interface elements and provides spoken feedback when users interact with their device using gestures.

In the context of Jami, integrating TalkBack support means ensuring that all interactive elements, such as call buttons, chat messages or contact lists, are correctly labeled and navigated using voice prompts. This enables users who rely on TalkBack to communicate securely and independently, with a user experience as seamless as on iOS. Fortunately, Android's accessibility documentation is very comprehensive, offering practical solutions for the design and development of mobile applications.


You can check out our roadmap of the key issues we’re planning to tackle on Android right here.

How accessible is Jami ?

Accessibility on Desktop

Desktop accessibility is a bit trickier. The vast majority of resources on the topic focus exclusively on webview based applications. The most widely adopted accessibility guidelines, the Web Content Accessibility Guidelines (WCAG), are an international standard that provide a framework for making web content more accessible to people with disabilities. They cover principles such as perceivability, operability, understandability, and robustness. While these guidelines are extremely valuable, they apply specifically to web content and do not fully address the challenges of native desktop applications.

As a result, ensuring accessibility on desktop platforms often requires additional strategies beyond WCAG compliance.


Jami is built with the Qt framework, so many of those recommendations don’t directly apply to us. Qt includes its own accessibility system, but there’s a lack of complex, open-source implementations that fully support it. Even Qt’s own components often lack proper screen reader support.


So, what accessibility features have we already implemented?

Accessibility features already available on Jami Desktop

  • Whisper Transcript is a Jami plugin that provides real-time subtitles for your calls. It’s a key feature for many hearing-impaired users (affecting up to 18% of users, according to Microsoft) that helps them stay connected with loved ones, even at a distance. By running Whisper’s model locally on the user’s device, without ever sending information to external servers, we ensure that hearing-impaired users don’t have to sacrifice their privacy.
How accessible is Jami ?

  • For visually impaired users (affecting up to 17% of users, according to Microsoft) we offer scalable UI text and full keyboard shortcut support for most tasks.
How accessible is Jami ?

  • For users with dysorthographia, or anyone who struggles with spelling or grammar, our brand-new spellchecker helps make writing in Jami a more stress-free experience.
How accessible is Jami ?

  • When developing the spellchecker, we made it a priority to include as many regional dialects and languages as possible. It reflects our commitment to celebrating cultural diversity and nuance. Accessibility also means making sure that people who don’t speak English can use our software. That’s why, with your help, we’ve built a community-maintained translation system using Transifex.
How accessible is Jami ?

We’d like to once again thank our incredible community of translators, who continue to help us make Jami more accessible, and more universal, every day.💚

What's next for Jami Desktop ?

We still have a long way to go when it comes to accessibility on Jami Desktop. The biggest issue right now is that it’s still not accessible for blind users.

We’re kicking off new development and testing cycles, working closely with accessibility experts and users with disabilities to guide the process.

  • We’re working on making Jami fully navigable using only a keyboard, a crucial feature for users with motor or visual impairments. At the same time, we’re making sure screen readers can properly interpret all UI elements.
  • We’re also working on customizable keyboard shortcuts to avoid conflicts with other assistive technologies.
How accessible is Jami ?
  • Additionally, we plan to support custom fonts (especially OpenDyslexic) to improve accessibility for dyslexic users.

🌐
You can track our progress on this GitLab issue. Feel free to contribute by reporting any accessibility or inclusivity shortcomings you come across in Jami!
Together, we can try to build a digital space where no one is left behind.💙
]]>
<![CDATA[Dev update #13]]>https://jami.net/dev-update-13/6821b34f20e5b20abd76e4a4Fri, 16 May 2025 22:36:30 GMTDev update #13

Welcome to this new Jami development update! Over the past few weeks, we've focused on stability, maintenance, and some key feature improvements across both the core and platform-specific components. Let’s dive into what’s new.

Core

  • We’ve improved how presence indicators are managed, they now more accurately reflect whether users are online or not. This enhancement, implemented in this daemon update, improves communication fluidity across peers in the decentralized network.
  • Additionally, we’ve fixed several issues related to build dependencies, making it easier to compile Jami across different environments. You can check the details of these fixes here and here.
  • A major bug affecting partial file transfers during conversations has also been resolved. This issue could previously interrupt or block file sharing, especially under unstable network conditions. File transfers should now be smoother and more reliable.

Desktop

Android

Several performance improvements and bug fixes have been rolled out to the Android app. These changes enhance responsiveness and stability across a variety of devices. You can explore the contributions here and here.

Android TV

Two great new features landed on Android TV.

  • First, it’s now possible to export your account directly from the TV interface, making backup and account migration much easier.
  • Second, we’ve added the ability to mute during a call, a long-requested feature that brings more flexibility to users.

iOS

On iOS, we focused on minor fixes and stability improvements. These aren’t flashy changes, but they help ensure a smooth and reliable user experience.

Documentation

We’ve also made progress on group feature documentation, helping users and developers better understand and adopt group-based communications. The current draft can be viewed here.


💚
Thank you for supporting Jami, a libre, distributed, and community-driven project. Whether you contribute code, test features, or spread the word, your help is invaluable in building a freer internet.
]]>
<![CDATA[How does Jami work on mobile without a server?]]>https://jami.net/jami-and-proxys/680ba56a20e5b20abd76e217Mon, 05 May 2025 16:50:34 GMT

If you use Jami on your phone, you’ve probably noticed how reliable it stays, even when the app is closed or your IP address changes. That stability isn’t magic. It comes from a piece of clever infrastructure working behind the scenes: proxy servers.

This week, we’re breaking it down. What are DHT proxies? Why does Jami use them on mobile? And how can you set one up yourself if you want more control over your connection?

First, let’s start with the basics.

What exactly is a DHT proxy?

💡
You can think of a proxy server as a middleman between two entities, either two clients, or a client and a resource.

A key function of proxy servers is their ability to hide the identity of the requester or the address of the accessed resource, but there are many other reasons to use them.

Jami is distributed software. This means it doesn’t rely on a central server; instead, information travels peer-to-peer between users. Instead than having a central entity that pass the informations between users, it’s as if each device is a node in a web, allowing everyone to communicate by passing encrypted data directly. This is different from decentralized software, which relies on multiple redundant servers.

How does Jami work on mobile without a server?

On Distributed Communication Networks, Paul Baran (1962)

Some distributed projects use proxies for encapsulation, treating their local node and the rest of the network as a single entity within the connection graph. This approach allows them to avoid refactoring large portions of code when the communication protocol changes.

However, this is not how Jami uses proxies on mobile.

How proxies are used on mobile in Jami?

If Jami doesn’t use central servers, why do proxies come into play, especially on mobile?

The answer has to do with battery life and background activity limits enforced by Android and iOS. On mobile devices, operating systems like Android and iOS prevent apps from staying active in the background for too long to protect your battery.

However, in order to receive new messages or calls, Jami needs to remain connected to the network, since it is actually distributed, even when the app is asleep.
This is where OpenDHT comes in. OpenDHT is a distributed hash table that allows devices to find each other on the network using unique IDs. It keeps track of where everyone is, even if their IP address changes. You can think of it as a phone book.


But for this to work reliably and notify the user of new calls or messages, OpenDHT needs to run continuously in the background keeping connections open and listening for updates, again, mobile apps can’t do continuously.

The role of the OpenDHT proxy

To solve this, we created the OpenDHT proxy. This server stays online on behalf of your mobile device and listens for activity.

When something new happens (like an incoming message or call), it sends a push notification through Apple’s or Google’s notification services to wake your app up.

No personal data is ever transmitted in clear through the DHT proxy. All communications still use encrypted peer-to-peer connections between devices.

If you don’t want to rely on Apple or Google, you can disable this feature in your settings. On Android, you can also use UnifiedPush, a free/libre alternative to Google’s system.

How does Jami work on mobile without a server?
📌
Important note: using a proxy does not hide your IP address from other nodes you’re directly connected to. If anonymity is your goal, you’ll want to use a VPN instead.

Set up your own proxy for Jami

Want to host your own proxy and OpenDHT node? There are plenty of reasons you might want to:

  • Reduce data and battery usage on your phone
  • Have more control over your connections
  • Or just because you think it’s cool

Whatever your reason, running your own DHT node is a good start !  You’ll find all the steps in Running a node with dhtnode

Spoiler: it only takes a few commands in a terminal to get started.

If you want to run your own DHT proxy, i will be a bit more complex as you will have to deal with push notifications. You can find our documentation on the subject here.


To conclude

Jami wouldn’t exist without your contributions, translations, feedback, and donations. As always, thank you for helping us build a freer future! ❤️

]]>
<![CDATA[Can I call regular phone numbers with Jami?]]>https://jami.net/what-is-sip-and-how-can-you-use-it-in-jami/680005c6744f8703d058a778Thu, 24 Apr 2025 14:46:14 GMT

🌐
Many users ask: “Can I use Jami like Skype to call landlines or mobile numbers?” The short answer is: yes with SIP. Let’s break down how it works!

Since the release of Eirene, the new Jami experience, we’ve received many questions asking for more details about an advanced yet mysterious feature: SIP.

Whether you’ve heard about it in passing or have seen it mentioned in your Jami settings, SIP can seem intimidating. Unlike Skype, which uses its own proprietary system, Jami supports open standards. In order to be reachable on your computer, tablet, or phone via a phone number, you can use a SIP account in Jami. But the details of these protocols are still opaque for most users.

This article is here to change that.

Let’s break down what SIP is, how it relates to Jami, and how you can take advantage of it, without needing to be a telecom expert.

A Quick Recap: What Jami Does

Jami is a communication platform offering classic messaging, audio, and video calls without relying on servers or third parties. It is fully distributed and respects your privacy.

But did you know Jami can also do more than connect you to other Jami users?

In addition to its peer-to-peer messaging and calling features, Jami also allows you to make and receive calls to phone numbers and landlines, and even use your existing phone number, through the power of SIP.

So, What Exactly Is SIP?

SIP, short for Session Initiation Protocol, is a widely adopted standard for setting up real-time audio and video calls over the internet. Think of it as the modern, digital equivalent of analog phone lines.

Unlike Skype, which uses its own proprietary system, Jami supports open standards. That’s where SIP comes in.

To use SIP, you need:

  • A SIP-compatible device or app (like Jami!)
  • An account from a SIP provider (which acts like your network operator)
Can I call regular phone numbers with Jami?

Jami doesn’t provide SIP accounts directly. Instead, it lets you configure one, so you can place or receive regular phone calls directly from your computer or smartphone, all through the internet.

What Can You Do With a SIP Account in Jami?

It really depends on your SIP provider.

Most SIP providers offer features such as:

  • Making calls to landlines or mobile numbers
  • Receiving calls using a traditional phone number
  • Local call routing
  • Using your existing number online
  • Voicemail and call recording

While Jami itself doesn’t offer SIP services, it acts like your device—you bring the SIM card (your SIP account), and Jami becomes the phone.

If you’re curious about SIP providers, you can find useful comparisons in articles like:

Want to test it without committing? Many providers also offer free SIP accounts with limited features—just enough to try it out in Jami.

Can I call regular phone numbers with Jami?

How to Set Up a SIP Account in Jami

Getting started is easy:

  1. Choose and create an account with a SIP provider.
  2. Open Jami and go to:
    Advanced settings → Configure a SIP account
  3. Enter the credentials provided by your SIP service.
  4. That’s it! You’re now ready to make and receive calls.

You can add multiple accounts if needed and switch between them easily.

Can I call regular phone numbers with Jami?

Jami Accounts vs SIP Accounts: What’s the Difference?

It’s essential to understand that Jami accounts and SIP accounts are not the same:

FeatureJami AccountSIP Account
Peer-to-peer✅ Yes❌ No
End-to-end encrypted✅ Yes❌ Not by default
Server required❌ No✅ Yes (provider's server)
Contact phone numbers❌ No✅ Yes
Contact Jami usernames✅ Yes❌ No

If you want total privacy and decentralization, use a Jami account.
If you need to reach landlines or use a phone number, set up a SIP account.

You can use both inputs simultaneously in the application.


Join the Conversation!

💙
We're grateful for the curiosity and feedback our community keeps sharing. Articles like this one are inspired directly by your questions and your desire to dive deeper into what makes Jami so unique. Whether you’re testing new builds, reporting bugs, or just spreading the word, your involvement makes a real difference.

]]>