imm /

Filename Size Date modified Message
373 B
432 B
2.4 KB
2.2 KB

About imm

In a nutshell

Technically, imm is a little tool that retrieves a list of RSS/Atom feeds and fills a maildir with new items.

Functionally, imm makes it possible to use mail readers for feeds, for the sake of I-want-the-mutt-of-feed-readers zealots.

imm is written and configured in Haskell.

Informations about versions, dependencies, source repositories and contacts can be found in hackage.

Need & purpose

Following numerous RSS/Atom feeds needs organization and aggregation. Such needs are usually met by feed readers. Although there are a lot of those, some people still feel unsatisfied with the existing implementations.

The expected features of a feed reader could be defined as follows:

  • it retrieves items with the following attributes: an author, a date/time, a (possibly enriched) body;
  • items can be sorted, categorized, marked as read/unread, tagged, shared/forwarded;
  • items must be available from anywhere on the internet.

Luckily, there's already a widespread solution that provides such features: mail readers. Considering that, imm aims at projecting the RSS/Atom paradigm onto the mail one; this way, all the existing tools that work on mails can be leveraged to work on RSS/Atom feeds as well, no wheel reinventing.


imm does only one thing and does it well: it downloads an RSS/Atom feeds list, and for each new item it writes a file in a local maildir. How and where to write mail files is setup in imm's configuration file.

No SMTP sending, no IMAP serving, no aggregating: those should be performed by external tools.

Example usage

It is possible to setup a Google Reader-like on a server using the following steps:

  • schedule imm to check feeds regularly and write new items into a local maildir;
  • setup an IMAP server to publish the aforementioned maildir;
  • setup a webmail, bound to the IMAP server above, to read feeds from any computer connected to the internet.

Getting started

To get started, please fill the configuration file at ~/.config/imm/imm.hs with your feeds list and settings. An example configuration file is provided with the package. Configuring imm requires basic knowledge of Haskell language.