What is this?

Exobrain is a collection of agents which collect, classify, and act upon data. They share a common bus for communication. Think of it as IFTTT, but free, open source, and you keep control of your privacy.

Examples of things that exobrain can currently do:

Exobrain is designed to make it very easy to write and trigger events using standard interfaces.

Technology

The core of exobrain is written in Perl, but uses a shared message bus (0MQ) and packet format (JSON) to make it easy to connect components from other languages.

Writing an action is a very simple affair. @pjf has notifications configured to go to his pebble watch, and uses this code to send all tweets directed at him to said watch:

#!/usr/bin/env perl
use Exobrain;

my $exobrain = Exobrain->new;

$exobrain->watch_loop(
    class  => 'Measurement::Tweet',
    filter => sub { $_->to_me },
    then   => sub {
        $exobrain->notify( $_->summary );
    },
);

Installation

Step 1: Install exobrain

Firstly, make sure you've got all the dependencies:

sudo apt-get install libzmq-dev libexpat-dev libnet-ssleay-perl \
    libnet-libidn-perl libcrypt-ssleay-perl cpanminus

If installing from git, you can then use:

dzil listdeps | cpanm
dzil install

If installing from CPAN:

cpanm exobrain

You now have exobrain installed! However to use it properly, you'll want to manage it with ubic.

Step 2: Configure ubic

Set up ubic (if you haven't already done so):

ubic-admin setup

Copy the exobrain file into your ubic services:

cp `which exobrain` ~/ubic/service

Step 3: Add configuration

Exobrain uses a ~/.exobrainrc file. You can copy the example.exobrainrc file from the docs/ directory to get started.

For RememberTheMilk integration, you'll need a valid ~/.rtmagent file.

You can now start your exobrain. Start with the core:

ubic start exobrain.core

To get some data flowing through your exobrain, you can try starting the end-points:

ubic start exobrain.source
ubic start exobrain.sink

And to get intelligence, you can bring on-line the classifers:

ubic start exobrain.classify

Of course, you can get EVERYTHING online in one go with just:

ubic start exobrain

You probably won't use all the components, though, so it's recommended that you only configure and switch on the ones you need.

GLOSSARY

An exobrain source is a data provider. It integrates with some external service, and produces Measurements. These can be events on social media, inbox counts, check-ins, call-backs, or anything else which is bringing data into the system.

An exobrain sink is a data consumer. It listens for intents and makes them happen. This may be sending a tweet, recording a TODO item, sending a notification, updating a data-point, etc.

An exobrain action bridges sources and sinks. It listens for measurements, and produces intents. These are the most common components, and also the easiest to write.

BUGS

Heaps. Report and/or fix them at https://github.com/pjf/exobrain/issues/

SUPPORT

If you like my work, you can tip me on gittip.

LICENSE

Same as Perl 5 itself.