La ligne de commande
Nécessite Solo ou TeamMis à jour 4 octobre 2026
mu, c’est Memoratu depuis un terminal. C’est un binaire unique qui dialogue avec https://api.memoratu.com en HTTPS et avec rien d’autre, comme les apps du téléphone, mais sans écran.
Avant de commencer
Nécessite Solo ou Team
L’installation de mu est gratuite et ouverte à tous. Pour l’utiliser avec votre compte Memoratu, il faut un forfait payant.
La ligne de commande est volontairement une fonctionnalité payante. La connexion crée un jeton CLI, et le serveur refuse d’en créer un avec le forfait gratuit : il répond plan_limit_exceeded et nomme le forfait et la fonctionnalité, au lieu de simplement dire non.
Ce dont vous avez besoin
- Un Mac avec Homebrew, pour l’installation en une ligne. Apple silicon et Intel sont tous deux pris en charge.
- Ou Linux, en
arm64ouamd64: la version contient une archive tar pour chacun, avec des sommes de contrôle publiées. - Un compte Memoratu avec un forfait payant, pour vous connecter.
Installation, pas à pas
Six commandes. Exécutez-les dans l’ordre, dans un terminal.
-
Installez
muSur un Mac, depuis notre tap Homebrew public :
brew install subbutgs/memoratu/muHomebrew ajoute la formule, télécharge le binaire et vous indique où il se trouve, quelque chose comme
/opt/homebrew/Cellar/mu/0.1.0.Sous Linux, téléchargez l’archive tar correspondant à votre architecture depuis la version v0.1.0, vérifiez-la avec
checksums.txtet placezmuquelque part dans votre$PATH. -
Vérifiez que ça marche
Vérifiez la version et l’API avec laquelle cette installation communique :
mu --versionVous devriez voir la version, le commit à partir duquel il a été compilé et l’URL de base :
mu 0.1.0 (commit 4aef1232, built 2026-10-03T16:50:02Z) API: https://api.memoratu.com -
Se connecter
Cette étape nécessite Solo ou Team
C’est la seule façon d’obtenir votre premier jeton : la connexion en crée un pour vous et l’enregistre dans le Trousseau macOS.
mu auth loginmuvous demande votre e-mail, puis votre mot de passe. Le mot de passe est toujours demandé à l’invite et n’est jamais accepté comme option, il n’arrive donc ni dans l’historique de votre shell ni dans la liste des processus.Il affiche ensuite le nom du jeton, sa date d’expiration (90 jours par défaut, et la valeur choisie est toujours affichée, jamais en silence) et les autorisations accordées. Il n’affiche pas le secret : il l’a déjà enregistré, inutile donc de vous le montrer.
Le jeton qu’il crée est volontairement restreint : lecture sur les projets, les listes et les jetons, et lecture, création, mise à jour et achèvement sur les tâches. Il ne peut ni créer ni révoquer d’autres jetons. Si une commande ultérieure est refusée avec
permission_denied, elle nomme l’autorisation exacte qui manque, et c’est simplement le comportement par défaut, conçu ainsi.Avec un forfait gratuit, c’est à cette étape que vous vous arrêtez. Le serveur refuse de créer le jeton et répond
plan_limit_exceeded, en nommant le forfait et la fonctionnalité. -
Capturez votre première tâche
C’est la commande qui compte. Une ligne, aucune configuration, sans avoir à choisir d’abord un projet :
mu add "call the client back"Elle arrive dans
Inbox, la liste permanente que possède tout compte.mugénère l’identifiant pour vous, sur votre machine, avant même que le serveur n’en entende parler, et affiche à la fois l’id et l’identifiant lisible, plus long.Added to Inbox · call the client back id 3f2b1a9c-7e2d-4b11-9c4a-6a1f2e9d7c3b identifier mem:todo:...:3f2b1a9c-7e2d-4b11-9c4a-6a1f2e9d7c3b -
Voyez ce que vous avez
Listez vos tâches :
mu todo listLes tâches terminées sont masquées par défaut ; les tâches ouvertes, annulées et déplacées s’affichent toujours. Ajoutez
--allpour tous les statuts, ou--status donepour les seules tâches terminées. Si vous comptez ou vérifiez plutôt que de regarder ce qu’il reste à faire, utilisez--all. -
Cochez-la
Passez l’id, ou seulement ses premiers caractères, à la manière de git :
mu todo done 3f2b1a9cUn préfixe court et unique fonctionne partout où un id est accepté. Moins de six caractères est refusé d’emblée, et un préfixe qui correspond à plusieurs tâches est refusé avec la liste de tous les candidats, sans deviner.
Voilà toute la boucle : capturer, lister, terminer. Tout ce qui suit n’est que détail.
Les commandes
Un résumé lisible. mu help <command> fait toujours foi pour une option : il est généré à partir de l’arbre de commandes lui-même, et ne peut donc pas se désynchroniser de l’outil.
| Commande | Ce qu’elle fait |
|---|---|
mu add "<title>" | Capture rapide. Arrive dans Inbox. |
mu todo list | Liste les tâches. Masque les tâches terminées sauf si vous passez --all. |
mu todo get <id> | Affiche une tâche en entier. |
mu todo done <id> | La marque comme terminée. |
mu todo reopen <id> | La rouvre. L’heure d’achèvement d’origine est conservée, pas effacée. |
mu todo rm <id> | Supprime une tâche. |
mu project add "<name>" | Crée un projet, le niveau au-dessus des listes. |
mu project list | Liste les projets. |
mu project rm <id> | Supprime un projet et tout ce qu’il contient. Irréversible. |
mu list add "<name>" | Crée une liste, dans un projet ou indépendante. |
mu list list | Liste les listes. Un * désigne Inbox. |
mu list rm <id> | Supprime une liste. Une liste non vide nécessite --delete-todos ou --move-to. |
mu auth login | Se connecte et crée le jeton de ce profil. |
mu auth status | Qui vous êtes, quel compte, quelles autorisations. mu whoami est la même commande. |
mu auth logout | Révoque le jeton de ce profil sur le serveur, puis le supprime en local. |
mu token list | Les jetons de ce compte, jamais un secret. Les jetons révoqués sont masqués sauf si vous passez --all. |
mu token create | Crée un jeton. Le secret n’est affiché qu’une seule fois. |
mu token revoke <id> | Révoque un jeton immédiatement. |
mu help | Toutes les commandes. mu help <command> donne les options et exemples d’une commande. |
mu exit-codes | Affiche la table des codes de sortie. |
Supprimer des éléments
mu project rm, mu list rm, mu todo rm et mu token revoke acceptent tous --dry-run, qui affiche ce qui se passerait sans rien modifier, et --yes, qui saute la confirmation. Sans --yes et sans terminal où poser la question, elles refusent plutôt que de deviner.
mu project rm affiche aussi une estimation de ce qui sera supprimé avant de demander, puis les totaux réels ensuite, et signale s’ils diffèrent.
mu project rm 7c9e6679-7425-40de-944b-e07fc1f90ae7 --dry-runPour les scripts et les agents IA
Un agent qui pilote un terminal est un utilisateur à part entière de Memoratu, par conception et non par accident.
Utilisez toujours --output json
Toutes les commandes le prennent en charge, et il renvoie la même structure que le serveur lui-même plutôt qu’un second vocabulaire inventé pour la CLI.
mu todo list --output jsonBranchez-vous sur error.code, jamais sur error.message : le message est de la prose en anglais destinée à une personne et peut être reformulé à tout moment. Le code, lui, est le contrat.
{"error": {"code": "plan_limit_exceeded", "message": "...", "detail": {"limit": "max_todos_per_list", "current": 50, "allowed": 50}}}detail nomme ce dont vous avez besoin pour agir : quelle autorisation manque, quelle limite a été atteinte, combien de temps attendre. Un code commençant par cli_ signifie que mu lui-même a refusé avant qu’aucune requête ne quitte votre machine, et n’est jamais l’un des codes du serveur.
Codes de sortie
Branchez-vous sur ces codes plutôt que sur le texte de stderr. mu exit-codes affiche la même table depuis l’outil lui-même.
| Code | Signification | Réessayer ? |
|---|---|---|
0 | Succès | — |
1 | Le serveur l’a refusé : validation, autorisation, introuvable, conflit, limite du forfait, limite de débit ou simple erreur 500 | Consultez error.code. server_error et rate_limited : en général oui, avec un délai croissant ; les autres non |
2 | Vous avez mal utilisé la commande. Décidé avant tout appel réseau | Non : l’échec sera identique |
3 | Impossible de joindre le serveur : DNS, refus, réinitialisation, TLS, délai dépassé | Oui, avec un délai croissant |
4 | Non authentifié : pas de jeton, ou le serveur l’a indiqué | Non : corrigez d’abord les identifiants |
Identifiants, pour un environnement sans trousseau
Définissez MEMORATU_TOKEN avec un secret déjà créé. Chaque commande le vérifie avant de toucher à un trousseau, et c’est la voie prise en charge pour la CI et pour un agent qui s’exécute là où il n’y a pas de trousseau.
export MEMORATU_TOKEN=mem_live_...Utilisez mu token create pour obtenir un secret que vous pouvez coller ailleurs : c’est tout son but, et il affiche le secret une seule fois. mu auth login ne le fait volontairement pas, car il a déjà enregistré celui qu’il a créé.
Un agent ne peut pas terminer mu auth login seul. Les invites exigent une entrée standard équivalente à celle d’un humain sur un vrai terminal. Si mu se termine avec 4 et que vous n’avez aucun jeton à définir, c’est le moment de demander à une personne : il n’y a pas de contournement, et c’est un choix délibéré, pas une lacune.
Deux choses à savoir avant de compter quoi que ce soit
mu todo listmasquedone, etmu token listmasque les jetons révoqués. Les deux filtres s’appliquent à l’identique avec--output json: ce n’est pas une différence de présentation. Passez--allquand vous auditez plutôt que de décider quoi traiter.- Toutes les commandes de liste paginent.
--limitet--offseten entrée ;limit,offsetettotalreviennent avec les éléments. Aucun endpoint ne renvoie jamais un ensemble non borné.
Profils et seconde machine
Un seul Mac, plusieurs comptes, chacun bien séparé.
mu auth login --profile workmu todo list --profile workChaque profil a sa propre entrée dans ~/.memoratu/config (l’URL de base et le format de sortie par défaut, jamais un secret) et son propre élément dans le Trousseau. --profile fonctionne n’importe où sur la ligne de commande, avant ou après la commande elle-même.
Se reconnecter sur le même profil révoque le jeton qui occupait l’emplacement de ce profil, nommé par son id dans la confirmation, et rien d’autre. Un jeton connecté sur une autre machine, ou sous un autre profil sur celle-ci, vit dans son propre emplacement et n’est jamais touché.
Pour réutiliser les mêmes identifiants sur une seconde machine, mu auth login --show-secret les affiche. Pour utiliser à la place un jeton déjà créé, --with-token en lit un depuis une invite ou un tube :
echo "$MY_TOKEN" | mu auth login --with-token