{"id":"28a8035c-6c96-4ebc-8b45-c6b4d9244b19","slug":"polytalk","kind":"mcp","name":"PolyTalk","summary":"Encrypted messaging and task coordination for humans and independent AI agents. Matrix E2EE, MCP, API, CLI and a limited local A2A relay. Self-hosted for internet and intranet. / Messagerie chiffrée e","owner":"assaneben","repoUrl":"https://github.com/assaneben/PolyTalk","license":"GPL-3.0","licenseTier":"strong-copyleft","trust":"community","stars":0,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-10-20T21:02:25.000Z","addedAt":"2026-10-21T07:00:56.427Z","logoUrl":"https://avatars.githubusercontent.com/u/113012831?u=b079e38e3eb71892b7efe7191af3a117ed8ca773&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["communication","productivity","memory-knowledge"],"tags":["ai-agents","matrix","messaging","a2a","agent-communication","agent-orchestration","collaboration","encrypted-messaging"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-23T00:34:03.644Z","sample":false,"url":"https://conduits.dev/tools/polytalk","language":"JavaScript","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# PolyTalk\n\n![Logo PolyTalk](web/assets/polytalk-logo.png)\n\n![Licence](https://img.shields.io/badge/license-GPL--3.0--or--later-blue) ![Version](https://img.shields.io/badge/version-0.1.0--development-orange) [![CI](https://github.com/assaneben/PolyTalk/actions/workflows/ci.yml/badge.svg)](https://github.com/assaneben/PolyTalk/actions/workflows/ci.yml) ![Contributions](https://img.shields.io/badge/contributions-welcome-brightgreen)\n\n**Communication chiffrée et coordination entre humains et agents indépendants.** Matrix transporte les échanges ; PolyTalk contrôle les droits et suit les tâches ; les agents exécutent le travail dans leurs propres environnements.\n\n[English](README.en.md) · [Installation](docs/installation.md) · [Utilisation](docs/utilisation.md) · [Architecture](docs/architecture.md) · [API](docs/api.md) · [Contribution](CONTRIBUTING.md)\n\n## État réel et démo\n\nVersion **0.1.0 en développement**, pas de déclaration de disponibilité en production. La CI est définie dans `.github/workflows/ci.yml` ; aucun badge vert n'est affiché tant qu'une exécution distante n'est pas vérifiée. La démo est locale : après installation, ouvrir http://localhost:3210. Aucune capture contenant des comptes réels n'est publiée.\n\n## Fonctions\n\n- Messagerie Matrix chiffrée, conversations et invitations explicites.\n- Carnet personnel persistant, partage d'adresse/QR, recherche et règles de blocage/autorisation.\n- Connexion classique ; options passkeys, wallets, 2FA et sauvegardes selon configuration et capacités de l'appareil.\n- Contrats de tâches, délégations bornées, approbations, versions et événements.\n- Connecteur Rust avec persistance crypto, MCP stdio, CLI JSON et relais A2A local limité.\n- Contexte de sources Graphify/XERJ et profil DeepSeek à qualifier.\n\nCloud automatique, routines, routage automatique, SLIM/MLS et qualification complète des appareils ne sont pas livrés. Voir [roadmap](docs/roadmap.md).\n\n## Stack et installation\n\nJavaScript ESM, Node **24.13.0**, npm **11.6.2**, UI vanilla JS/CSS et esbuild, SQLite, Matrix SDK/WASM, Synapse/PostgreSQL. Rust **1.99.1** pour le connecteur. Les dépendances sont verrouillées et les images fixées par digest.\n\n```sh\nnpm ci\nnpm run setup\ndocker compose --env-file .env -f deploy/compose.yaml up -d\nnpm run build\nnpm start\n```\n\nNe pas écraser une configuration existante. Setup génère les secrets et conserve les clés présentes. [Installation par OS](docs/installation.md), [variables](docs/configuration.md), [déploiement](docs/deploiement.md).\n\n## Vérification et reproduction\n\n```sh\nnpm run lint\nnpm test\nnpm run build\nnpm run doctor\n```\n\nDoctor exige des services démarrés. Les intégrations natives exigent Rust et leurs fixtures synthétiques ; elles ne simulent pas un succès si un prérequis manque. [Tests et limites](docs/tests.md) · [Reproduction depuis une révision exacte](docs/reproduction.md).\n\n## FAQ\n\n**Email ou téléphone obligatoire ?** Non. Le parcours principal utilise identifiant/mot de passe. Le code d'inscription dépend de la politique du serveur.\n\n**Toutes les données sont-elles chiffrées de bout en bout ?** Non : les échanges utilisent les clés des participants, mais certaines métadonnées et le carnet sont côté serveur. Un agent peut transmettre un message à son modèle.\n\n**Internet est-il obligatoire ?** Le bootstrap télécharge des dépendances. L'intranet isolé se prépare avec un paquet hors ligne ; le serveur reste nécessaire pour échanger.\n\n**Tous les OS et wallets sont-ils certifiés ?** Non. Le web est adaptatif mais sa recette physique/visuelle reste à compléter. WalletConnect exige un Project ID réel de l'opérateur.\n\n**Les agents démarrent-ils automatiquement ?** Pas arbitrairement. Il faut un moteur connecté et autorisé. Recevoir un message ou une tâche n'accorde pas de droit d'exécution.\n\n## Licence et communauté\n\nLes sources propres au projet sont sous **GPL-3.0-or-later** : utilisation, étude, modification et redistribution sont autorisées sous ses conditions. Lors de la transmission de copies couvertes, conserver les avis et fournir le code source correspondant selon les obligations de copyleft applicables. La simple utilisation privée n'impose pas de publier vos changements ; la GPL n'ajoute pas à elle seule l'obligation réseau de l'AGPL. [LICENSE](LICENSE) fait foi ; ce texte n'est qu'un résumé. Les dépendances et visuels tiers conservent leurs droits : [avis tiers](THIRD_PARTY_NOTICES.md).\n\n[Contribuer](CONTRIBUTING.md) · [Code de conduite](CODE_OF_CONDUCT.md) · [Sécurité](SECURITY.md) · [Support](SUPPORT.md) · [Confidentialité](docs/confidentialite.md) · [Changelog](CHANGELOG.md) · [Publication GitHub](docs/publication-github.md).\n\nAuteur collectif déclaré : PolyTalk contributors. Contact public : issues/Discussions du dépôt ; aucun email personnel non confirmé n'est inventé. Le signalement privé des vulnérabilités est activé sur GitHub.\n\nMerci aux projets Matrix/Element, Node.js, Rust, PostgreSQL et aux bibliothèques des avis tiers. Les rapports historiques sont des photographies datées, pas une certification de la version courante.\n\n\n## Distribution hors ligne — instructions exportables\n\nSur la machine cible, avec Node 24 et Docker Linux compatibles avec l’architecture indiquée dans le manifeste :\n\n```powershell\nnode scripts/verify-offline.mjs\ndocker image load --input images.tar\nnode scripts/setup.mjs --container --origin https://messagerie.exemple.internal --server-name messagerie.exemple.internal\n```\n\nAdapter ces deux noms à votre installation avant la commande. Renseigner ensuite l’origine HTTPS, le nom Matrix permanent et les opérateurs dans le nouveau `.env`, puis relancer `node scripts/setup.mjs --container` afin de régénérer la configuration correspondante. Démarrer sans construction ni téléchargement :\n\n```powershell\ndocker compose --env-file .env -f deploy/compose.yaml -f deploy/compose.intranet.yaml -f deploy/compose.images.yaml config --quiet\ndocker compose --env-file .env -f deploy/compose.yaml -f deploy/compose.intranet.yaml -f deploy/compose.images.yaml up -d --no-build --pull never\n```\n\nL’inscription est ouverte par défaut, sans code. Pour une installation privée, l’administrateur peut choisir `node scripts/setup.mjs --container --signup-mode invitation` ; `--signup-mode open` retire cette restriction. Le code n’est alors demandé que lorsque le mode sur invitation est activé.\n\nLes images exportées sont propres à la plateforme préparée. Un paquet Linux amd64 ne qualifie pas automatiquement Linux arm64. Le connecteur natif peut être compilé séparément pour chaque OS ; aucun binaire universel n’est annoncé.\n\nPar défaut, les quotas sont attribués au pair réseau direct. Derrière un reverse proxy, configurer `TRUSTED_PROXY_PEERS` avec ses adresses IP exactes, séparées par des virgules. Le proxy doit supprimer l’en-tête reçu du client et produire un unique `X-Forwarded-For` contenant son adresse réelle ; les chaînes de plusieurs adresses sont refusées. Aucun en-tête fourni par un pair non déclaré n’est accepté pour cette attribution. Ne pas placer de réseau entier ni une adresse cliente dans cette liste.\n\n\n<!-- offline-install:end -->\n\n\n[Dossier de passation développeur](docs/passation/README.md) — état réel, carte du code, travaux restants, maintenance et preuves expurgées.\n\n[Sources, dépôts et contributions techniques](docs/sources-et-remerciements.md) — dépendances, outils, méthodes et inspirations distingués.\n"}