Boogie
jmapcli · JMAP vanaf die terminaal
01.
v1.7.0 · macOS
'n Inheemse JMAP-opdraglynkliënt.

JMAP vanaf die opdraglyn.

jmapcli praat JMAP met Stalwart (en enige JMAP-bediener) reguit vanaf jou terminaal — stuur, lees, soek, sinkroniseer, skuif en bestuur pos. Inheemse Swift, geloofsbriewe in die macOS Keychain, geen telemetrie nie.

$ brew install boogie-digital/boogie/jmapcli $ jmapcli login # in die macOS Keychain gestoor $ jmapcli send --to you@example.com --subject "Hi" --body "From the CLI"
02.
— Section 2
Install
Homebrew

Een lyn. Onderteken.

2.1
Homebrew tap
brew install boogie-digital/boogie/jmapcli — 'n enkele ondertekende binêre lêer, geen afhanklikhede om te kompileer nie. Opgraderings via brew upgrade jmapcli.
— macOS
Apple silicon
2.2
Keychain-stawing
Geloofsbriewe word vanaf die macOS-aanmeld-Keychain per JMAP-identiteit gelees. Niks in dotfiles nie, niks in env vars nie.
— security
find-generic
2.3
Geen telemetrie
Die hulpmiddel bel niks huis toe nie. Die enigste netwerk wat dit raak, is jou JMAP-bediener.
— zero
SDKs
03.
— Section 3
Credentials
macOS Keychain

Jou wagwoord raak nooit die skyf nie.

jmapcli hou geen geheim op skyf nie. Jou wagwoord (of draerteken) leef in die macOS-aanmeld-Keychain; die rekeninglêer — ~/.config/jmapcli/config.json, modus 0600 — hou slegs die bediener-URL, jou gebruikersnaam en ’n verstekmarkering. Nuut by die Keychain vanaf die terminaal? Die hele werkstroom bestaan uit drie ingeboude security-opdragte.

1 · Stoor ’n geheim — en lees dit terug. macOS vra vir die waarde, sodat die geheim nooit op die opdragreël getik, op die skerm gewys of na jou shellgeskiedenis geskryf word nie.

# 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
diens — die naam wat jmapcli opsoek: jmap-password vir ’n wagwoord, of jmap-token vir ’n draerteken (bv. Fastmail); stel slegs die een in wat jy gebruik.
-a
rekening — jou e-posadres (dieselfde gebruikersnaam wat jy aan jmapcli gee).
-l
etiket — wat jy in die Keychain Access-program sal sien; -U werk ’n bestaande item op sy plek by.
-w
sonder waarde — vra vir die geheim. Dit is die deel wat dit uit ~/.zsh_history en die proseslys hou.

2 · Wys jmapcli na jou bediener. Registreer die rekening eenmalig; die geheim word regstreeks uit die Keychain-item wat jy pas gestoor het, getrek, sodat dit nooit op die opdragreël verskyn nie.

$ 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
# OAuth — no app password to create, copy, or rotate. # Your browser opens once; the token lands in the Keychain under jmap-oauth. $ jmapcli login --url https://api.fastmail.com --username you@fastmail.com --oauth # Stalwart — or any server that speaks RFC 8252 — same flag. $ jmapcli login --url https://mail.example.com --username you@example.com --oauth
3.1
Niks in jou geskiedenis, logs — of ’n KI se konteks nie
Sodra die geheim in die Keychain is, dra alledaagse opdragte (list, send, draft, sync) nooit ’n wagwoord nie, sodat dit nie in ~/.zsh_history, ’n proseslys of CI-logs vasgevang kan word nie. Dit is wat jmapcli veilig maak om vanuit terminaal-KI-gereedskap te bestuur — ’n agent kry ’n JMAP-kliënt oorhandig, nooit jou geheim nie.
— zsh
CI · agents
3.2
Roteer of teken uit
Het jy jou wagwoord verander? Voer die security add-generic-password … -w-reël weer uit — -U skryf dit op sy plek oor. Om ’n rekening te verwyder, verwyder jmapcli logout beide die konfigurasie-inskrywing en die Keychain-geheim in een stap (--all maak elke rekening skoon).
— rotate
logout
3.3
Per-Mac by ontwerp
Die aanmeld-Keychain word nie deur iCloud gesinkroniseer nie — ’n doelbewuste grens, sodat jou wagwoord nooit die Mac verlaat waarop jy dit getik het nie. Herhaal die security-stap eenmalig per Mac; config.json kan op ’n gesinkroniseerde tuisgids ry omdat dit geen geheim dra nie.
— per
machine
04.
— Section 4
Commands
One verb each

Alles is 'n subopdrag.

login
Stoor geloofsbriewe vir 'n JMAP-bediener in die Keychain
discover
Ontdek die JMAP-sessie vanaf die bediener
accounts
Lys gekonfigureerde rekeninge en elke stuurbare identiteit
identity
Lys elke stuurbare identiteit oor al jou rekeninge heen, en stel die vertoonnaam wat die bediener vir een daarvan wys.
mailboxes
Lys alle posbusse
list
Lys e-posse in 'n posbus
search
Soek pos op teks, onderwerp, van, aan, of inhoud (aan bedienerkant)
read
Wys volledige e-posinhoud (Markdown-gerender)
attachments
Lys 'n e-pos se aanhegsels, of stoor dit in 'n vouer
send
Stuur 'n e-pos via JMAP Submission, vanaf enige stuurbare identiteit (--from)
reply
Antwoord op 'n boodskap per ID, in die draad en met die oorspronklike aangehaal
forward
Stuur 'n boodskap per ID aan, met die aanhegsels weer aangeheg
draft
Berei 'n e-pos in Drafts voor sonder om te stuur
move · trash · delete
Skuif na 'n posbus, skuif na die Asblik, of vernietig permanent per ID
sync
Doen 'n delta-sinkronisering en wys wat verander het
contacts
JSContact-kontakte: lys, voeg by, wysig, verwyder, voer aliasse in
calendar
Lys kalenders en gebeurtenisse, skryf gebeurtenisse, stel kalenderkleure
sieve
Lys, haal, valideer en stoot Sieve-filters aan die bedienerkant
alias
Bestuur ontvanger-aliasse
mcp
Hardloop as 'n Model Context Protocol-bediener vir KI-gereedskap
logout
Verwyder gestoorde geloofsbriewe
05.
— Section 5
Changelog
Every release

Wat's nuut.

v1.7.0
Reply-To and display names: --reply-to sets a message's Reply-To on send, draft, reply and forward, staged drafts included, and replaces the sending identity's own Reply-To for that message. --to, --cc and --bcc now take Name <addr>, so "Jane Doe <jane@example.com>" goes out as a name and an address; a bare address is unchanged. — 2026-10-15
v1.6.0
Attachments: jmapcli attachments lists an email's attachments (index, name, type, size) and --save writes one or all of them to a folder, refusing to overwrite an existing file unless --force. The MCP server gains the same surface: mail.read now reports attachment metadata and the new mail.save_attachment tool writes one attachment to a local directory. — 2026-09-28
v1.5.0
OAuth login: jmapcli login --oauth is a first-class alternative to --password and --token, using loopback PKCE (RFC 8252) and dynamic client registration (RFC 7591). The token is held in the macOS Keychain under jmap-oauth. Verified against Fastmail and Stalwart; app-password and token login are unchanged. — 2026-09-01
v1.4.6
identity list (id, display name, email) and identity set --name to write the server Identity display name. Role aliases no longer have to be renamed via raw Identity/set. — 2026-08-24
v1.4.5
JMAP core from Boogie 1.4.5: Stalwart aliases now appear as send-as identities (accounts identities and send --from); send, contacts, and calendar library fixes from the 1.4.5 cycle. — 2026-08-24
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
— Deel van Boogie

Wil jy die volle app hê?

jmapcli is gratis
die inheemse Mail + Kalender-app is in die App Store
KTP Digital Pty Ltd · ABN 85 648 755 980