Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Pull github, bitbucket, and trac issues into taskwarrior
Pull request Compare This branch is 1 commit ahead, 673 commits behind develop.
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


bugwarrior - Pull tickets from github, bitbucket, and trac into taskwarrior

bugwarrior is a command line utility for updating your local taskwarrior database from your forge issue trackers. It currently supports github, bitbucket, and trac as remote sources.


Create a ~/.bugwarriorrc file with the following contents.

# Example ~/.bugwarriorrc

# General stuff.
# Here you define a comma separated list of targets.  Each of them must have a
# section below determining their properties, how to query them, etc.  The name
# is just a symbol, and doesn't have any functional importance.
targets = my_github, my_bitbucket, paj_bitbucket, moksha_trac

# log.level specifices the verbosity.  The default is DEBUG.
#log.level = DEBUG

# If log.file is specified, output will be redirected there.  If it remains
# unspecified, output is sent to sys.stderr
#log.file = /var/log/bugwarrior.log

# The bitly username and api key are used to shorten URLs to the issues for your
# task list.  If you leave these options commented out, then the full URLs
# will be used in your task list.
#bitly.api_user = YOUR_USERNAME
#bitly.api_key = YOUR_API_KEY

# This is a github example.  It says, "scrape every issue from every repository
# on  It doesn't matter if ralphbean owns the issue
# or not."
service = github
username = ralphbean

# This is the same thing, but for bitbucket.  Each target entry must have a
# 'service' attribute which must be one of 'github', 'bitbucket', or 'trac'.
service = bitbucket
username = ralphbean

# Here's another bitbucket one.  Here we want to scrape the issues from repos of
# another user, but only include them in the taskwarrior db if they're assigned
# to me.
service = bitbucket
username = paj
only_if_assigned = ralphbean

# Here's an example of a trac target.  Scrape every ticket and only include them
# if 1) they're owned by me or 2) they're currently unassigned.
# Note -- You must have the trac XML-RPC plugin installed and configured to work
# over HTTP.
service = trac

trac.base_uri =
trac.username = ralph
trac.password = OMG_LULZ

only_if_assigned = ralph
also_unassigned = True


Just run bugwarrior-pull.

It's ideal to create a cron task like:

*/15 * * * *  /usr/bin/bugwarrior-pull

Getting bugwarrior

Installing from the Python Package Index

Installing it from is easy with pip:

$ pip install bugwarrior

Alternatively, you can use easy_install if you prefer:

$ easy_install bugwarrior

Installing from Source

You can find the source on github at Either fork/clone if you plan to do development on bugwarrior, or you can simply download the latest tarball:

$ wget -O bugwarrior-latest.tar.gz
$ tar -xzvf bugwarrior-latest.tar.gz
$ cd ralphbean-bugwarrior-*
$ python install
Something went wrong with that request. Please try again.