Boogie
jmapcli · JMAP depuis le terminal
01.
v1.4.0 · macOS
Un client JMAP natif en ligne de commande.

JMAP en ligne de commande.

jmapcli parle JMAP à Stalwart (et à n'importe quel serveur JMAP) directement depuis votre terminal — envoyer, lire, rechercher, synchroniser, déplacer et gérer le courrier. Natif Swift, identifiants dans le Keychain macOS, sans télémétrie.

$ brew tap jasonhollis/boogie && brew install jmapcli $ jmapcli login # stockés dans le Keychain macOS $ jmapcli send --to you@example.com --subject "Hi" --body "From the CLI"
02.
— Section 2
Install
Homebrew

Une ligne. Signée.

2.1
Homebrew tap
brew tap jasonhollis/boogie && brew install jmapcli — un seul binaire signé, aucune dépendance à compiler. Mises à jour via brew upgrade.
— macOS
Apple silicon
2.2
Authentification Keychain
Les identifiants sont lus depuis le Keychain de connexion macOS par identité JMAP. Rien dans les dotfiles, rien dans les env vars.
— security
find-generic
2.3
Aucune télémétrie
L'outil ne contacte aucun serveur tiers. Le seul réseau qu'il touche est votre serveur JMAP.
— zero
SDKs
03.
— Section 3
Credentials
macOS Keychain

Votre mot de passe ne touche jamais le disque.

jmapcli ne conserve aucun secret sur le disque. Votre mot de passe (ou jeton bearer) réside dans le trousseau de connexion macOS ; le fichier de compte — ~/.config/jmapcli/config.json, mode 0600 — ne contient que l’URL du serveur, votre nom d’utilisateur et un indicateur par défaut. Vous découvrez le Trousseau depuis le terminal ? Le workflow complet tient en trois commandes security intégrées.

1 · Stocker un secret — et le relire. macOS vous invite à saisir la valeur, de sorte que le secret n’est jamais tapé en ligne de commande, affiché à l’écran ni écrit dans l’historique de votre shell.

# store it — you’re prompted for the secret, nothing echoes $ security add-generic-password -U -s jmap-password -a you@example.com -l "Boogie JMAP password" -w # read it back at any time $ security find-generic-password -s jmap-password -a you@example.com -w # remove it $ security delete-generic-password -s jmap-password -a you@example.com
-s
service — le nom que jmapcli recherche : jmap-password pour un mot de passe, ou jmap-token pour un jeton bearer (ex. Fastmail) ; ne renseignez que celui que vous utilisez.
-a
account — votre adresse e-mail (le même nom d’utilisateur que vous donnez à jmapcli).
-l
label — ce que vous verrez dans l’application Trousseau d’accès ; -U met à jour un élément existant en place.
-w
sans valeur — invite à saisir le secret. C’est ce qui l’empêche d’apparaître dans ~/.zsh_history et la liste des processus.

2 · Pointer jmapcli vers votre serveur. Enregistrez le compte une seule fois ; le secret est extrait directement depuis l’élément du Trousseau que vous venez de stocker, il n’apparaît donc jamais en ligne de commande.

$ jmapcli login --url https://mail.example.com --username you@example.com \ --password "$(security find-generic-password -s jmap-password -a you@example.com -w)" # token auth: swap --password for --token (and store under jmap-token above) $ jmapcli list # from here on, every command reads the Keychain for you
3.1
Rien dans votre historique, vos journaux — ni dans le contexte d’une IA
Une fois le secret dans le Trousseau, les commandes courantes (list, send, draft, sync) ne transportent jamais de mot de passe ; il ne peut donc pas être capturé dans ~/.zsh_history, une liste de processus ou des journaux CI. C’est ce qui rend jmapcli sûr à piloter depuis des outils d’IA en terminal — un agent reçoit un client JMAP, jamais votre secret.
— zsh
CI · agents
3.2
Rotation ou déconnexion
Vous avez changé votre mot de passe ? Relancez la ligne security add-generic-password … -w-U le remplace en place. Pour supprimer un compte, jmapcli logout efface en une seule étape l’entrée de configuration et le secret du Trousseau (--all supprime tous les comptes).
— rotate
logout
3.3
Par Mac, par conception
Le trousseau de connexion n’est pas synchronisé via iCloud — une limite délibérée, afin que votre mot de passe ne quitte jamais le Mac sur lequel vous l’avez saisi. Répétez l’étape security une fois par Mac ; config.json peut résider dans un dossier personnel synchronisé car il ne contient aucun secret.
— per
machine
04.
— Section 4
Commands
One verb each

Tout est une sous-commande.

login
Stocker les identifiants d'un serveur JMAP dans le Keychain
discover
Découvrir la session JMAP depuis le serveur
accounts
Lister les comptes configurés et chaque identité d'envoi
mailboxes
Lister toutes les boîtes aux lettres
list
Lister les courriels d'une boîte aux lettres
search
Rechercher dans le courrier par texte, objet, expéditeur, destinataire ou corps (côté serveur)
read
Afficher le contenu complet d'un courriel (rendu Markdown)
send
Envoyer un e-mail via JMAP Submission, depuis n'importe quelle identité d'envoi (--from)
reply
Répondre à un message par ID, en fil de discussion et en citant l'original
forward
Transférer un message par ID, en réattachant ses pièces jointes
draft
Préparer un e-mail dans Drafts sans l'envoyer
move · trash · delete
Déplacer vers une boîte aux lettres, mettre à la corbeille ou détruire définitivement par ID
sync
Effectuer une synchronisation delta et afficher les changements
contacts
Contacts JSContact : lister, ajouter, modifier, supprimer, importer des alias
calendar
Lister les agendas et événements, créer des événements, définir les couleurs d'agenda
sieve
Lister, récupérer, valider et envoyer les filtres Sieve côté serveur
alias
Gérer les alias de destinataires
mcp
Exécuter comme serveur Model Context Protocol pour l'outillage IA
logout
Supprimer les identifiants stockés
05.
— Section 5
Changelog
Every release

Nouveautés.

v1.4.0
Full-text search (text, subject, from, to, body); threaded reply and forward; draft — stage in Drafts without sending; multi-account: accounts and identities, and send/reply/forward as any sendable identity via --from; contacts import-aliases; faster multi-recipient sends. — 2026-06-24
v1.3.1
Calendar event write (add, edit, remove); offline-first hardening. — 2026-06-20
v1.3.0
JSContact contacts — read and write, with a lossless round-trip. — 2026-06-15
v1.2.0
Sieve filters — list, get, validate, and push server-side mail rules. — 2026-06-12
v1.1.0
Calendar — list calendars and events, set colours. — 2026-06-11
v1.0.0
Initial release — send, read, search, sync, and triage mail from the terminal, credentials in the macOS Keychain. — 2026-06-06
— Fait partie de Boogie

Vous voulez l'app complète ?

jmapcli est gratuit
l'app native Mail + Calendrier est sur l'App Store
KTP Digital Pty Ltd · ABN 85 648 755 980