Boogie
jmapcli · JMAP из терминала
01.
v1.7.0 · macOS
Нативный JMAP-клиент командной строки.

JMAP из командной строки.

jmapcli общается по JMAP со Stalwart (и любым JMAP-сервером) прямо из терминала — отправка, чтение, поиск, синхронизация, перемещение писем и управление ими. Нативный Swift, учётные данные в macOS Keychain, без телеметрии.

$ brew install boogie-digital/boogie/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 install boogie-digital/boogie/jmapcli — единый подписанный бинарник, без зависимостей для компиляции. Обновления через brew upgrade jmapcli.
— macOS
Apple silicon
2.2
Аутентификация через Keychain
Учётные данные читаются из macOS login Keychain по JMAP-идентичности. Ничего в dotfiles, ничего в env vars.
— security
find-generic
2.3
Без телеметрии
Инструмент никуда не отправляет данные. Единственная сеть, к которой он обращается, — ваш JMAP-сервер.
— zero
SDKs
03.
— Section 3
Credentials
macOS Keychain

Ваш пароль никогда не попадает на диск.

jmapcli не хранит никаких секретов на диске. Ваш пароль (или bearer-токен) хранится в macOS login Keychain; файл учётной записи — ~/.config/jmapcli/config.json, режим 0600 — содержит только URL сервера, имя пользователя и флаг по умолчанию. Впервые работаете с Keychain из терминала? Весь процесс состоит из трёх встроенных команд security.

1 · Сохраните секрет — и считайте его обратно. macOS запрашивает значение, поэтому секрет никогда не вводится в командной строке, не отображается на экране и не записывается в историю оболочки.

# 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 для пароля или jmap-token для bearer-токена (например, Fastmail); укажите только то, что используете.
-a
account — ваш адрес электронной почты (то же имя пользователя, которое вы указываете в jmapcli).
-l
label — название, которое вы увидите в приложении Keychain Access; -U обновляет существующий элемент на месте.
-w
без значения — запрос секрета. Именно это не позволяет ему попасть в ~/.zsh_history и список процессов.

2 · Укажите jmapcli ваш сервер. Зарегистрируйте учётную запись один раз; секрет извлекается напрямую из только что сохранённого элемента Keychain и никогда не появляется в командной строке.

$ 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
Ничего в истории, журналах — и в контексте ИИ
После того как секрет помещён в Keychain, повседневные команды (list, send, draft, sync) никогда не передают пароль, поэтому он не может быть перехвачен в ~/.zsh_history, списке процессов или журналах CI. Именно это делает jmapcli безопасным для работы с инструментами терминального ИИ — агент получает JMAP-клиент, но никогда не получает ваш секрет.
— zsh
CI · agents
3.2
Смена пароля или выход из системы
Изменили пароль? Повторно выполните команду security add-generic-password … -w — -U перезапишет его на месте. Чтобы удалить учётную запись, jmapcli logout одним шагом удаляет и запись конфигурации, и секрет из Keychain (--all очищает все учётные записи).
— rotate
logout
3.3
Привязка к Mac по замыслу
Login Keychain не синхронизируется через iCloud — это намеренное ограничение: ваш пароль никогда не покидает Mac, на котором вы его ввели. Выполните шаг с security один раз на каждом Mac; config.json можно хранить в синхронизируемой домашней папке, поскольку он не содержит секретов.
— per
machine
04.
— Section 4
Commands
One verb each

Всё — это подкоманда.

login
Сохранить учётные данные JMAP-сервера в Keychain
discover
Обнаружить JMAP-сессию с сервера
accounts
Показать настроенные учётные записи и все доступные для отправки идентичности
identity
Показывает все адреса отправителя во всех ваших учётных записях и задаёт отображаемое имя, которое сервер показывает для одного из них.
mailboxes
Показать все почтовые ящики
list
Показать письма в почтовом ящике
search
Искать почту по тексту, теме, отправителю, получателю или телу (на сервере)
read
Показать полное содержимое письма (рендеринг Markdown)
attachments
Показать вложения письма или сохранить их в папку
send
Отправить письмо через JMAP Submission от любой доступной идентичности (--from)
reply
Ответить на сообщение по ID, в треде, с цитированием оригинала
forward
Переслать сообщение по ID, повторно прикрепив вложения
draft
Сохранить письмо в Drafts без отправки
move · trash · delete
Переместить в ящик, переместить в Корзину или удалить навсегда по ID
sync
Выполнить дельта-синхронизацию и показать изменения
contacts
Контакты JSContact: список, добавление, правка, удаление, импорт алиасов
calendar
Показать календари и события, создавать события, задавать цвета календарей
sieve
Просмотр, загрузка, проверка и отправка серверных фильтров Sieve
alias
Управление псевдонимами получателей
mcp
Запустить как сервер Model Context Protocol для AI-инструментов
logout
Удалить сохранённые учётные данные
05.
— Section 5
Changelog
Every release

Что нового.

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
— Часть Boogie

Нужно полное приложение?

jmapcli бесплатен
нативное приложение Почта + Календарь доступно в App Store
KTP Digital Pty Ltd · ABN 85 648 755 980