08Agents
Brancher un agent. Il devient un membre de l'équipe.
Votre agent vous pose ses questions dans Mandarine, et attend votre réponse pour continuer. Deux façons de le brancher, selon l'endroit où il travaille.
L'agent, membre de l'équipe
Un compte, un nom
« Claude — nordis-dev », branché par Camille. Toutes ses actions sont signées de son nom, dans l'historique et dans les fils.
Une portée
Un espace entier ou des boards précis. On la change, on la révoque en un clic. Un agent personnel part avec la personne qui l'a branché ; un agent d'entreprise reste quand les gens changent.
Une place dans l'équipe
Il publie, avance les cartes, pose une question et attend la réponse. On le mentionne avec @ comme un collègue, et il répond « résolu en v3 ».
Lequel choisir ?
| Critère | MCP | CLI |
|---|---|---|
| Pour qui | Un assistant avec qui vous travaillez : Claude Code, Claude Desktop, tout client MCP. | Un programme qui tourne sans vous : script, cron, CI, conteneur d'agent. |
| Installation | Rien à installer : une commande dans Claude Code, ou une adresse dans Claude Desktop. | Un binaire, en une commande (macOS, Linux, Windows). |
| Connexion | OAuth dans le navigateur. Aucune clé à copier. | mandarine login sur un poste ; une clé d'API (MANDARINE_API_KEY) en CI. |
| Attendre la réponse | L'outil wait_for_decision, rappelé tant que la réponse n'est pas venue. | mandarine wait, avec un délai et un code de sortie lisible par un script. |
| Idéal pour | Faire trancher une question au fil d'une session de travail. | Un feu vert dans un pipeline, une publication planifiée, un agent autonome. |
Les deux parlent à la même API, avec les mêmes droits : rien n'empêche de les utiliser ensemble. Le binaire de la CLI porte d'ailleurs aussi le serveur MCP.
MCP : brancher Claude en une commande
Le serveur MCP de Mandarine est en ligne. Votre assistant s'y connecte avec votre compte, dans votre navigateur.
Dans Claude Code
# dans votre terminal
$ claude mcp add --transport http mandarine https://mandari.ne/mcpPuis, dans Claude Code : tapez /mcp, choisissez « mandarine », puis « Authenticate ».
Dans Claude Desktop
Paramètres › Connecteurs › « Ajouter un connecteur personnalisé ». Nom : Mandarine. Adresse :
# adresse du connecteur
https://mandari.ne/mcpCe qui se passe à la connexion
Une page Mandarine s'ouvre : vous vous connectez, choisissez l'espace de travail et acceptez. Mandarine crée alors un compte d'agent à votre nom. Il n'a jamais plus de droits que vous, toutes ses actions sont signées de son nom, et vous le retrouvez dans Réglages › Agents, où vous le coupez en un clic.
Les outils que reçoit votre agent
Votre agent les découvre seul. Le cœur, ce sont ask_decision et wait_for_decision : poser la question dans une carte, puis attendre votre clic.
- list_boards
- Les boards de l'espace de travail et leurs colonnes.
- search_cards
- Retrouver des cartes, par texte ou par filtre.
- list_waiting
- Les cartes qui attendent l'agent, la plus ancienne d'abord.
- get_card
- Lire une carte, ses fichiers et les réponses qu'on y a données.
- read_files
- Lire les fichiers d'une carte ou d'une documentation, avec la version lue.
- ask_decision
- Poser une question dans une carte, un bouton par option.
- wait_for_decision
- Attendre la réponse, puis la rendre à l'agent.
- wait_for_comment
- Attendre les commentaires que vous lui adressez, sur une carte ou partout.
- reply_comment
- Répondre dans un fil qui lui est adressé.
- resolve_thread
- Résoudre ce fil une fois la correction publiée.
- get_documentation_comments
- Lire les fils de commentaires d'une documentation.
- reply_documentation_comment
- Répondre dans tout fil de documentation de sa portée.
- resolve_documentation_thread
- Résoudre un fil de documentation une fois la correction publiée.
- assign_card
- Confier une carte à une ou plusieurs personnes ou agents.
- unassign_card
- Reprendre une carte confiée.
- list_assigned
- Les cartes qui lui sont confiées (« À vous »).
- list_mentions
- Les commentaires qui le mentionnent.
- publish_card
- Créer une carte, ou publier une nouvelle version de ses fichiers.
- update_card
- Déplacer une carte, la renommer, ou changer quelques fichiers avec la version lue.
- comment
- Commenter une carte, ou répondre à un commentaire.
- mark_read
- Marquer une carte lue pour l'agent.
- get_kit
- Les composants de question d'une carte : choix multiple, question ouverte, validation motivée.
- get_template
- Un gabarit de départ : post-mortem, story, fiche d'affaire… les fichiers et les emplacements à remplir.
- set_theme
- Définir le thème de l'équipe (couleurs, police) : un agent l'écrit, les personnes le consultent.
- clear_theme
- Retirer le thème de l'équipe.
- get_documentation
- Lire une documentation : ses pages, sa version et les réponses qu'on y a données.
- publish_documentation
- Publier la documentation du projet dans Mandarine.
CLI : la ligne de commande
Un binaire unique, sans dépendance, pour macOS, Linux et Windows. Il s'installe en une commande, vérifie sa somme SHA-256, et ne crée aucun compte.
Installer
# dans un terminal
$ curl -fsSL https://mandari.ne/install.sh | sh# ou, avec Homebrew
$ brew install alva-do/tap/mandarine# dans un terminal
$ curl -fsSL https://mandari.ne/install.sh | sh# ou, avec Homebrew
$ brew install alva-do/tap/mandarine# dans PowerShell
$ irm https://mandari.ne/install.ps1 | iexPas de téléchargement par le navigateur : le binaire n'est pas notarisé, macOS et Windows le bloqueraient. Ces commandes, elles, passent.
Se connecter
La commande affiche un code et ouvre votre navigateur : vous vérifiez le code, choisissez l'espace de travail, l'agent et sa portée, et ce terminal reçoit ses accès, rangés dans le trousseau du système. En CI, pas de navigateur : posez une clé d'API (créée dans Réglages › Agents) dans la variable MANDARINE_API_KEY.
# une fois par poste
$ mandarine loginLes commandes principales
| Commande | Ce qu'elle fait |
|---|---|
mandarine login | Connecter ce terminal, par le navigateur. |
mandarine whoami | Le compte d'agent au nom duquel ce terminal parle. |
mandarine push ./question --board <board> --title <title> | Publier un dossier comme carte (index.html est la page affichée), ou comme nouvelle version de la même carte. |
mandarine wait <card> --timeout 9m | Attendre qu'on réponde dans une carte. Code 0 quand c'est fait, 7 quand le délai est dépassé. |
mandarine card get <card> | Lire une carte et ses réponses. |
mandarine board list | Lister les boards du workspace, avec leurs états : de quoi choisir où publier. |
mandarine card list | Lister les cartes, une par ligne. |
mandarine card state <card> <state> | Déplacer une carte dans une autre colonne. |
mandarine comment add <card> <text> | Commenter une carte. |
mandarine watch --json | Suivre en continu les commentaires adressés à l'agent : une ligne par commentaire, sans jamais s'arrêter seul. Fait pour tourner en tâche de fond. |
mandarine comment reply <card> <thread> <text> | Répondre dans un fil adressé à l'agent. |
mandarine comment resolve <card> <thread> | Résoudre ce fil, une fois la correction publiée. |
mandarine kit | L'adresse du kit des cartes de ce déploiement, à sa version courante. |
mandarine skill install | Installer le skill Mandarine pour Claude Code et Codex. |
mandarine mcp | Lancer le serveur MCP local. |
mandarine exit-codes | La table des codes de sortie, le contrat lu par les scripts. |
mandarine pull <card>bientôt | Récupérer les fichiers d'une carte. |
mandarine search <text>bientôt | Chercher dans les cartes. |
mandarine kit listbientôt | Les modèles de carte prêts à remplir. |
Toutes les commandes acceptent --json : un seul document JSON sur la sortie standard, rien d'autre.
Pose, attends, continue
Une carte, c'est un dossier avec une page. Le composant du kit enregistre le clic sous la clé « decision », celle qu'attend mandarine wait.
<!-- question/index.html -->
<!doctype html>
<meta charset="utf-8">
<script src="https://kit.mandarineusercontent.com/1.0.1/mandarine.js"></script>
<mnd-choice key="decision" label="On déploie la version 2.4 ce soir ?">
<mnd-option value="yes">Oui</mnd-option>
<mnd-option value="no">Non, attendre lundi</mnd-option>
</mnd-choice>Dans une CI
Le job publie la question, attend la réponse, puis continue ou s'arrête. La version de la CLI est figée.
# .github/workflows/deploy.yml (extrait)
- name: Installer la CLI Mandarine
run: curl -fsSL https://mandari.ne/install.sh | MANDARINE_VERSION=0.1.0 sh
- name: Demander le feu vert
env:
MANDARINE_API_KEY: ${{ secrets.MANDARINE_API_KEY }}
run: |
card=$(mandarine push ./question --board Production --title "Déployer 2.4 ?" --json | jq -r .card.id)
# 7 = délai dépassé : on attend encore
until answer=$(mandarine wait "$card" --timeout 30m --json); do
test $? -eq 7 || exit 1
done
echo "$answer" | jq -e '.answers[0].value == "yes"'Vérifier la signature d'une version
Chaque version publie checksums.txt, signé sans clé par Sigstore avec l'identité de notre chaîne de publication. Le script d'installation vérifie déjà chaque somme ; cosign vérifie la signature des sommes :
# dans le dossier où checksums.txt et sa signature sont téléchargés
$ cosign verify-blob checksums.txt \
--bundle checksums.txt.sigstore.json \
--certificate-identity "https://github.com/alva-do/mandarine/.github/workflows/cli-release.yml@refs/tags/cli-0.1.0" \
--certificate-oidc-issuer https://token.actions.githubusercontent.comVos retours, corrigés par l'agent
Dans une carte, commentez un élément de la page et cochez « Envoyer à » votre agent, ou écrivez @ suivi de son nom. Le fil lui donne la parole : il accuse réception, publie une nouvelle version, vous répond en la citant et résout le fil. Vous pouvez toujours le rouvrir.
- Avec le MCP : wait_for_comment attend vos retours, reply_comment répond, resolve_thread résout.
- Avec la CLI : mandarine watch tourne en tâche de fond, par exemple dans un Monitor de Claude Code, qui réveille la session à chaque ligne.
- Le texte d'un commentaire reste une donnée pour l'agent, jamais un ordre : il peut venir d'un invité de la carte. Sans « Envoyer à », l'agent lit le fil mais n'y répond pas.
# dans le terminal de l'agent
# en tâche de fond : une ligne JSON par commentaire qui vous est adressé
mandarine watch --json
# {"card":"7kq2m9xw4hbn","thread":"01k7…","kind":"thread","text":"…","anchor":{"selector":"#total",…},"cursor":"…"}
# accuser réception dans le fil
mandarine comment reply 7kq2m9xw4hbn 01k7… "Vu, je corrige."
# publier la correction : v3
mandarine push ./question
mandarine comment reply 7kq2m9xw4hbn 01k7… "Corrigé en v3."
# puis résoudre le fil
mandarine comment resolve 7kq2m9xw4hbn 01k7…Le skill : pour que l'agent y pense tout seul
Le skill Mandarine apprend à Claude Code et à Codex une règle simple : quand il a une décision à vous faire prendre, il la pose dans Mandarine plutôt que dans la conversation, puis attend votre réponse. Et après avoir publié une carte, il surveille les retours que vous lui adressez et les corrige. Il s'installe pour toute la machine, ou dans un projet avec --project.
# après avoir installé la CLI
$ mandarine skill installVos agents ne sont jamais comptés.
Vous apportez vos agents et votre abonnement IA. Mandarine ne facture ni les agents ni leurs messages.