Prowl is a Growl-like client for the iPhone which accepts notifications from your computer (Mac, Windows) using push. UNIX and Linux systems are also supported via a third-party API that you can use to build your own applications. Installing Prowl is easy enough, and doing so in conjunction with Growl is well explained.

In order to use Prowl with anything other than the add Notification Web page on the Prowl site, you’ll need an API key which you can get on the Prowl site after registering an account and logging on. Applications which you give your API key to (any of those below) can add a notification but cannot do anything else, such as reset your password. You should keep your API key secret of course, but even if it does leak out, nobody can do much with it except pester you with notifications. :-) (In which case you simply regenerate a key and copy that to the applications that used the old key.)

On the command-line, you can use to push out a notification. The short script has modest module requirements, most of which you should have installed already. You can use this at the end of a sequence of long-running commands, to alert that something is finished.

For example, suppose I’m downloading a copy of the latest Ubuntu, I could do this:

    wget ... -apikey=<40byteshexadecimalstring> \
        -application=CLI \
        -event=Download \
        -notification=ubuntu-910 complete

When the download completes, sends out the notification via Prowl’s servers, and my iPhone displays that:

(What will I do en-route with the information that several hundred megabytes have finished downloading at home? Don’t ask. :-) )


How about IMAP notifications? Martin Schmitt has written GhettoPush, a Perl program that listens for new messages on an arbitrary IMAP server waiting for new messages to arrive. It does so using IMAP IDLE, so the program “wakes up” when a new message arrives, and it then notifies Prowl with sender and subject of the message.

After installing some prerequisite Perl modules (Mail::IMAPClient, WebService::Prowl, and MIME::EncWords), obtain a copy of GhettoPush from its Git repository

    git clone git://

You then set up a configuration file, giving it whichever name you like, describing how GhettoPush should access your IMAP server, with which credentials, and of course Prowl’s API key. Here’s a sample configuration I used for accessing Gmail:

    # Title that will appear in prowl events
    prowl_app = IMAP
    # Prowl API key
    prowl_key = 40byteshexadecimalstring
    # IMAP server data
    imap_host =
    imap_port = 993
    imap_user = gmailusername
    imap_pass = gmailpassword
    imap_ssl  = yes
    # This usually doesn't need to be changed.
    imap_box  = INBOX
    # Optionally, specify the name of a log and PID file.
    #logfile   = ~/imapidle2prowl.log
    #pidfile   = ~/

Launch passing it the name of the configuration file you just created. (If you want the program to remain in the foreground, set the environment variable NOFORK.)

    ./ gmail.cfg

When a new message is deposited into your INBOX, imapidle2prowl peeks at it, extracts sender and subject, formats those nicely (with UTF-8 support!) and notifies Prowl.

GhettoPush sends Prowl-notifications with a priority of 0. If you change the Prowl App’s settings, enabling Quiet Hours and set your Quiet Times (e.g. 22:00 - 7:00), Prowl won’t chime when a message arrives – you get peaceful, uninterrupted, beauty sleep. :-)

Messages in your IMAP server’s INBOX are left unchanged – their flags aren’t modified, so if you later access your IMAP’s INBOX you’ll see the messages as being new.

If you have multiple IMAP accounts you want imapidle2prowl to watch, create different configurations and launch as many copies of imapidle2prowl as you need. You can change the name of prowl_app in their respective configuration files to differenciate notifications you receive on your iPhone.

(I believe Martin uses some black magic and Tabasco to get GhettoPush notifications to launch his iPhone’s Mail client to retrieve the IMAP message proper via Stunnel, and perhaps he’s willing to tell us about it some day he shows us how. Thanks. )

If you feel like hacking but are more comfortable with Python, there is a similar project called Gprowl, but I haven’t looked at that.


This site is powered by WordPress so I had to try WP-Prowl, a Prowl-integration plugin that allows me to receive a push notification about “things” happening on by blog.

WP-Prowl was written by Nathan Wittstock and is highly configurable:

You can have new comments, posts, etc. pushed to your Prowl‘d device, informing you when there is activity on your blog. I’ve tested version 0.8.0 and it works like a charm! Cool stuff.

There’s probably no end to what you can do with Prowl; some ideas off the top of my head:

  • Send out Nagios/Icinga alerts. This is easy to implement with, say,, discussed above.
  • Alert yourself when an important (for you) Tweet arrives by having a program parse your friend’s timeline and reacting on particular Twitter users or messages.
  • Combine Remind and one of the Prowl APIs to have reminders sent to you. (But you can also do that by having Remind send you an e-mail.)
  • There are many more things, and using Prowl notification to run a script on your phone certainly is one of the more nerdy. ;-)

The Prowl app costs EUR 2.39, but that is all you pay (apart from carrier charges, of course). Notifications don’t cost anything extra. There are limits on the amount of notifications you can send per hour (1000), but that should be more than any mortal – at least this one – needs.

Linux, IMAP, Mobile, MacOSX, CLI, iphone, Prowl, and monitoring :: 12 Nov 2009 :: e-mail