Retour aux mises à jour
New releaseAug 1, 2026

bitchat v1.7.1

chat Bluetooth mesh, ambiance IRC

Partager
icon_128x128@2x

bitchat

Une application de messagerie décentralisée pair-à-pair dotée d'une architecture de transport double : des réseaux Bluetooth maillés locaux pour la communication hors ligne et le protocole Nostr sur Internet pour une portée mondiale. Pas de comptes, pas de numéros de téléphone, pas de serveurs centraux. C'est le groupe de discussion de quartier.

bitchat.free

📲 App Store

Licence

Ce projet est placé dans le domaine public. Voir le fichier LICENSE pour plus de détails.

Fonctionnalités

  • Architecture à double transport : Bluetooth maillé pour le hors ligne + protocole Nostr pour la messagerie sur Internet
  • Canaux basés sur la localisation : salons de discussion géographiques utilisant les coordonnées géohash sur des relais Nostr mondiaux
  • Routage intelligent des messages : choisit automatiquement le meilleur transport (Bluetooth → repli sur Nostr)
  • Réseau maillé décentralisé : découverte automatique des pairs et relais de messages multi-sauts via Bluetooth LE
  • Confidentialité d'abord : pas de comptes, pas de numéros de téléphone, pas d'identifiants persistants
  • Chiffrement de bout en bout des messages privés : Protocole Noise pour le maillé, NIP-17 pour Nostr
  • Commandes de style IRC : interface familière avec /slap, /msg, /who
  • Application universelle : prise en charge native d'iOS et macOS
  • Effacement d'urgence : triple tap pour effacer instantanément toutes les données
  • Optimisations des performances : compression des messages LZ4, modes batterie adaptatifs et réseau optimisé

Architecture technique

BitChat utilise une architecture de messagerie hybride avec deux couches de transport complémentaires :

Réseau maillé Bluetooth (hors ligne)

  • Communication locale : pair-à-pair direct à portée Bluetooth
  • Relais multi-sauts : les messages transitent par les appareils voisins (max 7 sauts)
  • Aucun Internet requis : fonctionne complètement hors ligne dans des scénarios de catastrophe
  • Chiffrement avec le protocole Noise : chiffrement de bout en bout avec secret de persistance
  • Protocole binaire : format de paquet compact optimisé pour les contraintes Bluetooth LE
  • Découverte automatique : découverte des pairs et gestion des connexions
  • Alimentation adaptative : cycles d'utilisation optimisés pour la batterie

Protocole Nostr (Internet)

  • Portée mondiale : connectez-vous avec des utilisateurs du monde entier via des relais Internet
  • Canaux de localisation : salons de discussion géographiques utilisant les coordonnées géohash
  • Réseau de 290+ relais : répartis à travers le monde pour la fiabilité
  • Chiffrement NIP-17 : messages privés emballés-cadeaux pour la confidentialité sur Internet
  • Clés éphémères : nouvelle identité cryptographique par zone géohash

Types de canaux

mesh #bluetooth

  • Transport : réseau maillé Bluetooth Low Energy
  • Portée : appareils locaux à portée multi-sauts
  • Internet : non requis
  • Cas d'utilisation : communication hors ligne, manifestations, catastrophes, zones reculées

Canaux de localisation (block #dr5rsj, neighborhood #dr5rs, country #dr)

  • Transport : protocole Nostr via Internet
  • Portée : zones géographiques définies par la précision du géohash
    • block (7 caractères) : niveau pâté de maisons
    • neighborhood (6 caractères) : niveau quartier / district
    • city (5 caractères) : niveau ville
    • province (4 caractères) : niveau état / province
    • region (2 caractères) : niveau pays / grande région
  • Internet : requis (se connecte aux relais Nostr)
  • Cas d'utilisation : discussion communautaire basée sur la localisation, événements locaux, discussions régionales

Routage des messages directs

Les messages privés utilisent une sélection de transport intelligente :

  1. Bluetooth d'abord (préféré lorsque disponible)

    • Connexion directe avec session Noise établie
    • Option la plus rapide et la plus privée
  2. Repli sur Nostr (lorsque Bluetooth indisponible)

    • Utilise la clé publique Nostr du destinataire
    • Emballage-cadeau NIP-17 pour la confidentialité
    • Routage via le réseau mondial de relais
  3. File d'attente intelligente (lorsque aucun des deux n'est disponible)

    • Messages mis en file d'attente jusqu'à ce qu'un transport devienne disponible
    • Livraison automatique lorsque la connexion est établie

Pour une documentation détaillée du protocole, voir le Livre blanc technique.

Configuration

Option 1 : Utilisation de Xcode

cd bitchat
open bitchat.xcodeproj

Pour exécuter sur un appareil, quelques étapes sont nécessaires pour préparer le code :

  • Clonez les configurations locales : cp Configs/Local.xcconfig.example Configs/Local.xcconfig
  • Ajoutez votre identifiant d'équipe développeur dans le fichier Configs/Local.xcconfig nouvellement créé.
    • Le Bundle ID sera défini sur chat.bitchat.<team_id> (sauf si vous le modifiez)
  • Les droits (entitlements) doivent être mis à jour manuellement (TODO : automatiser) :
    • Recherchez et remplacez group.chat.bitchat par group.<votre_bundle_id> (ex. group.chat.bitchat.ABC123)

Option 2 : Utilisation de just

brew install just

Vous voulez essayer sous macOS ? just run configurera et exécutera depuis les sources. Exécutez just clean ensuite pour restaurer l'état d'origine pour la construction et le développement de l'application mobile.

Localisation

  • Les ressources de base de l'application se trouvent dans bitchat/Localization/Base.lproj/. Ajoutez de nouvelles chaînes dans Localizable.strings et les règles de pluriel dans Localizable.stringsdict.
  • Les chaînes de l'extension de partage sont séparées dans bitchatShareExtension/Localization/Base.lproj/Localizable.strings.
  • Préférez les clés qui décrivent l'intention (app_info.features.offline.title) et réutilisez celles existantes lorsque c'est possible.
  • Exécutez xcodebuild -project bitchat.xcodeproj -scheme "bitchat (macOS)" -configuration Debug CODE_SIGNING_ALLOWED=NO build pour vérifier par compilation toute mise à jour de localisation.

Catégories