Boogie
jmapcli · टर्मिनल से JMAP
01.
v1.4.0 · macOS
एक नेटिव JMAP कमांड-लाइन क्लाइंट।

कमांड लाइन से JMAP।

jmapcli आपके टर्मिनल से सीधे Stalwart (और किसी भी JMAP सर्वर) के साथ JMAP बोलता है — मेल भेजें, पढ़ें, खोजें, सिंक करें, मूव करें और प्रबंधित करें। नेटिव Swift, क्रेडेंशियल macOS Keychain में, कोई टेलीमेट्री नहीं।

$ brew tap jasonhollis/boogie && brew install jmapcli $ jmapcli login # macOS Keychain में संग्रहीत $ jmapcli send --to you@example.com --subject "Hi" --body "From the CLI"
02.
— Section 2
Install
Homebrew

एक लाइन। हस्ताक्षरित।

2.1
Homebrew tap
brew tap jasonhollis/boogie && brew install jmapcli — एक एकल हस्ताक्षरित बाइनरी, कंपाइल करने के लिए कोई डिपेंडेंसी नहीं। अपग्रेड के लिए brew upgrade
— macOS
Apple silicon
2.2
Keychain प्रमाणीकरण
क्रेडेंशियल JMAP पहचान के अनुसार macOS लॉगिन Keychain से पढ़े जाते हैं। dotfiles में कुछ नहीं, env vars में कुछ नहीं।
— security
find-generic
2.3
कोई टेलीमेट्री नहीं
यह टूल किसी को कुछ रिपोर्ट नहीं करता। यह केवल आपके JMAP सर्वर से नेटवर्क संपर्क करता है।
— zero
SDKs
03.
— Section 3
Credentials
macOS Keychain

आपका पासवर्ड कभी डिस्क को नहीं छूता।

jmapcli कोई भी रहस्य डिस्क पर नहीं रखता। आपका पासवर्ड (या bearer token) macOS लॉगिन Keychain में रहता है; account फ़ाइल — ~/.config/jmapcli/config.json, mode 0600 — केवल सर्वर URL, आपका username और एक default flag रखती है। terminal से Keychain पर नए हैं? पूरा workflow तीन built-in security commands से होता है।

1 · एक secret store करें — और उसे वापस पढ़ें। macOS value के लिए prompt करता है, इसलिए secret कभी command line पर type नहीं होता, स्क्रीन पर नहीं दिखता, और न ही आपकी shell history में लिखा जाता है।

# 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 — वह नाम जिसे jmapcli देखता है: पासवर्ड के लिए jmap-password, या bearer token के लिए jmap-token (जैसे Fastmail); केवल वही set करें जो आप उपयोग करते हैं।
-a
account — आपका email पता (वही username जो आप jmapcli को देते हैं)।
-l
label — जो आप Keychain Access app में देखेंगे; -U किसी मौजूदा item को उसी स्थान पर update करता है।
-w
बिना किसी value के — secret के लिए prompt करें। यही वह हिस्सा है जो इसे ~/.zsh_history और process list से दूर रखता है।

2 · jmapcli को अपने सर्वर की ओर इंगित करें। account को एक बार register करें; secret सीधे उस Keychain item से लिया जाता है जो आपने अभी store की, इसलिए यह कभी command line पर नहीं आता।

$ 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
आपकी history, logs — या किसी AI’s context में कुछ नहीं
एक बार secret Keychain में आ जाए, तो रोज़मर्रा के commands (list, send, draft, sync) कभी पासवर्ड नहीं ले जाते, इसलिए इसे ~/.zsh_history, process listing या CI logs में capture नहीं किया जा सकता। यही jmapcli को terminal-AI tools से चलाने के लिए सुरक्षित बनाता है — एक agent को JMAP client मिलता है, आपका secret कभी नहीं।
— zsh
CI · agents
3.2
Rotate करें या साइन आउट करें
पासवर्ड बदल दिया? security add-generic-password … -w line फिर से चलाएं — -U इसे उसी स्थान पर overwrite करता है। किसी account को हटाने के लिए, jmapcli logout एक ही step में config entry और Keychain secret दोनों को delete करता है (--all हर account को clear करता है)।
— rotate
logout
3.3
डिज़ाइन के अनुसार प्रत्येक Mac के लिए अलग
लॉगिन Keychain iCloud के ज़रिए sync नहीं होता — यह एक जानबूझकर की गई सीमा है, ताकि आपका पासवर्ड उस Mac को कभी न छोड़े जिस पर आपने इसे type किया। security step को प्रत्येक Mac पर एक बार दोहराएं; config.json एक synced home folder पर रह सकता है क्योंकि इसमें कोई secret नहीं होता।
— per
machine
04.
— Section 4
Commands
One verb each

सब कुछ एक सबकमांड है।

login
किसी JMAP सर्वर के क्रेडेंशियल Keychain में संग्रहीत करें
discover
सर्वर से JMAP सेशन खोजें
accounts
कॉन्फ़िगर किए गए खाते और हर भेजने योग्य पहचान सूचीबद्ध करें
mailboxes
सभी मेलबॉक्स सूचीबद्ध करें
list
किसी मेलबॉक्स के ईमेल सूचीबद्ध करें
search
मेल को टेक्स्ट, विषय, प्रेषक, प्राप्तकर्ता या मुख्य भाग से खोजें (सर्वर-साइड)
read
पूर्ण ईमेल सामग्री दिखाएँ (Markdown-रेंडर)
send
किसी भी भेजने योग्य पहचान (--from) से JMAP Submission के ज़रिए ईमेल भेजें
reply
ID से किसी संदेश का उत्तर दें, थ्रेडेड और मूल को उद्धृत करते हुए
forward
ID से किसी संदेश को अग्रेषित करें, उसके अनुलग्नक फिर से जोड़ते हुए
draft
बिना भेजे किसी ईमेल को Drafts में तैयार रखें
move · trash · delete
किसी मेलबॉक्स में मूव करें, Trash में भेजें, या ID द्वारा स्थायी रूप से नष्ट करें
sync
डेल्टा सिंक करें और दिखाएँ क्या बदला
contacts
JSContact संपर्क: सूची, जोड़ें, संपादित करें, हटाएँ, उपनाम आयात करें
calendar
कैलेंडर और इवेंट सूचीबद्ध करें, इवेंट लिखें, कैलेंडर रंग सेट करें
sieve
सर्वर-साइड Sieve फ़िल्टर सूचीबद्ध करें, लाएँ, मान्य करें और पुश करें
alias
प्राप्तकर्ता उपनाम प्रबंधित करें
mcp
AI टूलिंग के लिए Model Context Protocol सर्वर के रूप में चलाएँ
logout
संग्रहीत क्रेडेंशियल हटाएँ
05.
— Section 5
Changelog
Every release

नया क्या है।

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
— Boogie का हिस्सा

पूरा ऐप चाहिए?

jmapcli निःशुल्क है
नेटिव Mail + Calendar ऐप App Store पर है
KTP Digital Pty Ltd · ABN 85 648 755 980