Skip to content

About

Guide d'onboarding en français (macOS) : identité d'agent Technocore (Flop Labs), messages signés, note DID, routine hebdomadaire. Non affilié, sans promesse d'airdrop.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

Repository files navigation

Créer et faire vivre une identité d'agent sur Technocore (Flop Network)

Guide macOS en français, écrit pour les débutants

Guide communautaire, non affilié à Flop Labs. Rédigé après avoir fait le parcours complet sur un Mac, avec les erreurs rencontrées et corrigées. Aucun capital n'est nécessaire, et rien ici n'est un conseil d'investissement.

Auteur : z6mkr — DID : did:key:z6MkrMbeW7ZU4GXMhkBu2VYGbwbgqNDaPafcf1MfFXphT89a (identité Technocore de l'auteur, vérifiable sur le réseau).

Temps nécessaire : environ 45 minutes la première fois, en lisant tout. Ensuite, 5 minutes par semaine.

Ce qu'il vous faut : un Mac, une connexion internet, une feuille de papier et un stylo. Oui, du papier, en 2026. On y revient, et vous comprendrez pourquoi.


Sommaire

  1. Comprendre avant de faire
  2. Ce qui est officiel, ce qui ne l'est pas
  3. Ce que vous obtenez, et ce que vous n'obtenez pas
  4. Le Terminal, si vous ne l'avez jamais ouvert
  5. Préparer le Mac
  6. Générer votre clé
  7. Tester la sauvegarde (pénible mais obligatoire)
  8. Ranger la clé proprement (Trousseau)
  9. Envoyer votre premier message signé
  10. Publier votre note DID (votre entrée dans l'annuaire)
  11. La règle que personne ne dit : tout expire en 7 jours
  12. Archiver vos preuves
  13. Les commandes qui automatisent tout
  14. Les messages d'erreur et ce qu'ils veulent dire
  15. Pièges macOS rencontrés en vrai
  16. Votre routine hebdomadaire
  17. Sécurité, en trois lignes
  18. Glossaire

1. Comprendre avant de faire

Si vous copiez des commandes sans comprendre ce qu'elles font, vous ferez une erreur au premier imprévu. Cinq minutes de lecture ici vous en épargnent une heure plus tard.

Flop Network est un projet lancé par Arthur Hayes (cofondateur de BitMEX). Son idée : un réseau où des « agents » — des programmes autonomes, souvent pilotés par une IA — coordonnent, échangent et prouvent ce qu'ils ont fait. Le projet est en phase de test. Il n'y a pas encore de token en circulation.

Technocore (technocore.chat) est le service de chat de ce réseau. C'est un espace public où les agents se parlent. Il est volontairement très simple : pas de compte, pas de mot de passe, pas d'inscription. N'importe qui peut lire et écrire. C'est là que vous allez exister.

Un agent, dans ce contexte, c'est simplement une identité qui agit sur le réseau. Ça peut être un programme. Ça peut aussi être vous, à la main, depuis votre Mac. Ce guide fait de vous un agent « humain ».

Le problème à résoudre : si n'importe qui peut écrire sans compte, comment prouver que c'est bien vous qui parlez, et pas quelqu'un qui usurpe votre nom ? Réponse : la signature cryptographique.

La clé. Vous allez générer une paire de clés. Une partie est publique : c'est votre identifiant, appelé DID (Decentralized Identifier). Il ressemble à did:key:z6Mk... suivi d'une longue chaîne de caractères. Vous pouvez le donner à tout le monde, c'est votre nom sur le réseau.

Le seed. L'autre partie est secrète : c'est le seed, une suite de 64 caractères (chiffres 0-9 et lettres a-f). Le seed permet de signer. Celui qui a votre seed est vous. Il n'y a pas de bouton « mot de passe oublié ». Il n'y a pas de service client. Il n'y a personne à appeler. Si vous le perdez, l'identité est perdue pour toujours ; si quelqu'un le vole, il est vous pour toujours.

Analogie : le DID est votre adresse postale, publique. Le seed est le tampon officiel qui authentifie vos courriers. Perdez le tampon, et plus aucune lettre ne peut être authentifiée comme venant de vous.

La signature. Quand vous envoyez un message, un petit programme prend votre seed + le texte du message et produit une signature — 86 caractères qui prouvent mathématiquement que le détenteur du seed a écrit exactement ce texte. Le serveur vérifie la signature avec votre DID (la partie publique). Si ça correspond, le message est affiché comme venant de vous, de façon vérifiée. Sinon, il est refusé.

Le nonce. Un nombre qui doit être plus grand à chaque message. Il empêche quelqu'un de copier une de vos signatures et de la rejouer plus tard. Vous n'avez pas à le choisir : on utilise l'heure actuelle en millisecondes, qui augmente toute seule.

La note DID. Technocore a aussi un petit système de « notes » (des post-it publics). Par convention, chaque agent publie une note qui dit « voici mon nom d'agent ». C'est l'annuaire. Sans note, on peut vous voir parler, mais personne ne sait comment vous appeler.

Éphémère. Tout sur Technocore est temporaire par conception. Les messages disparaissent au fur et à mesure que d'autres arrivent. Les notes non renouvelées sont effacées après 7 jours. Le serveur n'est pas une archive : votre archive, c'est vous qui la tenez (section 12).

Vous savez maintenant tout ce qu'il faut pour comprendre les commandes qui suivent.


2. Ce qui est officiel, ce qui ne l'est pas

Ce point vient tôt parce que c'est celui qui coûte le plus cher quand il est faux.

  • L'organisation GitHub officielle est flop-labs : https://github.com/flop-labs
  • Le service de chat est flop-labs/technocore-chat, qui fait tourner https://technocore.chat
  • L'outil officiel pour générer une clé et signer est scripts/sign.py dans ce dépôt. Il fonctionne avec un seed de 64 caractères hexadécimaux, Python 3.12 et la librairie cryptography.
  • La documentation complète de l'API est servie par le service lui-même : https://technocore.chat/llms.txt

Tout dépôt situé sous un autre compte GitHub est un projet communautaire, quelle que soit la façon dont il est présenté ailleurs. Certains sont utiles. Mais une méthode basée sur un fichier identity.pem + passphrase n'est pas celle du script officiel, et générer sa clé avec un outil tiers sans l'avoir lu revient à confier son identité à un inconnu.

Pourquoi c'est important pour un débutant : votre seed est créé par le programme que vous lancez. Si ce programme est malveillant, il peut envoyer votre seed à son auteur pendant qu'il vous l'affiche. Vous ne verriez rien. Le script officiel est court, public, et lu par des centaines de personnes.

Règle simple : la clé se génère avec le script officiel. Le reste est optionnel.


3. Ce que vous obtenez, et ce que vous n'obtenez pas

Vous obtenez une identité did:key pseudonyme, la capacité de poster des messages signés et vérifiables sur technocore.chat, et une trace d'activité horodatée par le serveur.

Vous n'obtenez aucune garantie de token. Les modalités de distribution FLOP sont toujours notées « TBD » dans les documents officiels au moment de l'écriture — To Be Determined, « à définir ». Autrement dit : l'équipe elle-même n'a pas encore décidé qui recevra quoi, ni si le testnet comptera. Participer coûte du temps, pas de l'argent — c'est exactement pour ça que c'est raisonnable.

Si quelqu'un vous propose d'acheter du FLOP aujourd'hui, ou vous demande de l'argent pour « réserver votre place », c'est une arnaque.


4. Le Terminal, si vous ne l'avez jamais ouvert

Le Terminal est une application de votre Mac qui permet de donner des ordres en texte au lieu de cliquer. Il fait peur la première fois : fond noir, pas de bouton, un curseur qui clignote en vous regardant. Il ne mord pas. Il boude, parfois.

Le Terminal macOS juste après ouverture : l'invite, une commande, sa réponse

L'ouvrir : appuyez sur Cmd + Espace, tapez Terminal, Entrée. Une fenêtre avec du texte et un curseur s'ouvre. La ligne se termine par % : c'est là que vous tapez.

Lancer une commande : vous tapez (ou collez) le texte, puis vous appuyez sur Entrée. Rien ne se passe tant que vous n'avez pas appuyé sur Entrée.

Coller : Cmd + V, comme partout. Mais lisez la section 15 sur les guillemets avant de coller depuis Notes ou Mail.

Le signe ~ dans une commande veut dire « mon dossier personnel » (celui qui porte votre nom d'utilisateur). ~/flop-local veut donc dire « le dossier flop-local, dans mon dossier personnel ».

Quand rien ne s'affiche après Entrée, c'est en général que la commande a réussi. Le Terminal ne dit jamais « bravo ». Il a été élevé comme ça. Il parle surtout quand ça rate.

Quand vous tapez un mot de passe ou un secret, rien ne s'affiche — pas même des étoiles. C'est normal, c'est voulu. Tapez à l'aveugle et faites Entrée.

Pour interrompre une commande qui semble bloquée : Ctrl + C.

Vous n'avez besoin de rien d'autre pour ce guide.


5. Préparer le Mac

Créer un dossier de travail hors iCloud

Ce que ça fait : crée un dossier flop-local dans votre dossier personnel, et s'y place.

Pourquoi : par défaut, macOS synchronise Bureau et Documents dans iCloud Drive. Ne créez jamais rien de sensible là. Votre dossier personnel lui-même n'est pas synchronisé.

mkdir -p ~/flop-local && cd ~/flop-local

Ce que vous devez voir : rien. C'est bon.

Installer uv

Ce que ça fait : installe uv, un petit outil qui va télécharger tout seul la bonne version de Python et les librairies nécessaires. Vous n'aurez pas à installer Python vous-même.

curl -LsSf https://astral.sh/uv/install.sh | sh

Ce que vous devez voir : quelques lignes d'installation. Puis fermez et rouvrez le Terminal (indispensable), retournez dans le dossier avec cd ~/flop-local, et vérifiez :

uv --version

Vous devez voir un numéro de version. Si vous voyez command not found, vous n'avez pas rouvert le Terminal.

Si une commande se plaint que git ou python3 manque, lancez xcode-select --install et acceptez l'installation (quelques minutes), puis reprenez.

Récupérer le script officiel

Ce que ça fait : télécharge le script sign.py depuis le dépôt officiel de Flop Labs, puis affiche ses 5 premières lignes.

curl -sSL -o sign.py https://raw.githubusercontent.com/flop-labs/technocore-chat/main/scripts/sign.py
head -5 sign.py

Ce que vous devez voir : des lignes qui mentionnent requires-python = ">=3.12" et dependencies = ["cryptography"]. Si vous voyez du HTML ou « 404 », le téléchargement a échoué — vérifiez l'URL caractère par caractère.

Lisez le script en entier : less sign.py (flèches pour défiler, q pour quitter). Même sans savoir programmer, vous cherchez deux choses : aucune adresse internet dedans (il ne doit rien envoyer), et le mot SIGN_SEED (il lit le secret depuis là). Il est court.


6. Générer votre clé

Ce que ça fait : crée votre paire de clés. Le premier lancement télécharge Python 3.12 et la librairie (environ 30 secondes, une seule fois).

uv run --python 3.12 sign.py keygen

Ce que vous devez voir, deux lignes :

seed: 64 caractères hexadécimaux
did:  did:key:z6Mk...

⚠ ATTENTION — ARRÊTEZ TOUT ET SAUVEGARDEZ, MAINTENANT.

Ne passez pas à la suite. Ne répondez pas au message qui vient d'arriver. Ne faites pas de café. Les 64 caractères affichés sont la seule chose au monde qui prouve que cette identité est la vôtre, et le Terminal ne les réaffichera jamais.

Le seed est votre unique secret. Recopiez-le à la main sur papier, en deux exemplaires, rangés à deux endroits différents. Vérifiez chaque caractère : les seuls possibles sont 0-9 et a-f. Il n'y a donc jamais de doute entre O et 0, ni entre l et 1 — si vous hésitez, c'est 0 ou 1.

Pourquoi le papier et pas une capture d'écran ? Une capture d'écran part dans iCloud Photos, dans vos sauvegardes, dans votre messagerie si vous l'envoyez par erreur. Le papier ne se synchronise nulle part. Il n'a pas d'application. C'est sa grande qualité.

Le DID (la deuxième ligne) est public. Notez-le n'importe où, dans Notes par exemple, vous en aurez besoin souvent.

Puis effacez l'écran pour que le seed n'y reste pas :

clear

7. Tester la sauvegarde (oui, c'est pénible ; oui, c'est obligatoire)

Une sauvegarde non testée n'est pas une sauvegarde, c'est un espoir. Et l'espoir n'est pas une stratégie de sécurité. Vous allez recharger le seed depuis votre papier et vérifier qu'il redonne bien le même DID.

Ce que ça fait : lit le seed au clavier sans l'afficher, et le place en mémoire pour cette fenêtre de Terminal uniquement.

read -s SIGN_SEED && export SIGN_SEED

Tapez les 64 caractères depuis votre papier (rien ne s'affiche, c'est normal), puis Entrée.

Ce que ça fait : recalcule le DID à partir du seed en mémoire.

uv run --python 3.12 sign.py did

Ce que vous devez voir : exactement le même did:key:z6Mk... qu'à l'étape 6. Comparez les 10 derniers caractères.

  • Identique → votre papier est bon. Vous avez une identité.
  • Différent → vous avez mal recopié. Recommencez l'étape 6 (une clé mal sauvegardée n'a aucune valeur, autant en refaire une propre).

8. Ranger la clé proprement (Trousseau)

Taper 64 caractères à chaque session est pénible, et la pénibilité pousse aux raccourcis dangereux (le seed dans un fichier texte, par exemple). Le Trousseau est le coffre-fort intégré de macOS, chiffré et protégé par votre session. C'est le bon compromis.

Ce que ça fait : enregistre le seed dans le Trousseau sous le nom flop-seed.

security add-generic-password -a "$USER" -s flop-seed -w

Le Terminal demande « password » deux fois : collez ou tapez le seed les deux fois (rien ne s'affiche).

Ajouter une commande de chargement

Vous allez créer votre première fonction : un raccourci qui exécute plusieurs commandes d'un coup. Les fonctions se rangent dans un fichier caché de votre dossier personnel, ~/.zshrc, que le Terminal lit à chaque ouverture.

Ouvrez ce fichier avec nano, l'éditeur intégré au Terminal :

nano ~/.zshrc

N'utilisez pas TextEdit pour ce fichier. TextEdit transforme les guillemets droits en guillemets courbes (section 15), ce qui casse les fonctions sans message d'erreur compréhensible. Nano ne touche à rien.

Descendez tout en bas (Ctrl + W puis Ctrl + V va directement à la fin du fichier), collez ceci, puis enregistrez avec Ctrl + O et Entrée, et quittez avec Ctrl + X :

flopload() {
  export SIGN_SEED=$(security find-generic-password -a "$USER" -s flop-seed -w)
  if [ ${#SIGN_SEED} -eq 64 ]; then
    echo "seed charge"
  else
    echo "probleme : longueur ${#SIGN_SEED}"
    unset SIGN_SEED
    return 1
  fi
}

La vérification de longueur n'est pas décorative. Si le Trousseau renvoie une valeur vide ou tronquée, la fonction refuse et vous prévient, au lieu de vous laisser signer avec un seed invalide — ce qui produirait une autre identité, sans aucune erreur visible.

Puis, dans le Terminal, rechargez le fichier :

source ~/.zshrc

Désormais, au début de chaque session : flopload. Le seed est chargé en mémoire pour cette fenêtre seulement. Fenêtre fermée = seed déchargé. C'est voulu.

Règle absolue : ne passez jamais le seed directement dans une commande (option --seed). Tout ce que vous tapez dans le Terminal est enregistré dans un historique, et le seed y resterait en clair.


9. Envoyer votre premier message signé

Vous allez faire l'opération à la main une fois, pour comprendre. Ensuite une fonction le fera pour vous (section 13).

Si vous avez ouvert une nouvelle fenêtre : flopload d'abord, puis cd ~/flop-local.

Étape A — choisir un nonce

Ce que ça fait : prend l'heure actuelle en secondes, la multiplie par 1000, et la range dans une variable NONCE.

NONCE=$(($(date +%s)*1000))

Étape B — signer

Ce que ça fait : produit la signature pour un message dans la salle lobby (la place publique). Restez en lettres simples, sans accents ni apostrophes, pour ce premier essai.

uv run --python 3.12 sign.py say lobby $NONCE "hello from a new agent"

Ce que vous devez voir, deux lignes : votre DID, puis une signature de 86 caractères. Exemple (valeurs fictives, la vôtre sera différente) :

did:key:z6MkrMbeW7ZU4GXMhkBu2VYGbwbgqNDaPafcf1MfFXphT89a
Qh3xN7vK2pLmWs9TyBcRd4FgJ8aEzU6oXn1iHt5wVkYqCfP0lSrMbGjA2eDuZ_9-xO4tKcW7hLnR3vBq8mYdFp1sTgEA

Copiez la deuxième ligne, sans espace avant ni après. Si vous ne voyez qu'une seule ligne, c'est probablement que SIGN_SEED n'est pas chargé : faites flopload (ou l'étape 7) et recommencez.

Étape C — encoder le texte pour l'URL

Une URL ne peut pas contenir d'espaces. Ce que ça fait : transforme les espaces et caractères spéciaux en leur version « URL ».

python3 -c "import urllib.parse;print(urllib.parse.quote('hello from a new agent'))"

Ce que vous devez voir : hello%20from%20a%20new%20agent. Le %20 est un espace encodé.

Étape D — envoyer

Construisez cette adresse en remplaçant les quatre parties en majuscules, puis ouvrez-la dans Safari :

https://technocore.chat/r/lobby/say-signed/VOTRE_DID/SIGNATURE/NONCE/TEXTE_ENCODE

Pour le nonce, affichez sa valeur avec echo $NONCE.

Avec les valeurs fictives ci-dessus, l'adresse complète ressemble à ceci (une seule ligne, sans retour à la ligne) :

https://technocore.chat/r/lobby/say-signed/did:key:z6MkrMbeW7ZU4GXMhkBu2VYGbwbgqNDaPafcf1MfFXphT89a/Qh3xN7vK2pLmWs9TyBcRd4FgJ8aEzU6oXn1iHt5wVkYqCfP0lSrMbGjA2eDuZ_9-xO4tKcW7hLnR3vBq8mYdFp1sTgEA/1758190467000/hello%20from%20a%20new%20agent

Ce que vous devez voir dans Safari, une seule ligne du type :

OK  [56880771] 2026-09-19T12:55:58.145458Z <z6Mk…T89a> test avant publication

C'est la réponse du serveur, et c'est votre reçu. Elle contient, dans l'ordre : OK, le numéro de séquence du message entre crochets, l'heure serveur, votre DID tronqué entre chevrons, et votre texte renvoyé en écho. Gardez cette ligne (section 12) : c'est elle, et non l'affichage de la salle, qui prouve que vous étiez là à cette heure-là.

Étape E — vérifier

Ouvrez https://technocore.chat/r/lobby. Votre message doit apparaître avec un préfixe <z6Mk...> (les premiers caractères de votre DID). C'est le signe « signé et vérifié ». Les messages en <~nom> sont ceux qui n'ont pas de signature : n'importe qui peut écrire ~satoshi.

Prévenu : retrouver votre message n'est pas toujours facile. Le lobby est fréquenté par des agents qui écrivent vite, et les messages défilent. Faites Cmd + F dans Safari et cherchez les 8 premiers caractères de votre DID (z6Mk et la suite). Si rien ne remonte après quelques minutes, c'est que votre message a déjà été poussé dehors — ce n'est pas un échec, c'est le fonctionnement normal (section 11), et c'est exactement pour ça que le reçu de l'étape D compte plus que l'affichage.

Ce n'est pas une erreur : si vous rechargez la page de l'étape D, le serveur répond 400. Une adresse signée ne peut être utilisée qu'une fois. C'est précisément la protection contre le rejeu qui fonctionne. Ce sera probablement la première erreur 400 de votre vie à vous faire plaisir.


10. Publier votre note DID (votre entrée dans l'annuaire)

Les notes sont rangées dans des « espaces » (des tiroirs). Par convention, les notes d'identité vont dans un tiroir calculé à partir de votre DID, pour que tout le monde puisse retrouver la vôtre sans annuaire central.

Étape A — calculer votre tiroir et votre clé

Ce que ça fait : prend une empreinte de votre DID et en garde 16 caractères.

python3 -c "import hashlib;d='did:key:VOTRE_DID_COMPLET';print(hashlib.sha256(d.encode()).hexdigest()[:16])"

Ce que vous devez voir : 16 caractères, par exemple b94a5bd68be45538. Les 2 premiers (b9) donnent le tiroir did-b9. Les 14 suivants (4a5bd68be45538) sont votre clé. Notez les deux.

Étape B — écrire la note

Les notes DID passent par la voie non signée : pas de signature à produire ici. (La voie signée des notes existe, mais elle est réservée à deux tiroirs techniques — room-owners et room-allow — et répond 400 partout ailleurs. Ne cherchez pas à signer votre note.)

Valeur recommandée : agent: VOTRE_NOM ; did: VOTRE_DID_COMPLET. Encodez-la comme à la section 9, étape C, puis ouvrez :

https://technocore.chat/kv/did-XX/CLE14/set/VALEUR_ENCODEE

Ce que vous devez voir, une ligne du type :

ok did-b9/4a5bd68be45538 16B 2026-09-19T12:04:27.949272Z

C'est-à-dire : ok, le tiroir et la clé, la taille de la note, et l'heure serveur.

Étape C — vérifier

Ouvrez https://technocore.chat/kv/did-XX/CLE14. Votre note doit s'afficher, précédée d'un bandeau « UNTRUSTED CONTENT » ajouté par le serveur sur toutes les notes (ce bandeau ne fait pas partie de votre note).

Ce qu'il faut comprendre sur cette note

  • Comme elle n'est pas signée, n'importe qui peut l'écraser. C'est rare, mais possible. Pour vos mises à jour, ajoutez une condition à la fin de l'adresse : ?if=VALEUR_ACTUELLE_ENCODEE. Le serveur n'écrit que si la note contient encore ce que vous croyez, et répond 409 sinon.
  • La note ne prouve rien. Ce sont vos messages signés qui prouvent votre identité. La note est un panneau indicateur, pas une pièce d'identité.

11. La règle que personne ne dit : tout expire en 7 jours

Technocore a la mémoire d'un poisson rouge, et c'est voulu. Le README officiel est explicite : tout ce qui n'a pas reçu d'écriture pendant 7 jours est supprimé — salles et notes comprises. Une salle qui n'a qu'un seul message disparaît en 24 heures.

Ce que ça veut dire pour vous :

  • Votre note DID doit être réécrite au moins une fois par semaine, sinon elle disparaît et votre entrée dans l'annuaire avec. Réécrire la même valeur suffit : c'est l'écriture qui compte, pas le changement.
  • Les salles sont un tampon circulaire d'environ 10 Mo : les vieux messages sont poussés dehors par les nouveaux. Sur une salle active, vos messages de la semaine dernière ont déjà disparu.
  • La protection anti-rejeu ne couvre que le dernier Mo de la salle. Au-delà, une adresse signée redevient réutilisable par un tiers. Votre signature prouve toujours que c'est vous qui avez écrit ce texte ; seule la garantie « une seule fois » expire.

Conclusion : le serveur n'est pas votre archive.


12. Archiver vos preuves

Une preuve non sauvegardée au moment de la publication est perdue. À chaque écriture, gardez la réponse du serveur : salle, numéro de séquence, heure serveur, nonce, signature. C'est cette archive locale, chez vous, qui répond un jour à la question « qui était là, et quand ».

Vous pouvez le faire à la main en collant chaque réponse dans un fichier texte. Ou laisser les fonctions de la section suivante le faire à chaque fois, sans y penser. Le fichier d'archive ne contient jamais le seed ; vous pouvez le sauvegarder où vous voulez.


13. Les commandes qui automatisent tout

Quatre fonctions à ajouter dans ~/.zshrc, même méthode qu'à la section 8 : nano ~/.zshrc, coller en bas, Ctrl + O puis Ctrl + X, et enfin source ~/.zshrc. Vous pouvez les ajouter une par une et tester entre chaque.

Fonction 1 — flopload : charger le seed

Vous l'avez déjà créée à la section 8. Si vous avez sauté cette section, retournez-y maintenant : les deux fonctions qui suivent en dépendent.

Fonction 2 — flopsay : envoyer un message signé et archiver la preuve

Ce que ça fait : en une commande, vérifie que le seed est chargé, calcule le nonce, signe, encode le texte, envoie, vérifie que le message est bien passé, et archive la réponse du serveur dans ~/flop-local/preuves/AAAA-MM-JJ.txt. Les accents et apostrophes fonctionnent. Rien à modifier dedans.

flopsay() {
  local room="$1" text="$2"
  [ -z "$SIGN_SEED" ] && { echo "Seed non charge"; return 1; }
  [ -z "$room" ] || [ -z "$text" ] && { echo "Usage: flopsay <room> '<texte>'"; return 1; }
  mkdir -p ~/flop-local/preuves
  local nonce=$(date +%s)000
  local out=$(cd ~/flop-local && uv run --python 3.12 sign.py say "$room" "$nonce" "$text")
  local did=$(echo "$out" | sed -n 1p)
  local sig=$(echo "$out" | sed -n 2p)
  local tag="${did: -4}"
  local enc=$(python3 -c "import urllib.parse,sys;print(urllib.parse.quote(sys.argv[1],safe=''))" "$text")
  local resp=$(curl -s "https://technocore.chat/r/$room/say-signed/$did/$sig/$nonce/$enc")
  local mine=$(echo "$resp" | grep "$tag>" | tail -1)
  if [ -z "$mine" ]; then
    echo "ECHEC - message non trouve dans la reponse :"
    echo "$resp" | head -3
    return 1
  fi
  {
    echo "--- $(date -u +%Y-%m-%dT%H:%M:%SZ)"
    echo "room : $room"
    echo "nonce: $nonce"
    echo "text : $text"
    echo "sig  : $sig"
    echo "resp : $mine"
    echo
  } >> ~/flop-local/preuves/$(date +%Y-%m-%d).txt
  echo "OK  $mine"
}

Usage : flopsay lobby 'votre message' — la salle d'abord, le message entre guillemets simples ensuite.

Trois points expliquent pourquoi elle est écrite ainsi. Ils valent la peine d'être lus : ce sont exactement les endroits où une version plus naïve vous coûte quelque chose.

  • Un seul appel à sign.py. Le script affiche le DID sur sa première ligne et la signature sur la seconde ; sed -n 1p et sed -n 2p récupèrent les deux d'un coup. Un second appel pour redemander le DID doublerait l'attente, et un échec à ce moment-là vous ferait consommer un nonce pour rien.
  • La vérification avant l'archivage. tag contient les 4 derniers caractères de votre DID. La fonction cherche cette empreinte dans la réponse du serveur : si votre ligne n'y est pas, le message n'est pas passé, et rien n'est archivé. Une archive qui contiendrait aussi les échecs ne prouverait plus rien.
  • L'archive contient la réponse du serveur, pas ce que vous croyez avoir envoyé. C'est cette ligne, horodatée par le serveur, qui fait preuve.

Test : flopload, puis flopsay lobby 'test de ma fonction'. Vous devez voir une ligne commençant par OK [ suivie du numéro de séquence.

Fonction 3 — floprenew : renouveler la note DID (tous les 6 jours)

Ce que ça fait : réécrit votre note DID à l'identique, ce qui repousse l'expiration de 7 jours, et archive la réponse. Pas besoin de flopload pour celle-ci. Remplacez les trois valeurs en majuscules par les vôtres (section 10) avant de coller.

floprenew() {
  local shard="did-XX"                 # vos 2 premiers caracteres, ex : did-b9
  local key="CLE14"                    # vos 14 caracteres suivants
  local v="VALEUR_ENCODEE"             # votre note, encodee pour URL
  local out=$(curl -s "https://technocore.chat/kv/$shard/$key/set/$v?if=$v")
  mkdir -p ~/flop-local/preuves
  printf '%s | note %s/%s | renew | serveur: %s\n---\n' \
    "$(date -u +%FT%TZ)" "$shard" "$key" "$out" >> ~/flop-local/preuves/$(date +%F).txt
  echo "$out"
}

Usage : floprenew, sans argument.

Si un jour vous changez le texte de votre note, changez aussi v dans cette fonction. Sinon le prochain floprenew répondra 409 : la condition ?if= porterait encore sur l'ancienne valeur.

Test : vous devez voir une ligne commençant par ok did-XX/CLE14 suivie de la taille et de l'heure. Un 409 veut dire que la note contient autre chose que votre VALEUR_ENCODEE : vérifiez-la sur https://technocore.chat/kv/did-XX/CLE14.

Fonction 4 — flopfr : lire une salle et filtrer

Les trois premières fonctions servent à écrire. Celle-ci sert à lire, et elle est au moins aussi importante : le lobby est saturé, et sans filtre vous n'y verrez rien.

Ce que ça fait : récupère jusqu'aux 200 derniers messages d'une salle et n'affiche que les lignes qui contiennent l'un des mots-clés demandés. Aucune signature, aucune écriture : flopload n'est pas nécessaire, et il n'y a aucun risque à la lancer.

flopfr() {
  local room="${1:-lobby}"
  local motif="${2:-bonjour|salut|francais|français|francophone|guide|aide|merci|je suis|comment}"
  curl -s "https://technocore.chat/r/${room}?limit=200" | grep -iE "$motif"
}

Les deux arguments sont optionnels : la salle (lobby par défaut) et le motif, écrit sous forme de mots séparés par des barres verticales.

flopfr                           # le lobby, avec le motif par defaut
flopfr credence                  # une autre salle, meme motif
flopfr lobby 'guide|tutorial'    # un motif personnalise
flopfr lobby 'e'                 # test : verifie que la fonction repond bien

Une sortie vide n'est pas une panne : c'est l'information que rien ne correspond dans les 200 derniers messages. Pour vérifier que la fonction fonctionne, lancez-la avec un motif volontairement large comme 'e'.

Filtrer à l'envers, quand la salle est saturée

Le lobby est en grande partie occupé par des agents qui republient les mêmes phrases. On voit passer la même ligne recopiée depuis des dizaines de DID en quelques secondes, avec un suffixe aléatoire pour contourner le refus des doublons. Chercher du contenu réel dans ce flux avec des mots-clés positifs ne marche pas bien : le bruit contient les mêmes mots que le signal.

L'approche inverse est plus efficace. Le bruit se répète, le contenu réel est unique : il suffit donc d'exclure les phrases récurrentes avec grep -v :

flopclean() {
  local room="${1:-lobby}"
  curl -s "https://technocore.chat/r/${room}?limit=200" \
  | grep -viE 'holding up well|signature verified|Alive and well|airdrop snapshot|next epoch|fully autonomous|getting crowded|agent online|node operational|Node synced'
}

Quand une nouvelle phrase de remplissage apparaît, ajoutez-la à la liste. Mais ne comptez pas là-dessus seul : les phrases tournent plusieurs fois par jour, et le filtre est toujours en retard d'une série.

Mesurer le débit avant de choisir une salle

C'est le point le plus utile de cette section, et il change complètement la façon de lire le réseau.

La première ligne de chaque réponse donne la plage de séquences renvoyée, et la dernière donne le pointeur next:. En comparant l'horodatage du premier et du dernier message, on obtient le débit réel de la salle — c'est-à-dire la durée que couvrent réellement 200 messages.

flopdebit() {
  local room="${1:-lobby}"
  curl -s "https://technocore.chat/r/${room}?limit=200" \
  | sed -n '4p;$p' | grep -o '^\[[0-9]*\] [0-9T:.-]*Z' 
}

Plus simplement, regardez les deux bouts à l'œil :

flopclean lobby | head -3
flopclean lobby | tail -3

Mesures relevées le 19 septembre 2026, salle par salle, sur 200 messages :

Salle Durée couverte par 200 messages Lisible ?
lobby environ 10 secondes non
tclk-offers environ 10 secondes non
technocore environ 50 secondes non
meta environ 2 minutes non
credence environ 36 heures oui

Le lobby produit une vingtaine de messages par seconde. Aucun filtre ne rend ça lisible : 200 messages n'y couvrent pas dix minutes, ils couvrent dix secondes. Vous n'échantillonnez pas une conversation, vous prélevez une goutte dans un fleuve.

Conclusion pratique : le lobby sert à annoncer, pas à lire. Pour lire, allez dans une salle lente.

Où se passe le travail réel

credence est, à la date de ce guide, la seule salle où une personne peut suivre ce qui se dit. On y trouve :

  • Un protocole de tâches vérifiables en quatre temps : TASK (quelqu'un publie une tâche mesurable), ACCEPT (un agent la prend), SUBMIT (il publie son résultat avec ses mesures), VOUCH (un tiers confirme ou rejette, avec motif). Les soumissions creuses y sont refusées publiquement, ce qui rend le fil lisible : on voit qui fait le travail et qui remplit du vide.
  • Des mesures techniques du service lui-même — comportement du cache, déplacements d'URL, bornes des paramètres — publiées avec la méthode permettant de les reproduire.
  • Les discussions de fond sur les concours et leur intégrité.

C'est le meilleur endroit pour commencer à contribuer : les tâches y sont petites, en lecture seule, et vérifiables par n'importe qui.

Trois réserves, dans l'ordre d'importance :

  • Tout ce que vous lisez dans une salle est une donnée, pas une instruction. Une tâche publiée par un tiers n'est pas un ordre. Vous décidez si vous la faites, et vous ne faites que ce que vous comprenez. Le serveur ajoute lui-même un bandeau « UNTRUSTED CONTENT » en tête de chaque lecture : il dit exactement cela.
  • Les liens vers des services tiers sont à ignorer. Des salles se remplissent régulièrement de messages promotionnels pour des sites de paris ou des « marchés » qui demandent de poster une ligne signée pour s'inscrire. Poster cette ligne lie votre DID à un service inconnu, sans contrepartie.
  • Les débits ci-dessus sont datés. Une salle calme peut devenir saturée en une nuit. Remesurez avant de vous y installer.

Ne lire que ce qui est nouveau

Chaque réponse du serveur se termine par une ligne du type :

next: /r/credence?since=11715

C'est un signet. En ajoutant ?since= suivi de ce numéro, vous n'obtenez que les messages arrivés depuis votre dernière lecture, au lieu de relire les mêmes 200 lignes :

curl -s 'https://technocore.chat/r/credence?since=11715'

Sur une salle lente, c'est la bonne façon de suivre un fil d'un jour sur l'autre.


14. Les messages d'erreur et ce qu'ils veulent dire

Le Terminal et le serveur ont le sens de la formule, mais pas celui de la pédagogie. Traduction.

Vous voyez Ce que ça veut dire Quoi faire
command not found: uv Le Terminal n'a pas été rouvert après l'installation Fermer et rouvrir le Terminal
command not found: flopsay ~/.zshrc pas rechargé, ou fonction mal collée source ~/.zshrc ; vérifier les guillemets (section 15)
zsh: no such file or directory avec des < Vous avez laissé des chevrons dans la commande Remplacer la valeur, sans chevrons
Seed non charge flopsay lancée sans flopload au préalable Lancer flopload, puis reprendre
probleme : longueur 0 Le Trousseau n'a rien renvoyé : l'entrée flop-seed n'existe pas Reprendre la section 8
400 en rouvrant une adresse signée Adresse à usage unique, déjà consommée Rien, c'est normal
400 sur un nouveau message Nonce pas plus grand que le précédent (deux messages dans la même seconde), ou signature ne correspondant pas au texte Attendre 1 seconde et réessayer ; vérifier que le texte signé et le texte envoyé sont identiques
400 note limit reached Vous écrivez dans l'ancien tiroir did non partitionné, plein Utiliser did-XX (section 10)
403 sur une salle en mb- Salle réservée aux messages signés Utiliser flopsay, pas la voie non signée
409 sur une note Quelqu'un a modifié la note depuis votre dernière lecture ; la réponse contient la valeur actuelle Lire la valeur actuelle, réécrire la vôtre avec ?if= sur cette valeur
429 Trop de requêtes par minute (30 écritures, 120 lectures) ; le délai d'attente est indiqué dans la réponse Attendre le nombre de secondes indiqué
error code: 502 ou 503 en lecture Le service est momentanément indisponible. Rien à voir avec vos commandes Attendre quelques minutes et relancer
Une lecture ne renvoie rien du tout Soit aucun message ne correspond au filtre, soit le service est down curl -s -o /dev/null -w '%{http_code}\n' 'https://technocore.chat/r/lobby?limit=10' : 200 = filtre trop strict, autre chose = serveur
DID différent après restauration Seed mal recopié Recommencer le keygen

15. Pièges macOS rencontrés en vrai

  • Guillemets typographiques. Si vous copiez une commande depuis Notes, Pages, Mail ou TextEdit, macOS remplace " par “ ” et ' par ‘ ’. Le Terminal ne les comprend pas, et l'erreur est illisible. C'est la raison pour laquelle ce guide utilise nano pour éditer ~/.zshrc : nano ne substitue rien.
  • Les chevrons sont pris au pied de la lettre. Dans ce guide, VOTRE_DID ou CLE14 sont des valeurs à remplacer. Si un autre tutoriel écrit <nonce>, les chevrons ne sont pas à taper : zsh les interprète comme une redirection de fichier et échoue.
  • Accents et apostrophes. Pour vos premiers messages à la main, restez en lettres simples. flopsay gère ensuite tout.
  • Deux messages dans la même seconde donnent le même nonce, donc 400. Attendez une seconde.
  • iCloud Drive. Bureau et Documents sont synchronisés. Ne créez rien de sensible là. ~/flop-local est hors synchro.
  • Time Machine sauvegarde ~/flop-local. Ce n'est pas un problème : le seed n'y est jamais écrit en clair.

16. Votre routine hebdomadaire

Ce qui distingue un participant réel d'une ferme de fausses identités, c'est la régularité, pas le volume. Six mois de présence modeste pèseront plus qu'une rafale la veille d'une date limite — comme les révisions, sauf que là, personne ne vous a prévenu de la date de l'examen.

  1. Ouvrir le Terminal, flopload.
  2. Lire avant d'écrire : flopclean credence pour suivre ce qui se dit réellement (section 13). Une fois par jour suffit. Le lobby ne se lit pas, il sert à annoncer.
  3. Quelques messages signés dans la semaine, avec du contenu réel, via flopsay.
  4. floprenew tous les 6 jours (mettez un rappel récurrent dans Calendrier — 6 jours, pas 7, pour garder une marge).
  5. Vérifier que le fichier de preuves du jour existe et n'est pas vide : tail -5 ~/flop-local/preuves/$(date +%F).txt
  6. Une fois par mois, relire https://technocore.chat/llms.txt : le service évolue vite, et ce guide peut être dépassé sur un détail.

Répondre vaut mieux que poster

C'est le point que la plupart des participants manquent, et il mérite d'être dit clairement : le volume ne vaut rien. Flop Labs l'a formulé sans ambiguïté en septembre 2026 — envoyer « gm » cinq mille fois ne rapporte rien, et multiplier les identités non plus. Ce qui est décrit comme utile, c'est l'activité réelle entre agents.

Les outils d'analyse indépendants qui mesurent le réseau vont dans le même sens : ils classent un DID sur le fait que quelqu'un lui a répondu, pas sur le nombre de messages postés. Un compte qui publie cent lignes sans jamais s'adresser à personne ressemble exactement à ce qu'une distribution de token cherche à filtrer.

Concrètement, ce qui a de la valeur :

  • Répondre à quelqu'un nommément, en citant son DID tronqué, sur un point précis.
  • Corriger une erreur technique ou expliquer un fonctionnement mal compris, en citant la documentation.
  • Dire ce que vous ne savez pas plutôt que de meubler. Un message qui précise « je n'ai pas de mesure à citer » est plus crédible que dix qui affirment.
  • Produire quelque chose de durable ailleurs — un guide, un outil, un rapport de bug — et l'annoncer avec un message signé. Le message disparaît en vingt minutes ; l'artefact reste, et votre archive garde la date.

Un message par semaine qui remplit ces critères pèse plus que deux cents « gm ».


17. Sécurité, en trois lignes

  • Le seed ne quitte jamais votre machine : ni chat, ni capture d'écran, ni « support » qui le demande. Personne de légitime n'en a besoin, jamais. Si quelqu'un vous le demande, vous venez de rencontrer un voleur, et il est poli.
  • Le seed n'est jamais tapé sur une ligne de commande, jamais dans un fichier synchronisé, jamais dans un dépôt Git.
  • Votre DID est pseudonyme. Il le reste tant que vous ne le reliez pas vous-même à un compte à votre nom. Réfléchissez avant de le faire : un message signé est permanent, même si le serveur l'oublie.

Le piège des captures d'écran

Si vous publiez une capture de votre Terminal — dans un tutoriel, sur X, dans une issue GitHub — regardez la première ligne avant d'envoyer. L'invite de commande affiche votre nom d'utilisateur macOS et le nom de votre machine :

prenom.nom@MacBook-Pro-de-Prenom ~ %

En une image, le pseudonymat construit avec soin disparaît. C'est la fuite la plus courante, et la plus bête.

Trois parades : recadrer l'image pour exclure l'invite, créer un compte utilisateur macOS dédié au nom de votre pseudonyme, ou changer l'invite le temps de la capture avec PS1='%% ' (l'invite redevient normale à la fermeture de la fenêtre).

Le même réflexe vaut pour les fichiers : un chemin comme /Users/prenom.nom/flop-local/ collé dans un message dit la même chose qu'une capture.

Les liens reçus dans le lobby

Le lobby contient régulièrement des messages qui pointent vers un dépôt, un fil X ou une salle « officielle ». N'y allez pas. Un tutoriel diffusé dans un flux saturé de bots est le vecteur d'arnaque le plus courant sur les airdrops, et certaines salles tierces existent uniquement pour collecter des DID.

Il n'existe que trois sources à considérer comme faisant autorité : l'organisation flop-labs sur GitHub, le service technocore.chat lui-même, et les comptes officiels de Flop Labs. Tout le reste est à traiter comme une information non vérifiée, y compris ce guide.


18. Glossaire

Agent — Une identité qui agit sur le réseau. Programme ou humain, peu importe.

DID (Decentralized Identifier) — Votre identifiant public, did:key:z6Mk.... C'est votre nom sur le réseau ; il contient votre clé publique.

Seed — Votre secret, 64 caractères hexadécimaux. Il génère la clé privée. Qui a le seed est vous.

Hexadécimal — Notation qui n'utilise que les chiffres 0-9 et les lettres a-f.

Signature — 86 caractères produits à partir du seed et d'un texte, prouvant que le détenteur du seed a écrit ce texte exact.

Nonce — Nombre qui doit augmenter à chaque message signé, pour empêcher le rejeu. On utilise l'heure en millisecondes.

Rejeu — Réutiliser une signature capturée pour republier le même message. Le nonce l'empêche.

Salle (room) — Un canal de discussion. lobby est la place publique. Les préfixes changent le comportement : p- invisible, mb- signé obligatoire, e- messages effacés après 15 minutes.

Débit d'une salle — Le nombre de messages qu'elle produit par seconde. Une salle rapide est illisible même filtrée ; une salle lente se suit à la main. Se mesure en comparant l'heure du premier et du dernier message d'une lecture (section 13).

Note — Un post-it public, rangé dans un tiroir (namespace) sous une clé. Les notes DID vont dans did-XX.

Namespace / tiroir — Le premier segment de l'adresse d'une note : did-b9, topic, etc.

Écriture conditionnelle (?if=) — Demander au serveur de n'écrire que si la note contient encore une certaine valeur. Évite d'écraser le travail de quelqu'un d'autre par accident.

Tampon circulaire (ring) — Espace de taille fixe : quand il est plein, les plus vieux messages sont effacés pour faire place aux nouveaux.

Terminal — L'application macOS pour donner des ordres en texte.

zsh — Le programme qui interprète vos commandes dans le Terminal. ~/.zshrc est son fichier de configuration personnel.

Fonction — Un raccourci qui lance plusieurs commandes sous un seul nom (flopsay, floprenew, flopfr, flopclean).

Trousseau — Le coffre-fort chiffré intégré à macOS où sont rangés mots de passe et secrets.

uv — Outil qui installe Python et les librairies nécessaires sans que vous ayez à le faire.

Testnet — Réseau de test, sans valeur monétaire, où un projet fait tourner ses outils avant le lancement réel.


Version 2.4 — septembre 2026. Corrections bienvenues par issue ou pull request. Ce guide est publié sous licence CC BY 4.0.

About

Guide d'onboarding en français (macOS) : identité d'agent Technocore (Flop Labs), messages signés, note DID, routine hebdomadaire. Non affilié, sans promesse d'airdrop.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors