NAME

Wubot::Guide::Overview - wtf is wubot?

DESCRIPTION

'wubot' is the code name for a distributed personal reactive automation tool I've been working on for the last several years. It is built in modern Perl 5 using Moose, AnyEvent, LWP::UserAgent, YAML, DBI/DBD::SQLite, Mojolicious, and many others.

The simplest way to think of this project is to compare it to email filters. Most email clients allow you to set rules to perform actions when a new email arrives.

This project allows you to have a set of monitors that collect data from a variety of sources, including:

email boxes
RSS/Atom feeds
IM
log files
system monitors
OS X idle time
local sunrise/sunset times
monitors running on remote hosts
your own custom monitor plugin written in perl
see: Wubot::Guide::MonitorPlugins

Data collected from each monitor is sent through a set of rules that can perform actions such as:

pop up an alert, e.g. using Growl
send a colorized message to stdout
store the message in a mailbox
add the message to a SQLite database
store data from the message in RRD and graph the data over time
add the message to outgoing RSS feeds
send a private or public message to IRC
forward the message to another host for further processing
your own custom action written in perl
see: Wubot::Guide::ReactorPlugins

Beyond just doing something with the message or portions of the message, you also have the option to modify the message, e.g.:

set a color to be used for alerts
transform some field in the message with a regexp
capture data from a field and store it in another field
strip images or HTML

Unlike previous generations of this project, the rules are entirely controlled by configuration. So it is not necessary to write any perl code to use the rules. In the future there will be a user interface for configuring the rules. See Wubot::Guide::Rules.

Rules can be nested, so that when a rule matches, it can cause additional sub-rules to run. Nesting rules makes the rules processing much more efficient so that not every rule needs to be run on every message. Rules processing is recursive so rules can be nested arbitrarily deep. For more information on rule conditions, see Wubot::Guide::Conditions.

Distributed operation currently relies on XMPP. Using XMPP, messages can be sent between wubot instances on multiple hosts. Monitors generate messages that may be reacted upon locally, and/or may be forwarded to other hosts for further reaction. See Wubot::Guide::MultipleBots.

This project is still under construction.

To get started, see Wubot::Guide::GettingStarted.

Lots more to come...