imm: Execute arbitrary actions for each unread element of RSS/Atom feeds

[ library, program, public-domain, web ] [ Propose Tags ]
Versions [RSS],,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Dependencies aeson, ansi-wl-pprint, atom-conduit (>=0.4), base (>=4 && <5), blaze-html, blaze-markup, bytestring, case-insensitive, chunked-data (>=0.3.0), comonad, conduit, conduit-combinators, connection, containers, directory (>=, dyre, fast-logger, filepath, free, hashable, HaskellNet, HaskellNet-SSL (>=, http-client (>=0.4.30), http-client-tls, http-types, imm, microlens, mime-mail, mono-traversable (>=1), monoid-subclasses, network, opml-conduit (>=0.6), optparse-applicative, rainbow, rainbox, rss-conduit (>=0.4.1), safe-exceptions, tagged, text, time, timerep (>=, tls, transformers, uri-bytestring, xml, xml-conduit (>=1.5), xml-types [details]
License LicenseRef-PublicDomain
Author kamaradclimber, koral
Maintainer koral <>
Category Web
Home page
Source repo head: git clone git://
Uploaded by koral at 2017-09-09T14:26:14Z
Distributions NixOS:
Executables imm
Downloads 18243 total (127 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-09-09 [all 1 reports]

Readme for imm-

[back to package description]


imm is a tool to execute arbitrary actions for each new element from RSS/Atom feeds (e.g. sending a mail, or writing a file).

imm is written and configured in Haskell.

Technical documentation is available at hackage.

To get started, please consult documentation of Imm.Boot module.

Example workflows

Online feed reader

For the sake of I-want-the-mutt-of-feed-readers zealots, it is possible to turn any mail reader into a feed reader, by having imm send an e-mail with unread elements to an arbitrary address. You can then browse your feeds through your favourite mail reader, and leverage any mail-related tool on your feeds. Bonus points if your mail reader is online as you can now access your feeds from anywhere in the internet.

Check out Imm.Hooks.SendMail module.

Offline read-it-later

imm is able to store a local copy of unread elements, to read them later while offline for example. External links won't work offline though.

Check out Imm.Hooks.WriteFile module.

Example usage

  • Subscribe to a feed:

    imm subscribe
  • Import feeds from an OPML file:

    cat feeds.opml | imm import
  • List subscribed feeds:

    imm show
  • Unsubscribe from a feed:

    imm unsubscribe
  • Check for new elements without executing any action:

    imm check
  • Execute configured actions for each new element from subscribed feeds:

    imm run