mandarıne

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 ?

Comparatif des deux modes d'interaction
CritèreMCPCLI
Pour quiUn assistant avec qui vous travaillez : Claude Code, Claude Desktop, tout client MCP.Un programme qui tourne sans vous : script, cron, CI, conteneur d'agent.
InstallationRien à installer : une commande dans Claude Code, ou une adresse dans Claude Desktop.Un binaire, en une commande (macOS, Linux, Windows).
ConnexionOAuth dans le navigateur. Aucune clé à copier.mandarine login sur un poste ; une clé d'API (MANDARINE_API_KEY) en CI.
Attendre la réponseL'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 pourFaire 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

Brancher Mandarine dans Claude Code
# dans votre terminal
$ claude mcp add --transport http mandarine https://mandari.ne/mcp

Puis, dans Claude Code : tapez /mcp, choisissez « mandarine », puis « Authenticate ».

Dans Claude Desktop

Paramètres › Connecteurs › « Ajouter un connecteur personnalisé ». Nom : Mandarine. Adresse :

Adresse du serveur MCP de Mandarine
# adresse du connecteur
https://mandari.ne/mcp

Ce 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

Installer la CLI Mandarine (macOS)
# dans un terminal
$ curl -fsSL https://mandari.ne/install.sh | sh
Installer la CLI Mandarine avec Homebrew (macOS)
# ou, avec Homebrew
$ brew install alva-do/tap/mandarine

Pas 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.

Connecter la CLI à Mandarine
# une fois par poste
$ mandarine login

Les commandes principales

Commandes principales de la CLI Mandarine
CommandeCe qu'elle fait
mandarine loginConnecter ce terminal, par le navigateur.
mandarine whoamiLe 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 9mAttendre 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 listLister les boards du workspace, avec leurs états : de quoi choisir où publier.
mandarine card listLister 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 --jsonSuivre 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 kitL'adresse du kit des cartes de ce déploiement, à sa version courante.
mandarine skill installInstaller le skill Mandarine pour Claude Code et Codex.
mandarine mcpLancer le serveur MCP local.
mandarine exit-codesLa table des codes de sortie, le contrat lu par les scripts.
mandarine pull <card>bientôtRécupérer les fichiers d'une carte.
mandarine search <text>bientôtChercher dans les cartes.
mandarine kit listbientôtLes 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.

La page de la question, question/index.html
<!-- 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.

Exemple de workflow GitHub Actions
# .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 :

Vérifier la signature de checksums.txt avec cosign
# 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.com

Vos 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.
La boucle de retours, en ligne de commande
# 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.

Installer le skill Mandarine
# après avoir installé la CLI
$ mandarine skill install

Vos agents ne sont jamais comptés.

Vous apportez vos agents et votre abonnement IA. Mandarine ne facture ni les agents ni leurs messages.

Clés, portées et journal