Skip to content

allisonhere/tidemail

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

235 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TideMail

Mail for people who live in a terminal.

TideMail keeps your accounts, message list, and reading pane on one screen. It speaks IMAP and SMTP, stores its cache on your machine, and gives the keyboard the good seat.

Need the full settings and shortcut reference? Open the setup and usage guide.

TideMail running in several terminal themes

_One inbox, several built-in themes.

Highlights

  • One view for every account. Read a unified inbox or open any account, folder, or label from the same three-pane screen.
  • Send from the right address. Pick an account from the compose From row. TideMail switches its SMTP settings, Drafts folder, From address, and signature with it.
  • Mail state stays in sync. Read state, stars, archive, move, and delete use IMAP. Changes made in Gmail or another client return to TideMail on sync.
  • A few seconds to change your mind. Press Ctrl+Z to stop a queued send or undo a pending delete, archive, or move.
  • Unsubscribe without hunting for a footer. Press Ctrl+U while reading to use the message's unsubscribe header or labeled unsubscribe link.
  • Compose your way. The standard editor supports text selection, the system clipboard, undo and redo, and word movement. You can switch on Vim motions and commands instead. Optional AI tools can summarize mail, proofread a draft, and build local filters from plain English.

Install

Linux and macOS builds are available for Intel and ARM machines.

curl -fsSL https://raw.githubusercontent.com/allisonhere/tidemail/main/install.sh | sh

You can also grab an archive from the latest release.

One screen, three useful panes

The left pane holds accounts and folders. The upper-right pane shows the current message list. The reading pane stays below it, so opening a message never hides the rest of your inbox.

Use j and k to move. Press Tab to cross panes. Hit ? whenever you forget a key. TideMail keeps the help screen inside the app and lets you search it.

A normal day in TideMail

  • Press s to sync the current mailbox. Press F to sync every folder.
  • Mark messages with Space, then archive, move, delete, or change read state as a group.
  • Press / to search the local message cache across accounts.
  • Use * for a server-backed star. The next sync picks up star changes from Gmail and other clients.
  • Open a message and press r to reply, f to forward, or Ctrl+U to use its unsubscribe header.

Delete, archive, and move wait six seconds before TideMail sends them to the server. Ctrl+Z restores the last queued action.

Compose with the right account

The From row becomes an account picker when you have more than one sender. TideMail uses the chosen account for SMTP, drafts, the From address, and its signature. Replies, forwards, and reopened drafts use the same picker.

To, CC, and BCC suggest saved contacts first. TideMail follows with addresses found in mail you have synced. You can manage contacts in the app and move them through vCard files.

TideMail saves the draft while you type. A sent message waits five seconds by default, which gives Ctrl+Z time to reopen it. Set the delay to 0 if you want mail to leave at once.

The standard compose editor supports Shift-selection, clipboard shortcuts, undo and redo, word movement, and Home/End. Turn Vim mode on in Settings if you prefer commands such as dw, dd, :w, and :q.

Mail state belongs to the server

Read state, stars, archive, move, and delete sync through IMAP. TideMail keeps a local SQLite cache for speed and search, then reconciles it with the server on sync. IMAP IDLE can nudge an inbox when new mail arrives; interval polling stays available for servers that need it.

Drafts live under the selected sender account. Sent messages use that account's SMTP settings. TideMail detects common Archive and Trash folder names, including Gmail labels.

Search, links, and attachments

Global search stays active while you move through results. The content pane can find text inside the open message, walk links, copy a visual selection, and save attachments to a folder you choose.

TideMail renders HTML mail as terminal text and does not load remote images. Full headers are one Ctrl+E away, with SPF, DKIM, and DMARC results called out in color.

Optional AI tools

Connect OpenAI, Claude, Gemini, or a local Ollama server if you want message summaries and a compose proofread. TideMail can also turn a plain-language mail rule into a local filter that runs without an AI call for each message.

AI stays off until you configure a provider.

Keys worth learning

Key Action
j / k Move down or up
Tab / Shift+Tab Move between panes or compose fields
Enter Open a message, folder, draft, or picker
c Compose
r / f Reply or forward from the reading pane
Space Select a message for a bulk action
a / m / d Archive, move, or delete
x Toggle read state for selected messages
* Toggle the IMAP star
/ Search messages
Ctrl+Z Cancel a queued send or undo a queued message action
Ctrl+U Unsubscribe while reading; cycle sender while composing
Ctrl+E Show or hide full headers
M / S / T Accounts, settings, or themes
: / Ctrl+P Command palette
? Searchable help
q Quit

First account

Press M, add your incoming and outgoing mail settings, then save with Ctrl+S. Gmail, Yahoo, and iCloud require an app password.

TideMail stores passwords and AI keys in libsecret on Linux or Keychain on macOS. If secret-tool is missing on Linux, TideMail falls back to ~/.config/tidemail/config.toml, so protect that file.

theme = "lavender-fields-forever"

[display]
send_delay_seconds = 5
compose_vim = true

[[account]]
name = "Personal"
imap_host = "imap.example.com"
imap_port = 993
imap_tls = true
smtp_host = "smtp.example.com"
smtp_port = 587
smtp_tls = true
user = "mira@example.com"
from = "Mira Chen <mira@example.com>"
signature = "Mira\nSent with TideMail"
sync_minutes = 5

Config lives at ~/.config/tidemail/config.toml. TideMail puts its SQLite cache at ~/.local/share/tidemail/mail.db unless XDG_DATA_HOME points elsewhere.

Build it

TideMail requires Go. Clone the repository, build, and run the binary:

git clone https://github.com/allisonhere/tidemail
cd tidemail
go build -o tidemail .
./tidemail

Run the test suite with:

go test ./...

Under the hood

Bubble Tea runs the application loop. Lipgloss handles terminal layout and color.

You can reuse two parts as standalone Go libraries:

  • ripple, the compose editor
  • tideui, the multi-pane TUI toolkit

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors