Aspirator is a simple, lightweight web-based feed reader. Main features:

  • RSS and ATOM support
  • Feeds are grouped by category
  • Webmail-like interface with pagination and intelligent browsing
  • Filter out already read entries
  • Control on entries' time to live (days, weeks, months or forever)
  • Theme support, with a simple default theme
  • Nice with web servers, uses ETag and Last-Modified HTTP headers
  • Handles HTTP status codes nicely (permanent redirects, gone, not-modified…)
  • Hides images by default (and therefore filters ads and thracking stuff)
  • Multiple user support
  • PubSubHubbub support
  • OPML import

It is built with Django and is still under development. There is no stable / public / versioned / maintained / whatever release yet.


Getting the code:

hg clone https://bruno@bitbucket.org/bruno/aspirator/
cd aspirator

External requirements:

  • Django 1.2.* (it may work with previous version but hasn't been tested)
  • Python 2.5 or greater (not tested with python 2.4 but it may work)
  • django-push
  • opml

You can install the dependencies using the pip requirements file in the source tree:

pip install -r requirements.txt


Create a settings.py file and set at least the DATABASES setting. Here is a suitable settings.py file for production:

from default_settings import *

DEBUG = False

    ('Your name', 'your-email@example.com'),

    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', # or whatever you're using
        'NAME': 'your_db_name',
        'HOST': '', # leave blank if localhost
        'USER': 'db_user',
        'PASSWORD': 'db_password',

MEDIA_URL = 'http://media.your_domain.com'
TIME_ZONE = 'Europe/Paris'

EMAIL_HOST = 'mail.your_domain.com'

We assume that you have a virtual host pointing to the aspirator/media directory to serve static files.

Then deploy the Django app using the recipe that fits your installation (with mod_wsgi or mod_fcgi). More documentation on the Django deployment guide.

Once your application is deployed (you've run ./manage.py syncdb to create the database tables), you can add users to the application. On the admin interface, add as many users as you want. When you've added some categories and feeds to your account, you can crawl for updates:

python manage.py updatefeeds

Set up a cron job to update your feeds on a regular basis, every hour is fine, more can be quite aggressive:

59 * * * * python /path/to/aspirator/manage.py updatefeeds

Enjoy the hot news!


If you want to contribute and need an environment more suited for development, you can use the settings.py file to alter default settings. For example, to enable the django-debug-toolbar:




    'HIDE_DJANGO_SQL': False,

When running manage.py updatefeeds on your development machine, make sure you have DEBUG = True in your settings to avoid making PubSubHubbub subscription requests without any valid callback URL.