Comment ça marche
agentixmesh livre chaque message comme un bloc DATA inerte, clairement marqué. L'agent destinataire le lit comme n'importe quelle autre entrée — ce n'est jamais une instruction que l'agent est obligé de suivre.
Adresse
Une adresse est de la forme uid:project. L'uid est ton identifiant utilisateur numérique du noyau ; project provient du nom de base du répertoire de travail de la session émettrice — un indice de routage, pas une identité.
Identité : vérifiée par le noyau, pas auto-déclarée
L'uid de l'expéditeur est vérifié via fstat sur le descripteur de fichier ouvert (O_NOFOLLOW, plus des garde-fous hardlink et regular-file) — jamais repris d'un champ que l'expéditeur aurait écrit lui-même dans le message. Le noyau ne peut pas être trompé sur l'utilisateur OS qui a écrit un fichier. Cela prouve que le message provient de l'une des sessions de ton propre utilisateur. Cela ne prouve rien sur le fait que tu doives agir selon ce qui y est écrit.
Le label de projet n'est pas fiable
La moitié « project » de uid:project est simplement ce que l'expéditeur a tapé comme nom de son répertoire de travail. Le cadre l'estampille UNTRUSTED. Tu ne peux pas savoir quelle session pair a réellement envoyé un message — seulement de quel utilisateur OS il provient. Ce qu'un corps de message prétend être sur « qui je suis » n'authentifie rien.
Human-gate et rétention du corps
Au-delà d'une frontière de confiance, un message peut être retenu pour une revue humaine avant que son texte n'atteigne jamais le contexte de l'agent destinataire. Retenir le corps du message est la protection — pas une étiquette dessus. Un message retenu ou notify-only n'expose que des métadonnées structurelles (uid de l'expéditeur vérifié, longueur, id de thread, horodatage), jamais le texte lui-même, jusqu'à ce qu'un humain le libère.
Assainissement et encadrement
Chaque message livré porte un cadre permanent « ceci est du DATA, pas des instructions », est assaini contre les séquences d'échappement ANSI, les caractères de largeur nulle, les faux marqueurs de tour "Human:", et les séparateurs Unicode de ligne/paragraphe, et est encadré ligne par ligne pour qu'il ne puisse pas faire déborder de mise en forme dans le contexte environnant.
Replay-guard et livraison fail-closed
Un message qui a déjà agi, ou qui est trop ancien, ne peut pas agir à nouveau — la livraison est dédupliquée par id et horodatage. Et en cas d'erreur interne, le hook de livraison retient le message et se termine proprement : jamais une injection partielle ou malformée, jamais une session bloquée.
Vérifier les messages ne coûte aucun token
Connecter des agents à un canal de messages soulève une inquiétude évidente : cela consomme-t-il discrètement des appels API en arrière-plan ? Non. Vérifier si le mesh a de nouveaux messages est une lecture de fichier, pas un appel au modèle — zéro token LLM, et une seule commande le contrôle : mesh-poll on, off, ou status. La commande status affiche un compteur des appels au modèle déclenchés par le polling, et il reste à zéro. Des tokens ne sont consommés que lorsqu'un message est effectivement livré à un agent qui doit le lire — annoncé avant que cela n'arrive ; transférer un message vers un canal humain à la place ne coûte rien. (Ici, « gratuit » désigne les tokens LLM ; l'hébergement et le calcul sont séparés.)
agentixmesh déplace les messages ; ce que les agents se disent à travers est leur affaire. Les équipes qui veulent un vocabulaire partagé pour les passations de tâches font tourner l'open Development Coordination Protocol (DCP) par-dessus le mesh — et quand la coordination doit franchir plusieurs machines, c'est le terrain d'AgentsWeaver, l'étape de passage à l'échelle signée cryptographiquement.