NeoMutt: the patched-up Mutt for people who live in the terminal
✉️ Teaching an Old Dog New Tricks -- IRC: #neomutt on irc.libera.chat
At a glance
- What is it?
- NeoMutt is a community fork that collects years of Mutt patches into one maintained tree. It is a good fit if you already know Mutt or want a text-mode mail client you can script; it is a bad fit if you want defaults that work without reading a config file.
- Who is it for?
- Adopt NeoMutt if you already run Mutt, or you want a text-mode client with IMAP, Maildir, mbox, NNTP, POP3 and SMTP support that you configure by hand. Do not adopt it if you want a GUI, a setup wizard, or a client that behaves sensibly with an empty config file.
- Can I use it commercially?
- Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 9 days ago.
- What is it written in?
- Mainly C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 27, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What NeoMutt is, and the problem it was built to solve
NeoMutt describes itself as "a project of projects": a place to gather all the patches against Mutt, and a place for the developers to gather. That is the whole premise. Mutt had accumulated a large body of patches that were never merged upstream, and NeoMutt was created when Richard Russon gathered those patches, sorted through them, fixed them up, and documented them. The stated goal is to build community and reduce duplicated effort.
The audience follows from that. This is a client for people who already live in a terminal and already think in terms of mailboxes, header caches and format strings. It is written in C and links against ncurses. If you have never used Mutt, the value proposition here is not obvious, because NeoMutt does not try to be friendlier than Mutt. It tries to be Mutt with the long tail of useful patches already applied.
How the fork works: patches, features and the build tree
The repository is a normal C project with an autosetup-based build (auto.def, Makefile.autosetup, configure) and a source tree split by concern: imap/, pop/, nntp/, maildir/, mbox/, hcache/, notmuch/, ncrypt/, and so on. The features table in the README reads like a list of the patches that were folded in: account credentials from an external command, attachment header coloring by regex, a compose message preview, compressed folders, Notmuch tags and IMAP keywords as custom mailbox tags, encrypt-to-self, an LMDB header cache backend, a sidebar, TLS-SNI, a trash folder.
That list is the mechanism. NeoMutt is not a rewrite; it is an integration layer over Mutt's architecture, and each entry in the table is a behaviour you can turn on through configuration rather than a patch you apply yourself. The trade-off is that the feature set is uneven. Some entries are small conveniences (an expando for the author's initials, a progress bar on slow operations). Others change how mail is stored or indexed, such as the LMDB header cache or the Notmuch integration, and those are the ones that affect whether a build is worth it for you.
Installing NeoMutt and sending your first message
The README is explicit that NeoMutt may be packaged for your distribution, and that if it is not, it can be built from source, pointing at the build instructions and the distro page on neomutt.org. It does not print a single install command, so the honest first step is to check your package manager rather than copy a command from this article.
The README also lists where the project lives: source code at github.com/neomutt/neomutt, releases at the releases page, questions and bugs in the issue tracker, the website at neomutt.org, and IRC at irc://irc.libera.chat/neomutt. There are two mailing lists, neomutt-users and neomutt-devel, both subscribed by sending mail to the -request address with the subject subscribe.
Once installed, NeoMutt looks for configuration files. The project ships a large set of documented config options (the config/ and docs/ directories exist for exactly this), and the conventional entry point is a file such as ~/.neomuttrc. The README does not reproduce the option names, so the manual is where you look them up, and the contributed config in contrib/ is the closest thing to a worked example that the repository itself provides.
The configuration file is the product, and that is the main limitation
NeoMutt does not document a default configuration that works out of the box. The README's install section points at the distro page and the build instructions and stops there. Everything else is a config key you set yourself, and the feature table is effectively a menu of things you have to know you want before you can enable them.
That is a real failure mode for new users. A client that starts with no accounts configured is not broken, but it is indistinguishable from one, and the related searches around "neomutt setup", "neomutt config" and "neomutt tutorial" are the search traffic of people hitting exactly that wall. The second limitation is build variance: features such as Notmuch, LMDB and compressed folder support depend on how the package or your build was configured, so two machines running the same version string can behave differently. If you are debugging a missing capability, check the build options before you check your config.
A third constraint is scope. NeoMutt is a mail user agent. It reads and writes mail; it does not run a mail server, and the README gives no indication that it wants to.
Mutt vs NeoMutt, and where aerc fits
The difference between Mutt and NeoMutt is organisational more than architectural. NeoMutt is the place where Mutt patches were collected, fixed and documented, and where those developers gather. If you are already running Mutt with a stack of patches, NeoMutt is the same idea with the patches maintained in one tree. If you are running stock Mutt and it does what you need, moving gains you the feature table and costs you a migration of your config, because the option names and defaults are not guaranteed to be identical.
The comparison against aerc is a different axis. NeoMutt is a C ncurses client descended from Mutt, with a config language built around set commands and format strings. aerc is a terminal client of a later generation. The searches for "Neomutt vs aerc" and "neomutt vs alpine" are people trying to decide between terminal clients, and the honest answer from this repository is that NeoMutt's distinguishing asset is not its interface but the accumulated patch set and the years of Mutt documentation and community habits that come with it.
Licence, release cadence and what upgrades cost you
NeoMutt is released under the GPL v2+ (GNU General Public License), and the README points at LICENSE.md for the copyright statement. The practical consequence of the GPL for most users is that redistribution of modified builds carries source obligations. That is a statement about the licence text, not legal advice; if you ship a modified NeoMutt inside a product, read LICENSE.md and talk to someone qualified.
The release history shows a steady cadence: 20260616, 20260504 and 20260406, all dated in 2026, with the last push to main on 2026-09-21. Version numbers are dates, which makes it easy to see how far behind a distro package is. Upgrades are not free, though. Because configuration is explicit and option names have changed over the project's life, a jump across several releases can require editing your rc file. The ChangeLog.md and the release notes are the files to read before upgrading, and the README does not promise backward compatibility for every option.
Who should run NeoMutt, and who should not
Run it if you are comfortable in a terminal, you want IMAP, POP3, SMTP, NNTP, Maildir and mbox in one client, and you are willing to maintain a config file. The feature list is the argument: Notmuch search, PGP and Autocrypt support via ncrypt/ and autocrypt/, an LMDB header cache, a sidebar, compressed folders. Those are the things that keep people on Mutt-lineage clients instead of moving to a GUI.
Do not run it if you want an email client that works before you configure it, or if your mail is on a provider whose authentication quirks you would rather not debug in a terminal. Do not run it expecting a graphical interface; there is none. And do not assume every feature in the table is present in your binary. Check the build configuration first, then the config file, then the mailing list or IRC channel at #neomutt on irc.libera.chat, where the README warns that responses may take some time because the group is small.
Editorial conclusion
Adopt NeoMutt if you already run Mutt, or you want a text-mode client with IMAP, Maildir, mbox, NNTP, POP3 and SMTP support that you configure by hand. Do not adopt it if you want a GUI, a setup wizard, or a client that behaves sensibly with an empty config file. Before committing, check whether your distribution packages NeoMutt or whether you need to follow the build instructions, and confirm which of the listed features (Notmuch, LMDB header cache, compressed folders) your build actually enables.
Frequently asked questions
What are the differences between NeoMutt and Mutt?
NeoMutt was created when Richard Russon gathered the old Mutt patches, sorted through them, fixed them up and documented them, and the project exists as a place for those patches and their developers. So the difference is that NeoMutt ships the accumulated patch set as a maintained tree, not that it is a rewrite of Mutt.
How to set up NeoMutt?
The README says NeoMutt may be packaged for your distribution, and otherwise can be built from source following the build instructions on neomutt.org. After that, setup means writing a config file such as ~/.neomuttrc with your account details; the README itself does not walk through the options.
How to install NeoMutt?
Check your distribution's packages first, since the README states NeoMutt may be packaged for your distro and points at the distro page for instructions. If it is not packaged, the README directs you to build it from source.
Is NeoMutt safe?
The repository has a SECURITY.md file and the README lists a Coverity static analysis scan for the project, along with PGP, Autocrypt and TLS-SNI features. None of those are a guarantee, and the README makes no safety claim beyond pointing at the licence and the security file.
How to use NeoMutt?
NeoMutt is a terminal mail user agent: you run it, it shows an index of your mailboxes, and you read and compose mail inside the ncurses interface. Its behaviour comes from configuration options rather than defaults, so most of the work is in the config file.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/neomutt-neomutt)