Search

Search IconIcon to open search

Neomd

Last updatedUpdated: by Simon Späti · CreatedCreated:

Neomd this is my way of implementing a email TUI based on my experience on Neomutt focus on Neovim (input) and reading/writing (Markdwon) and navigating, Vim Motions.

Reading emails with the speed of a key

Find a short rundown on YouTube:

# What is unique about Neomd?

The key here is speed in which you can navigate, read, and process your email. Everything is just a shortcut away, and instantly (ms not seconds). It’s similar to the foundations that Superhuman was built on: it runs on Gmail and makes it fast with vim commands.

With the HEY-Screener, you get only emails in your inbox that you screened in, no spam or sales pitch before you added them. Or don’t like them, just screen them out, and they get automatically moved to the “ScreenedOut” folder.

With the GTD approach, using folders such as next (inbox), waiting, someday, scheduled, or archive, you can move them with one shortcut. This allows you quickly to move emails you need to wait for, or deal with later, in the right category. Processing your email only once.

With the additional Feed and Papertrail, two additional features from HEY, you can read newsletters (just hit F) on them automatically in their separate tab, or move all your receipts into the Papertrail. Once you mark them as feed or papertrail, they will moved there automatically going forward. So you decide whether to read emails or news by jumping to different tabs.

# Core Features

Only a few of the features:

  • Markdown compose — write in $EDITOR (nvim default), send as multipart HTML + plain text
  • Attachments — via yazi or <leader>a in nvim; images inline, 1–9 to download
  • Preview emails including images.
  • Open HTML emails such as Substack or others with w3m
  • Multiple from addresses — SMTP-only aliases, cycle with ctrl+f
  • Glamour reading + Kanagawa theme — emails as styled Markdown, nvim palette
  • Markdown formatting with bold, links, and italic. Formatted in-line and code blocks, header h2, h3
  • Clever and sophisticated shortcuts to move or screen emails.

Find all at GitHub - ssp-data/neomd: A minimal email TUI where you read with Markdown and write in Neovim. · GitHub.

# How to Use

Read the details with all its shortcuts at GitHub.

# History

Find the full history at Twitter - inspired by seeing Email.md on HackerNews.

It’s fully Vibe Coded, I only omitted the taste with pointing it to all my tools and astetics, also showing it the code from open source tools.

# Inspiration

See inspirations for this project such as:

  • Neomutt — the gold standard terminal email client; neomd reuses its screener list format and borrows many keybindings
  • HEY — the Screener concept: unknown senders wait for a decision before reaching your inbox
  • hey-cli — a Go CLI for HEY; provided the bubbletea patterns used here
  • HEY-Screener in (Neo)Mutt: My way of using HEY screener in neomutt.
  • Newsboat — RSS reader whose O open-in-browser binding and vim navigation feel inspired neomd’s reader view
  • emailmd.dev — the idea that email should be written in Markdown
  • charmbracelet/pop — minimal Go email sender from Charm
  • charmbracelet/glamour — Markdown rendering in the terminal
  • Kanagawa — the color palette used for the inbox
  • msgvault — Go IMAP archiver; the IMAP client code in neomd is adapted from it

If you rather see the prompt, check out initial prompt and its plan.

# Roadmap

Some ideas in random order:

  • Showing and being able to attach files
  • Change A for switching account not a
  • cmd mode like vim wtih :
  • fix search? (e.g. find all keys that are shortcuts like above a, or disable shortcuts when searching?)
  • integrate Newsboat into Feed of my email? -> not great idea
  • Unread counts in folder tabs — e.g. Inbox (3)
  • having a signature when composing an email
  • d / u half-page scroll in reader (vim-style)
  • Reply-all — group reply to all original recipients
  • CC field in compose
  • Forward emailf key, pre-fills “Fwd: " subject with quoted body
  • Add an Attachment, quite important: the flow should be easy from within Neovim as this is the composer
  • choose sender in composer: setup gmail, hey, and others in one account to send - without need to switch account
  • highlight threads or conversations that are forth and back in a thread
  • Docs instad of readme.md?
  • better search: overall and keeping search when to apply multi command on search result
  • integration with contact or email - reading from screened_in list?
  • create a demo account for showcasing the features (e.g. neomd.demo@gmail.com)j
    • create a hostpoint demo account, as gmail is way slower… defeates neomd
    • when finished or restart
      • ./scripts/reset-demo.sh welcome screen
      • add or create truncates the screener lists (doesn’t delete them) and removes the welcome marker.
  • always on bcc in config.toml (if each email should be sent to your other email for example)
  • integrate Aspell (or any other spellchecker) into neomd - here someone integrated it into neomutt: Still loving the Micro Journal Rev.2 with Neovim—Chill writing session. : r/writerDeck

# Not priority right now

  • Background sync daemon — separate neomd-sync binary (or cron job) that runs IMAP fetch + screener headlessly, so the inbox stays clean even when neomd is closed; complement to the in-process 5-min tea.Tick sync already running while neomd is open

# Further Reads


Origin: Vibe coded after seeing Show HN: Email.md – Markdown to responsive, email-safe HTML | Hacker News