Boogie
jmapcli · JMAP från terminalen
01.
v1.4.0 · macOS
En inbyggd JMAP-kommandoradsklient.

JMAP från kommandoraden.

jmapcli talar JMAP med Stalwart (och vilken JMAP-server som helst) direkt från din terminal — skicka, läs, sök, synkronisera, flytta och hantera e-post. Inbyggd Swift, autentiseringsuppgifter i macOS Keychain, ingen telemetri.

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

En rad. Signerad.

2.1
Homebrew tap
brew tap jasonhollis/boogie && brew install jmapcli — en enda signerad binärfil, inga beroenden att kompilera. Uppgraderingar via brew upgrade.
— macOS
Apple silicon
2.2
Keychain-autentisering
Autentiseringsuppgifter läses från macOS inloggnings-Keychain per JMAP-identitet. Inget i dotfiles, inget i env vars.
— security
find-generic
2.3
Ingen telemetri
Verktyget ringer inte hem någonstans. Det enda nätverk det rör är din JMAP-server.
— zero
SDKs
03.
— Section 3
Credentials
macOS Keychain

Ditt lösenord rör aldrig disken.

jmapcli sparar inga hemligheter på disk. Ditt lösenord (eller bearer-token) lagras i macOS inloggnings-Nyckelring; kontofilen — ~/.config/jmapcli/config.json, läge 0600 — innehåller bara server-URL:en, ditt användarnamn och en standardflagga. Ny på att använda Nyckelringen från terminalen? Hela arbetsflödet består av tre inbyggda security-kommandon.

1 · Spara en hemlighet — och läs tillbaka den. macOS frågar efter värdet, så hemligheten skrivs aldrig på kommandoraden, visas inte på skärmen och sparas inte i din shellhistorik.

# 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 — det namn jmapcli slår upp: jmap-password för ett lösenord, eller jmap-token för ett bearer-token (t.ex. Fastmail); ange bara det du använder.
-a
account — din e-postadress (samma användarnamn du anger till jmapcli).
-l
label — vad du ser i appen Nyckelhanteraren; -U uppdaterar ett befintligt objekt på plats.
-w
utan värde — fråga efter hemligheten. Det är detta som håller den borta från ~/.zsh_history och processlistan.

2 · Peka jmapcli mot din server. Registrera kontot en gång; hemligheten hämtas direkt från Nyckelring-objektet du just sparade, så den visas aldrig på kommandoraden.

$ 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
Inget i din historik, loggar — eller en AI:s kontext
När hemligheten väl finns i Nyckelringen bär vardagskommandon (list, send, draft, sync) aldrig ett lösenord, så det kan inte fångas upp i ~/.zsh_history, en processlista eller CI-loggar. Det är det som gör jmapcli säkert att köra från terminal-AI-verktyg — en agent får en JMAP-klient, aldrig din hemlighet.
— zsh
CI · agents
3.2
Rotera eller logga ut
Har du bytt lösenord? Kör om raden security add-generic-password … -w-U skriver över det på plats. För att ta bort ett konto tar jmapcli logout bort både konfigurationsposten och Nyckelring-hemligheten i ett steg (--all rensar alla konton).
— rotate
logout
3.3
Per Mac — medvetet
Inloggnings-Nyckelringen synkroniseras inte via iCloud — en medveten gräns, så ditt lösenord aldrig lämnar den Mac du skrev in det på. Upprepa security-steget en gång per Mac; config.json kan ligga i en synkroniserad hemkatalog eftersom den inte innehåller någon hemlighet.
— per
machine
04.
— Section 4
Commands
One verb each

Allt är ett underkommando.

login
Lagra autentiseringsuppgifter för en JMAP-server i Keychain
discover
Upptäck JMAP-sessionen från servern
accounts
Lista konfigurerade konton och alla identiteter som kan skicka
mailboxes
Lista alla brevlådor
list
Lista e-post i en brevlåda
search
Sök i e-post efter text, ämne, avsändare, mottagare eller brödtext (på servern)
read
Visa fullständigt e-postinnehåll (Markdown-renderat)
send
Skicka e-post via JMAP Submission, från valfri identitet som kan skicka (--from)
reply
Svara på ett meddelande via ID, i tråden och med originalet citerat
forward
Vidarebefordra ett meddelande via ID och bifoga om dess bilagor
draft
Förbered ett e-postmeddelande i Drafts utan att skicka
move · trash · delete
Flytta till en brevlåda, flytta till Papperskorgen eller förstör permanent via ID
sync
Utför en delta-synkronisering och visa vad som ändrats
contacts
JSContact-kontakter: lista, lägg till, redigera, ta bort, importera alias
calendar
Lista kalendrar och händelser, skapa händelser, ange kalenderfärger
sieve
Lista, hämta, validera och skicka serverbaserade Sieve-filter
alias
Hantera mottagaralias
mcp
Kör som Model Context Protocol-server för AI-verktyg
logout
Ta bort lagrade autentiseringsuppgifter
05.
— Section 5
Changelog
Every release

Nyheter.

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
— En del av Boogie

Vill du ha hela appen?

jmapcli är gratis
den inbyggda e-post- + kalenderappen finns i App Store
KTP Digital Pty Ltd · ABN 85 648 755 980