A fast, glamorous terminal-based email client built with Go and Charmbracelet TUI libraries. Read your emails and compose new ones directly from your terminal with an intuitive interface.
- Multiple Accounts: Manage multiple email accounts from a single interface
- Inbox Management: View and read emails from any IMAP-compatible server with filtering (unseen/seen/all)
- Email Composition: Write and send emails with an intuitive TUI
- External Editor Support: Use your favorite editor (nvim, vim, nano) to compose email bodies
- Attachment Support: Add files to your emails with path autocompletion
- Sent Folder: Browse your locally stored sent emails
- YAML Database: Emails are stored locally as YAML files for easy access
- Beautiful TUI: Built with Bubble Tea, Bubbles, and Lip Gloss
- Keyboard Navigation: Full keyboard control with vim-style bindings
- IMAP/SMTP Support: Works with any email provider that supports IMAP and SMTP
- Configurable: Customizable download folder, default inbox view, and editor preferences
- Go 1.23 or higher
- An IMAP/SMTP email account
Install Vero with a single command:
curl -fsSL https://raw.githubusercontent.com/saravenpi/vero/master/install.sh | bashThis will install the binary to ~/.local/bin/vero. Make sure ~/.local/bin is in your PATH.
git clone https://github.com/saravenpi/vero.git
cd vero
go build -o vero .Move the binary to your PATH:
sudo mv vero /usr/local/bin/Or use go install:
go installCreate a ~/.vero.yml file in your home directory with your email accounts:
# Email accounts configuration
accounts:
- email: your@email.com
imap:
user: your@email.com # Optional, defaults to email
password: your-password
host: imap.example.com
port: 993 # Optional, defaults to 993
smtp:
user: your@email.com # Optional, defaults to email
password: your-password
host: smtp.example.com
port: 465 # Optional, defaults to 465
# Add more accounts as needed
- email: work@company.com
imap:
password: work-password
host: imap.gmail.com
smtp:
password: work-password
host: smtp.gmail.com
# Optional global settings
editor: nvim # Optional: External editor for composing emails (nvim, vim, nano, etc.)
download_folder: ~/Downloads # Optional: Folder for downloading attachments (defaults to ~/Downloads)
inbox_view: all # Optional: Default inbox filter (unseen, seen, or all)Account Settings (required):
email: Your email addressimap.password: IMAP passwordimap.host: IMAP server hostnameimap.user: IMAP username (optional, defaults to email)imap.port: IMAP port (optional, defaults to 993)smtp.password: SMTP passwordsmtp.host: SMTP server hostnamesmtp.user: SMTP username (optional, defaults to email)smtp.port: SMTP port (optional, defaults to 465)
Global Settings (optional):
editor: External editor to use for composing email bodies (e.g.,nvim,vim,nano,emacs)- When set, the specified editor opens in a temporary file (like git commit messages)
- When not set, uses the built-in textarea editor
download_folder: Directory for saving email attachments (defaults to~/Downloads)inbox_view: Initial inbox filter (unseen,seen, orall; defaults toall)
vero # Start the email client
vero version # Show version information
vero help # Show help messageIf you have multiple accounts configured, Vero will first show an account selection screen. Choose which account to use, then access its sections.
After selecting an account (or if you only have one account), the main menu shows three sections:
- Inbox: View your emails
- Sent: Browse sent emails stored locally
- Write: Compose and send a new email
Use arrow keys (↑/↓) or vim keys (j/k) to navigate, Enter to select.
- Navigate: Use ↑/↓ or j/k to move through the email list
- View Email: Press Enter to read the selected email
- Filter Emails:
u- Show unseen emails onlys- Show seen emails onlya- Show all emails
- Back to List: Press ESC to return from email details
- Back to Menu: Press ESC from the list
- Quit: Press q or Ctrl+C
Follow the interactive prompts:
- To: Enter recipient email address (required)
- CC: Enter CC recipients (optional)
- Subject: Enter email subject (required)
- Body: Write your message
- If
editoris configured: Your external editor will open automatically - If not configured: Use the built-in text area (press Ctrl+D to finish)
- If
- Attachments: Add files to attach (optional, press Enter without input to skip)
- Preview: Review your email
- Send: Press Enter to send or ESC to edit
View all emails you've sent, stored locally as YAML files in ~/.vero/sent/.
Vero stores emails locally in ~/.vero/, organized by account:
~/.vero/
├── your@email.com/
│ ├── seen/ # Emails you've viewed
│ │ └── YYYY-MM-DD-HHMMSS-sender@email.yml
│ └── sent/ # Emails you've sent
│ └── YYYY-MM-DD-HHMMSS-recipient@email.yml
└── work@company.com/
├── seen/
└── sent/
Each email is stored as a YAML file with the following structure:
from: sender@example.com
subject: Email Subject
date: Mon, 01 Nov 2025 12:34:56 +0000
body: Email content...
timestamp: '2025-11-01T12:34:56.000Z'Vero is built with:
- Bubble Tea - TUI framework based on The Elm Architecture
- Bubbles - TUI components (text inputs, text areas)
- Lip Gloss - Terminal styling and layouts
- go-imap - IMAP client library
- go-smtp - SMTP client library
- go-yaml - YAML parser for local storage
Note: For Gmail, you'll need to use an App Password.
Clone the repository:
git clone https://github.com/saravenpi/vero.git
cd veroCreate a ~/.vero.yml file with your accounts (see Configuration section).
Run in development:
go run .Build:
go build -o vero .Test:
go test ./...Make sure the binary is in your PATH. You can either:
- Move it to
/usr/local/bin/:sudo mv vero /usr/local/bin/ - Or add the current directory to PATH
- Check your email credentials in
~/.vero.yml - Ensure your email provider allows IMAP/SMTP access
- For Gmail, use an App Password instead of your regular password
- Verify the IMAP/SMTP host and port are correct
By default, Vero shows unseen emails. Press:
ufor unseen emailssfor seen emailsafor all emails
To completely remove Vero from your system:
rm -rf ~/.vero
rm ~/.local/bin/vero # if installed with install.sh
# or
sudo rm /usr/local/bin/vero # if installed manuallyThis will remove the binary and all stored emails/configuration.
Contributions are welcome! Please feel free to submit a Pull Request.
MIT
Built with Go and Charmbracelet
Version: 2.0.0