Boogie
jmapcli · JMAP fra terminalen
01.
v1.7.0 · macOS
En indbygget JMAP-kommandolinjeklient.

JMAP fra kommandolinjen.

jmapcli taler JMAP med Stalwart (og enhver JMAP-server) direkte fra din terminal — send, læs, søg, synkroniser, flyt og administrer e-mail. Indbygget Swift, loginoplysninger i macOS Keychain, ingen telemetri.

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

Én linje. Signeret.

2.1
Homebrew tap
brew install boogie-digital/boogie/jmapcli — en enkelt signeret binær, ingen afhængigheder at kompilere. Opgraderinger via brew upgrade jmapcli.
— macOS
Apple silicon
2.2
Keychain-godkendelse
Loginoplysninger læses fra macOS login-Keychain efter JMAP-identitet. Intet i dotfiles, intet i env vars.
— security
find-generic
2.3
Ingen telemetri
Værktøjet ringer ikke hjem nogen steder. Det eneste netværk, det rører, er din JMAP-server.
— zero
SDKs
03.
— Section 3
Credentials
macOS Keychain

Din adgangskode rører aldrig disken.

jmapcli gemmer ingen hemmeligheder på disken. Din adgangskode (eller bearer-token) lever i macOS login-Nøgleringe; kontofilen — ~/.config/jmapcli/config.json, tilstand 0600 — indeholder kun server-URL'en, dit brugernavn og et standardflag. Ny til Nøglering fra terminalen? Hele arbejdsgangen er tre indbyggede security-kommandoer.

1 · Gem en hemmelighed — og læs den tilbage. macOS beder om værdien, så hemmeligheden skrives aldrig på kommandolinjen, vises ikke på skærmen eller skrives til din shell-historik.

# 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 navn jmapcli slår op: jmap-password for en adgangskode, eller jmap-token for et bearer-token (f.eks. Fastmail); angiv kun den, du bruger.
-a
account — din e-mailadresse (det samme brugernavn du giver jmapcli).
-l
label — hvad du vil se i appen Nøgleringsadgang; -U opdaterer et eksisterende element på stedet.
-w
uden værdi — beder om hemmeligheden. Det er dette, der holder den ude af ~/.zsh_history og proceslisten.

2 · Peg jmapcli mod din server. Registrer kontoen én gang; hemmeligheden hentes direkte fra det Nøglering-element, du netop gemte, så den aldrig vises på kommandolinjen.

$ 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
Intet i din historik, logs — eller en AIs kontekst
Når hemmeligheden er i Nøgleringen, bærer hverdagskommandoer (list, send, draft, sync) aldrig en adgangskode, så den ikke kan fanges i ~/.zsh_history, en procesoversigt eller CI-logs. Det er det, der gør jmapcli sikker at drive fra terminal-AI-værktøjer — en agent får en JMAP-klient, aldrig din hemmelighed.
— zsh
CI · agents
3.2
Roter eller log ud
Ændret din adgangskode? Kør security add-generic-password … -w-linjen igen — -U overskriver den på stedet. For at fjerne en konto sletter jmapcli logout både konfigurationsposten og Nøglering-hemmeligheden i ét trin (--all rydder alle konti).
— rotate
logout
3.3
Mac-specifik af design
Login-Nøgleringen synkroniseres ikke via iCloud — en bevidst grænse, så din adgangskode aldrig forlader den Mac, du tastede den på. Gentag security-trinnet én gang per Mac; config.json kan følge med en synkroniseret hjemmemappe, fordi den ikke indeholder nogen hemmelighed.
— per
machine
04.
— Section 4
Commands
One verb each

Alt er en underkommando.

login
Gem loginoplysninger til en JMAP-server i Keychain
discover
Find JMAP-sessionen fra serveren
accounts
Vis konfigurerede konti og alle afsender-identiteter
identity
Viser alle identiteter, du kan sende fra, på tværs af dine konti, og sætter det visningsnavn, som serveren viser for en af dem.
mailboxes
Vis alle postkasser
list
Vis e-mails i en postkasse
search
Søg i mail på tekst, emne, afsender, modtager eller indhold (serverside)
read
Vis fuldt e-mailindhold (Markdown-gengivet)
attachments
Vis en e-mails vedhæftninger, eller gem dem i en mappe
send
Send en e-mail via JMAP Submission fra enhver afsender-identitet (--from)
reply
Svar på en besked via ID, tråddelt og med citat af originalen
forward
Videresend en besked via ID, med dens vedhæftninger
draft
Gem en e-mail i Drafts uden at sende
move · trash · delete
Flyt til en postkasse, flyt til Papirkurv, eller destruer permanent via ID
sync
Udfør en delta-synkronisering og vis, hvad der er ændret
contacts
JSContact-kontakter: vis, tilføj, rediger, fjern, importér aliasser
calendar
Vis kalendere og begivenheder, opret begivenheder, sæt kalenderfarver
sieve
Vis, hent, valider og send Sieve-filtre til serveren
alias
Administrer modtageraliasser
mcp
Kør som Model Context Protocol-server til AI-værktøjer
logout
Fjern gemte loginoplysninger
05.
— Section 5
Changelog
Every release

Nyheder.

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

Vil du have hele appen?

jmapcli er gratis
den indbyggede mail- + kalender-app er i App Store
KTP Digital Pty Ltd · ABN 85 648 755 980