Si vous utilisez plus d'un agent de codage, vous connaissez déjà la partie agaçante.
Vous êtes en pleine session avec Claude Code dans un dépôt. Vous voulez qu'un deuxième agent intervienne. Peut-être que c'est Codex dans une autre fenêtre. Peut-être que c'est le Claude de votre coéquipier sur le même projet. Alors, que faites-vous concrètement ? Vous sélectionnez toute la conversation, vous la copiez, vous la collez dans l'autre agent, et vous espérez que rien d'important ne s'est perdu en chemin.
C'est le workflow. Copier, coller, prier. Chaque transfert perd un peu de contexte. Chaque code de connexion que vous transférez entre les terminaux est une chose de plus à échapper. Et rien n'empêche un processus aléatoire de se faire passer pour "votre agent de révision", car il n'y a pas de véritable notion d'identité dans la boucle.
J'en ai eu marre de faire ça manuellement, alors j'ai construit Parler.
Parler est un petit binaire Rust qui permet à des agents séparés de se trouver, de prouver qui ils sont, et de transférer une conversation en direct sans que vous jouiez le rôle de coursier. Il est livré en tant qu'interface en ligne de commande (CLI) et en tant que serveur MCP, donc tout ce qui parle MCP (Claude Code, Codex, Cursor, Windsurf, Gemini, Claude Desktop) peut tout utiliser.
Ceci est le guide pratique. À la fin, vous aurez deux agents partageant une seule conversation à partir d'une seule clé, et vous saurez comment faire le reste.
Installer et câbler le tout en deux lignes
Installez une fois, puis pointez chaque agent de votre machine vers Parler.
1curl -fsSL https://raw.githubusercontent.com/tamdogood/parler-ai/main/scripts/install.sh | sh2parler connect
parler connect est la configuration complète. Il scanne votre machine pour chaque agent IA que vous avez installé et écrit la configuration MCP correcte pour chacun, dans le bon fichier, en fusionnant avec ce qui existe déjà sans écraser vos autres serveurs MCP. Redémarrez vos agents et ils peuvent maintenant se découvrir et s'envoyer des messages.
Il n'y a pas de configuration par agent à éditer manuellement, pas de code à coller, pas de hub à choisir. Chaque agent obtient tranquillement sa propre identité sous ~/.parler/agents/<id>, et par défaut, ils se rencontrent tous sur le hub partagé que le projet exécute à l'adresse wss://parler-hub.fly.dev.
Vous êtes nerveux à propos d'une commande qui modifie les fichiers de configuration ? Regardez avant qu'elle n'écrive :
1parler connect --list # ce qui est détecté et ce qui est déjà connecté2parler connect --print # affiche l'extrait, ne change rien3parler connect --verify # les câble, puis attend et montre chacun au fur et à mesure qu'il se connecte
Vous préférez construire à partir des sources ?
1cargo install --git https://github.com/tamdogood/parler-ai parler-bin,
puis exécutez parler connect de la même manière.
L'événement principal : transférer une conversation en direct
C'est la raison pour laquelle tout cela existe. Vous êtes en pleine discussion avec un agent et vous voulez qu'un autre prenne le relais ou vous aide, sans avoir à coller la transcription.
Étape 1 : ouvrir une session
Vous n'avez pas à mémoriser de commandes. Votre agent actuel a déjà les outils Parler, alors demandez-lui simplement en anglais :
Ouvre une session Parler, résume ce sur quoi nous avons travaillé comme contexte, et donne-moi la clé.
En coulisses, il appelle **parler_open_session**, dépose votre récapitulatif comme premier message d'une nouvelle salle, et vous remet une courte clé comme A3KELDJR.
Étape 2 : le prochain agent demande à rejoindre, en une ligne
Le deuxième agent n'a besoin d'aucune configuration préalable. Pointez-le directement vers la session en ajoutant le serveur MCP avec la clé prédéfinie. Il amorce sa propre identité, compose le hub et demande à rejoindre :
claude mcp add parler -e PARLER_SESSION_KEY=A3KELDJR -- parler mcp
Si les deux agents vivent sur la même machine, donnez à celui qui rejoint son propre répertoire personnel pour que les deux identités n'entrent pas en collision :
claude mcp add parler -e PARLER_SESSION_KEY=A3KELDJR -e PARLER_HOME=~/.parler-bob -- parler mcp
Sur des machines séparées, le ~/.parler par défaut est déjà distinct, donc la clé est tout ce dont vous avez besoin.
Étape 3 : vous approuvez, et il arrive complètement à jour
C'est la partie qui m'importe le plus. La clé ne permet à personne de lire votre conversation. Elle permet seulement à un agent de frapper à la porte. Vous recevez une invite pour accepter ou rejeter chaque nouvel arrivant. Approuvez-le et il arrive dans la même salle avec tout le contexte déjà chargé. Rejetez-le et il ne voit jamais une seule ligne.
C'est pourquoi la clé peut être partagée en toute sécurité dans un chat d'équipe. Dix personnes peuvent la récupérer et vous vérifiez toujours chaque agent un par un avant qu'il ne lise quoi que ce soit.
Vous préférez l'interface en ligne de commande brute ?
Tout ce qui précède a une forme CLI simple si vous préférez le scripter :
1# hôte : ouvrir une session amorcée avec du contexte, récupérer une CLÉ et un nom de salle2parler session open --topic refonte-auth \3 --context "Conception de l'auth dans src/auth.rs. Choix : PKCE + jetons de rafraîchissement. TODO : rotation."4# → CLÉ : A3KELDJR · salle 'refonte-auth'56# nouvel arrivant : échanger la clé (affiche un avis d'approbation en attente)7parler session join A3KELDJR89# hôte : voir qui frappe, puis les laisser entrer10parler session requests --room refonte-auth11parler session approve --room refonte-auth <agentId>1213# le nouvel arrivant réexécute et récupère maintenant le contexte complet14parler session join A3KELDJR1516# les deux parlent sur la salle partagée17parler send --room refonte-auth "je m'en occupe, je prends la rotation des jetons"18parler recv --room refonte-auth
Lorsqu'un agent termine sa partie et veut que le suivant continue tout seul, passez le relais :
1parler handoff --room refonte-auth --for devweb \2 --summary "rotation terminée, points de terminaison dans src/auth.rs" \3 --next "câbler l'interface de connexion aux nouveaux points de terminaison"45parler recv --room refonte-auth --watch # le worker devweb se bloque ici jusqu'à ce qu'on lui passe le relais
L'agent récepteur voit une bannière "RELAS VERS VOUS" avec votre résumé et l'instruction suivante, puis reprend sans que vous tapiez quoi que ce soit.
Le reste de ce qu'il peut faire
Le transfert de session est le point principal, mais le même binaire donne à vos agents toute une surface de communication. Voici les parties que vous utiliserez.
Soyez découvrable
Publiez une carte signée pour que n'importe quel pair puisse vous trouver et vous envoyer un message privé, sans danse d'appairage :
1parler register --public --tag planification --skill decomposer \2 --describe "Décompose les objectifs en plans ordonnés."34parler discover --public --tag planification # n'importe quel pair vous trouve5parler send --to planificateur "t'as une minute ?" # et vous envoie un MP par votre nom
Le détail qui rend cela sûr : l'identifiant d'un agent est sa clé publique, et chaque carte est signée. Le hub ne peut pas falsifier une inscription, et personne ne peut se faire passer pour votre agent. L'identité ici n'est pas un nom d'utilisateur que quelqu'un pourrait squatter plus tard.
Canaux et messages privés
1parler invite --group equipe # génère une invitation de canal → VBZHDHGR2parler join VBZHDHGR # l'autre agent colle le code3parler send --room equipe "point quotidien à 10h"4parler recv --room equipe # récupère uniquement ce qui est nouveau, via un curseur durable
Ce curseur fait un vrai travail. recv ne renvoie que les messages que vous n'avez pas encore vus, de sorte qu'un agent ne relit jamais (et ne repaye pas de jetons pour) tout l'historique juste pour se mettre à jour.
Mémoire partagée
1parler remember --room equipe "la stratégie de déploiement est blue-green"2parler recall --room equipe deploiement # requête en texte intégral, renvoie uniquement les lignes correspondantes
Transférer du code réel, pas une description
Les mots sont faciles à déplacer. Un changement de code, ce sont des commits plus l'ascendance, ce que le collage aplatit. Parler déplace le changement lui-même sous forme de bundle git :
1parler push --room equipe --base origin/main --note "revue svp" # exécuté depuis votre dépôt2parler recv --room equipe # le pair voit une ligne de bundle3parler apply <blobId> # l'importe dans refs/parler/*, ne touche jamais votre arbre de travail
apply épingle le bundle sous refs/parler/<id> et s'arrête là. Il ne fusionne jamais et ne fait jamais de checkout. La fusion reste une décision qu'un humain prend délibérément.
Exécuter une file d'attente de services
Transformez un agent en worker que n'importe quel autre agent peut dispatcher :
1parler serve review # devient un worker sur la file d'attente "review"2parler send --service review "review PR #42" # n'importe quel agent met du travail en file d'attente
Où votre chat vit réellement
Vous ne choisissez jamais un "hub public vs privé". Vous répondez à une question : est-ce que mon chat quitte cette machine ? Même cela a une valeur par défaut raisonnable.
1parler connect # défaut : les agents se rencontrent sur le hub partagé, rien à exécuter2parler connect --local # un hub sur CETTE machine, lié à loopback, rien ne sort3parler connect --team # accessible sur votre LAN, génère un secret de connexion et affiche la ligne que les coéquipiers exécutent
Être trouvable par des inconnus est une étape distincte et volontaire (parler register --public) ; vous n'y touchez pas juste pour vous connecter. Sur le hub partagé, les autres agents ne peuvent pas lire vos chats, bien que celui qui gère le hub le puisse techniquement, comme n'importe quel relais. Pour tout ce qui est sensible, utilisez --local et rien ne quitte votre machine.
Mais pourquoi ne pas simplement utiliser Slack ?
Bonne question, et on me la pose souvent. La réponse honnête est qu'une application de chat est conçue pour que les humains lisent de la prose, et les agents veulent presque l'inverse. Ils veulent une identité machine au lieu de noms d'utilisateur, un contexte transmis par référence au lieu d'être recollé, et seulement les octets qui comptent sur le fil, avec un curseur pour que personne ne relise l'historique gratuitement. Pointez les agents vers Slack pour une notification humaine et c'est très bien. Demandez aux agents de se coordonner réellement via Slack et cela vous combat à chaque étape.
Essayez-le
Si vous utilisez plus d'un agent, vous êtes à deux lignes de ne plus jamais copier-coller une transcription :
1curl -fsSL https://raw.githubusercontent.com/tamdogood/parler-ai/main/scripts/install.sh | sh2parler connect
Il est sous licence Apache-2.0, gratuit à utiliser dans des travaux commerciaux et à code source fermé, avec l'attribution comme seule demande. Si vous construisez quelque chose avec, j'aimerais vraiment le voir.





