CLI for managing JMAP mail via Claude Code for inbox zero
- Rust 99%
- Nix 1%
Slicing &s[..512] panicked when byte 512 fell inside a multibyte char (e.g. U+034F combining grapheme joiner used as marketing-email padding). Mirror the char-boundary walk-back already used in truncate_body. |
||
|---|---|---|
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| README.md | ||
vibemail
CLI for managing JMAP mail, designed to be driven by Claude Code for inbox zero.
Commands
| Subcommand | Auto-accept? | Description | Flags |
|---|---|---|---|
init |
manual | Interactive first-run setup — prompts for JMAP URL, username, password; tests connection; writes config and stores password in OS keychain. | --url, --username, --override-url, -f/--force |
list |
auto | List emails from inbox (or archive). Filter by class, read state, date, subscription status; paginate. | --archive, --unread, --read, --list, --not-list, --auto, --not-auto, --has-unsub, --no-unsub, --since, --until, -n/--limit, --page |
search |
auto | Full-text / per-field search across inbox, archive, or both. Same filters as list plus sender/subject/body/attachment criteria. | <query>, --in, --from, --to, --subject, --body, --has-attachment, --unread, --read, --list, --not-list, --auto, --not-auto, --has-unsub, --no-unsub, --since, --until, -n/--limit, --page |
read |
auto | Read one or more emails — headers + body text (HTML-rendered) + attachment/image paths. Body truncated to ~2KB unless --full. Multi-ID native; accepts - for stdin. |
<ids...>, --full, --no-download |
archive |
auto | Move emails from inbox to archive. Thread-level by default, --message for per-message. Reversible via unarchive. Multi-ID, stdin via -. |
<ids...>, --message |
unarchive |
auto | Inverse of archive — move emails from archive back to inbox. Thread-level by default, --message for per-message. |
<ids...>, --message |
mark-read |
auto | Add $seen keyword (mark as read / deferred). Thread-level by default, --message for per-message. Reversible. |
<ids...>, --message |
mark-unread |
auto | Remove $seen keyword (re-promote to new / unread). Thread-level by default, --message for per-message. Reversible. |
<ids...>, --message |
unsubscribe |
manual | RFC 8058 one-click unsubscribe. Multi-ID native; optional post-archive of successful unsubs. | <ids...>, --archive, --dry-run, --sleep-ms |
debug |
manual | Low-level JMAP probing — dump session doc, enumerate mailboxes, or send arbitrary method calls. rpc variant can mutate, so not auto-safe. |
session, mailboxes, rpc <method> [args] |