• Stars
    star
    218
  • Rank 181,805 (Top 4 %)
  • Language
    Perl
  • Created over 11 years ago
  • Updated almost 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Automate your life with Exobrain

Build Status

Support via Gittip

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:

  • Give you XP in HabitRPG when you update your beeminder goals
  • Let others add items to your RememberTheMilk TODO lists via twitter
  • Update beeminder by checking your inbox sizes using IMAP
  • Reward you for responding to email
  • Automatically log life events to idonethis

You can find pre-built actions in the bin/actions directory.

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. For example, @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 );
    },
);

Docker support

Docker support is still experimental, but the following should let you skip steps 1-3 of the installation instructions below. An Ubuntu host is assumed.

$ sudo apt-get install docker.io
$ sudo docker.io run -i -t pjf0/exobrain sudo -i -u exobrain

Installation

Step 1: Install exobrain

The following works for a fresh install of Ubuntu 13.10.

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

$ sudo apt-get install libzmq3-dev libexpat-dev libnet-ssleay-perl \
    libnet-libidn-perl libcrypt-ssleay-perl cpanminus make \
    liblocal-lib-perl

Exobrain can use either ZMQ2 or ZMQ3, but we prefer ZMQ3:

export PERL_ZMQ_BACKEND=ZMQ::LibZMQ3

Configure local::lib if you haven't already done so:

$ perl -Mlocal::lib >> ~/.bashrc
$ eval $(perl -Mlocal::lib)

If installing from git, you can then use:

$ dzil authordeps | cpanm
$ dzil listdeps   | cpanm
$ dzil install

If installing from CPAN, it's just:

$ cpanm Exobrain

Note that Exobrain has many dependencies. If you're feeling hungry, this would be a good time to go out for a meal or find a snack. You can also use cpanm --notest instead of cpanm in all the lines above, which will get things installed sooner by not rigorously testing Exobrain and every one of its dependencies.

When you return from your meal, you should find that you 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

Set up exobrain:

$ exobrain setup

It's a good idea to run exobrain setup any time you upgrade your version of Exobrain.

Step 3: Install extensions

Exobrain provides extensions to plug into third party services. They're bundled separately on the CPAN. After installing each one, you'll wish to use the exobrain setup command on its short name to configure it. For example, to install the Twitter extensions:

$ cpanm Exobrain::Twitter
$ exobrain setup Twitter

You can find Exobrain extensions on the CPAN

Step 4: Add configuration

Exobrain uses a ~/.exobrainrc file. You can copy the example.exobrainrc file from the docs/ directory to get started. Exobrain will also use config files found in your ~/.config/exobrain directory (or the XDG config directory on your system). Installable components will often write their configuration to this area.

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

You can now start your exobrain. You can see what exobrain services you have available with:

$ ubic status

The exobrain core must always be running for anything to work. You can start it with:

$ ubic start exobrain.core

If you've configured Twitter, or another extension, you can start that with:

$ ubic start exobrain.twitter

While the exobrain.action services are slowly being replaced with dedicated agent classes, many of them are useful, especially for testing. You can start the ping service with:

$ ubic start exobrain.action.ping

DEBUGGING

If things don't seem to be working right, you start up the debugger:

$ exobrain debug        # Watch the exobrain bus
$ exobrain debug -v     # Watch the exobrain bus verbosely

These commands will show you what's happening right now. If things are quiet, then nothing will be shown.

You can also look at the files in ~/ubic/log/exobrain. Often these will reveal problems such as missing or incorrect configuration and the like.

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

You can join us on #exobrain on chat.freenode.net (IRC).

We have a mailing list at http://groups.google.com/d/forum/exobrain .

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

If you wish to see Exobrain features implemented more quickly, you can place bounties on Bountysource.

All code contributions, tests, bug reports, feature ideas, documentation, and anything else are extremely welcome! Exobrain is free and open source software, please use it to make the world a better place.

Exobrain is hosted on github.

LICENSE

Same as Perl 5 itself.

More Repositories

1

rickastley

National Rick Astley Hotline
Python
240
star
2

masterwork-dwarf-fortress

Patches and bugfixes applied to Meph's amazing Masterwork Dwarf Fortress
Ruby
33
star
3

autodie

Make functions succeed or die in Perl, with lexical scope.
Perl
33
star
4

skyrim-requiem-wine

A guide to running Skyrim/Requiem under Linux/Wine
28
star
5

anki-deck-scraper

Scrape all shared anki decks
HTML
24
star
6

ipc-system-simple

Perl module to make running system commands and capturing errors as simple as possible.
Perl
19
star
7

perl589delta

The perl589delta.pod file for the 5.8.9 release of Perl
Perl
11
star
8

trillr

Perl tip example code
Perl
9
star
9

talks

Talks by Paul Fenwick
Perl
8
star
10

remember-the-beeminder

My own personal tools for integrating RTM and Beeminder
Perl
8
star
11

WebService-HabitRPG

Access the HabitRPG API from Perl
Perl
8
star
12

pjf.github.io

Paul Fenwick's personal website
HTML
7
star
13

Markdown-phpBB

Markdown to phpBB converter
Perl
6
star
14

idonethis-perl

WebService::Idonethis - Interface with the iDoneThis website
Perl
5
star
15

fiction-is-awesome

Makefile
4
star
16

nms-compute

A profitability calculator for No Man's Sky
Rust
4
star
17

okc-archive

Archive messages from OkCupid
Perl
4
star
18

snapback

Automatically backup your machine to btrfs when a disk is plugged in
Perl
4
star
19

sweeperbot

SweeperBot - Play Windows minesweeper automatically
Perl
3
star
20

perl-fortunes

A collection of modern perl fortunes.
3
star
21

proc-uid

Proc::UID - Sensibly manipulate Unix privileges in Perl.
Perl
3
star
22

scuba-table-nodeco

SCUBA::Table::NoDeco Perl Module - Calculate no decompression dive times
Perl
3
star
23

dh-make-perl

Debian's dh-make-perl (unofficial, PJF's branch)
Perl
3
star
24

clockwork-masters

Code for the Celestial Bodies exhibition in Melbourne
C++
3
star
25

exobrain-twitter

Twitter components for exobrain
Perl
2
star
26

open-source-and-social-change

My talk on Open Source and Social Change
Makefile
2
star
27

exobrain-habitrpg

HabitRPG component for Exobrain
Perl
2
star
28

facebook-stalk

Harvest information from people on Facebook
2
star
29

taint-more

Make Perl's taint mode more paranoid
Perl
2
star
30

games-everquest-loglineparser

Parse EverQuest log files in Perl
Perl
2
star
31

WebService-ZombiesRun

Thin interface for fetching Zombies, Run! data
Perl
2
star
32

future-is-awesome

The Future is Awesome (and what you can do about it) (talk)
Perl
2
star
33

WebService-Beeminder

Beeminder API module for Perl
Perl
2
star
34

voting-condorcet-rankedpairs

Implements the Ranked Pairs Condorcet voting system in Perl.
Perl
2
star
35

Games-GuitarHero-Stats

Grab your on-line guitar hero stats in Perl!
Perl
2
star
36

ksp-gamedata

My GameData directory for Kerbal Space Programme. Now you can have mods like PJF!
C#
1
star
37

WWW-Facebook-GetFriends

Get friends from Facebook. No auth required.
Perl
1
star
38

pinpp

pinpp - The Pinpoint Preprocessor
Perl
1
star
39

4sq-list-clone

Clone 4sq lists like a champion!
Perl
1
star
40

foocal

Perl
1
star
41

KS-KSPStuff-Migration

CKAN Migration tools after KerbalStuff went down
Perl
1
star
42

WWW-Facebook-Graph

Access the Facebook Graph API from Perl
1
star
43

App-HabitXMPP

XMPP/Gtalk/Jabber server for HabitRPG
Perl
1
star
44

orc-fortress-wiki

Wiki of the Orc Fortress mod in Masterwork Dwarf Fortress
1
star
45

ShelfRenamer

Rename your shelves and other storage buildings in RimWorld
C#
1
star
46

tidal-locking

1
star
47

exobrain-foursquare

Perl
1
star
48

exobrain-idonethis

Perl
1
star
49

exobrain-beeminder

Beeminder components for exobrain
Perl
1
star
50

app-stalksquare

Command-line tools for stalking people on FourSquare. Please don't use for evil.
Perl
1
star
51

TransportCostsRebalanced

Rebalance transport costs in Rise of Industry
C#
1
star