CLI for managing JMAP mail via Claude Code for inbox zero
  • Rust 99%
  • Nix 1%
Find a file
Allison Bentley c82765621d
read: snap looks_like_html sample to char boundary
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.
2026-05-09 17:46:23 +01:00
src read: snap looks_like_html sample to char boundary 2026-05-09 17:46:23 +01:00
.gitignore Initial vibemail MVP 2026-04-18 14:54:35 +01:00
Cargo.lock unsub: strip whitespace from URLs to handle RFC 5322 line folds 2026-04-18 14:55:12 +01:00
Cargo.toml unsub: strip whitespace from URLs to handle RFC 5322 line folds 2026-04-18 14:55:12 +01:00
flake.lock Initial vibemail MVP 2026-04-18 14:54:35 +01:00
flake.nix unsub: strip whitespace from URLs to handle RFC 5322 line folds 2026-04-18 14:55:12 +01:00
LICENSE Initial vibemail MVP 2026-04-18 14:54:35 +01:00
README.md Initial vibemail MVP 2026-04-18 14:54:35 +01:00

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]