Skip to content
/ vero Public

Terminal-based email client built with Go and Charmbracelet TUI libraries

Notifications You must be signed in to change notification settings

saravenpi/vero

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📬 Vero

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.

Features

  • 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

Prerequisites

  • Go 1.23 or higher
  • An IMAP/SMTP email account

Installation

Quick Install

Install Vero with a single command:

curl -fsSL https://raw.githubusercontent.com/saravenpi/vero/master/install.sh | bash

This will install the binary to ~/.local/bin/vero. Make sure ~/.local/bin is in your PATH.

Build from Source

git clone https://github.com/saravenpi/vero.git
cd vero
go build -o vero .

Manual Install

Move the binary to your PATH:

sudo mv vero /usr/local/bin/

Or use go install:

go install

Configuration

Create 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)

Configuration Options

Account Settings (required):

  • email: Your email address
  • imap.password: IMAP password
  • imap.host: IMAP server hostname
  • imap.user: IMAP username (optional, defaults to email)
  • imap.port: IMAP port (optional, defaults to 993)
  • smtp.password: SMTP password
  • smtp.host: SMTP server hostname
  • smtp.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, or all; defaults to all)

Usage

Commands

vero              # Start the email client
vero version      # Show version information
vero help         # Show help message

Account Selection

If you have multiple accounts configured, Vero will first show an account selection screen. Choose which account to use, then access its sections.

Main Menu

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.

Inbox

  • 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 only
    • s - Show seen emails only
    • a - 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

Write Email

Follow the interactive prompts:

  1. To: Enter recipient email address (required)
  2. CC: Enter CC recipients (optional)
  3. Subject: Enter email subject (required)
  4. Body: Write your message
    • If editor is configured: Your external editor will open automatically
    • If not configured: Use the built-in text area (press Ctrl+D to finish)
  5. Attachments: Add files to attach (optional, press Enter without input to skip)
  6. Preview: Review your email
  7. Send: Press Enter to send or ESC to edit

Sent Folder

View all emails you've sent, stored locally as YAML files in ~/.vero/sent/.

Data Storage

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'

Architecture

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.

Development

Clone the repository:

git clone https://github.com/saravenpi/vero.git
cd vero

Create a ~/.vero.yml file with your accounts (see Configuration section).

Run in development:

go run .

Build:

go build -o vero .

Test:

go test ./...

Troubleshooting

"Command not found: vero"

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

"Connection failed"

  • 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

"No emails found"

By default, Vero shows unseen emails. Press:

  • u for unseen emails
  • s for seen emails
  • a for all emails

Uninstall

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 manually

This will remove the binary and all stored emails/configuration.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT

Author

saravenpi


Built with Go and Charmbracelet

Version: 2.0.0

About

Terminal-based email client built with Go and Charmbracelet TUI libraries

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published