Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

RBM scrapes the Rose bandwidth usage page and collections stats of a user's bandwidth usage. It currently uses this to send push notifications (via boxcar) when a user's bandwidth usage passes a certain point ("warn level") or when the bandwidth class of a users changes.

It also displays the last 36 hours of entries as a graph, although work to make this a more useful and intuitive graph still needs to be done. Devices are named using either their host name or network addresses, or a user provided name which takes precedence over both.


The bandwidth monitor is divided into two parts, the web server and the scrape server. Both components currently run independently of each other.

To start the web server: ruby server.rb

To start the scrape server: ruby scrape_server.rb

By default the scrape server will start in development mode, to put it into production use the --production flag.


The following gems are required to run RBM

Future Work

Normalized bandwidth charts (i.e., bytes downloaded over time)

This feature is currently on hold since I can't seem to figure out a way to pull out individual upload/download statistcs from the data Rose provides.

This will also include stats such as time until bandwidth cap is reduced.

API access for creating/retrieving bandwidth entries

For 3RD party applications who need access to long term data for a user. RBM holds onto usage data forever, so an API to access this may be of use.

Also an API for notification providers to discover and register a user (with their consent) would be useful.

Security Concerns

Currently RBM scrapes from the Rose bandwidth page by using NTLM, which requires RBM to store and retrieve a user's password. Suitable warnings are included on the registration page, but note that running this on a shared server will result in plain text passwords being stored in the sqlite database.


Tracking and push notifications for Rose students worried about their bandwidth usage






No releases published


No packages published