A fast, lightweight terminal email client for Resend inbound mail. Built with pure Python stdlib (no bloated dependencies).
- Terminal TUI — Full-featured curses interface for reading, composing, and managing emails
- CLI mode — Send, list, and read emails from the command line or scripts
- Markdown rendering — HTML emails rendered as clean markdown in the terminal
- Drafts & Sent — Local storage for drafts and sent messages
- Config management — Simple config file for API keys and preferences
- Zero dependencies — Uses only Python stdlib:
curses,urllib,json - Works offline — Compose and save drafts without internet
pip install inbox-pyRequires: Python 3.7+, Resend account
- Export your Resend API key:
export RESEND_API_KEY="re_xxxxxxxxxxxx"- Run:
inboxFirst run will ask for your domain and sender address. Config is saved to ~/.inboxpy.conf.
inboxKeys:
| Key | Action |
|---|---|
↑/↓ j/k |
Navigate emails |
Enter |
Open email |
PgUp/PgDn |
Scroll preview |
r |
Reply |
c |
Compose |
R |
Refresh |
s |
Sent folder |
D |
Drafts |
d |
Mark read |
? |
Help |
q |
Quit |
Compose Keys:
| Key | Action |
|---|---|
Tab / Shift+Tab |
Next / prev field |
Enter |
New line (in body) |
Ctrl+G |
Send |
Ctrl+D |
Save draft |
Esc |
Cancel |
List emails:
inbox listRead an email:
inbox read <email_id>Send email:
inbox send --to user@example.com --subject "Hello" --body "Your message"Pipe body from stdin:
echo "Email body" | inbox send --to user@example.com --subject "Test"Manage config:
inbox config # view
inbox config from_address=you@domain.com # setLocation: ~/.inboxpy.conf
from_address = you@domain.com
list_limit = 50
app_name = INBOX
Override with env vars:
export INBOX_CONFIG=~/.my_config
export INBOX_STATE=~/.my_state
export INBOX_DRAFTS=~/.my_drafts
export INBOX_SENT=~/.my_sentCC-BY-NC-SA 4.0 — See LICENSE file for details
