Obelus: Asterisk's best friend

Obelus is a MIT-licensed Python library providing support for communication with the Asterisk telephony server. It supports the Asterisk Manager Interface (AMI) and the Asterisk Gateway Interface (AGI).


  • Python 2 and Python 3 support.
  • AMI, FastAGI and Async AGI support.
  • Event-driven API friendly towards non-blocking ("async") network programming styles.
  • PEP 3156-style protocol implementations.
  • Framework-agnostic.
  • Adapters for the Tornado, Twisted, Tulip network programming frameworks.
  • Unit-tested.


  • The API is currently low-level: it abstracts away protocol syntax and communication sequences, but doesn't try to expose Asterisk concepts in a particular way.


  • Python 2.7, 3.2 or later.

Optional requirements


AMI client

Several example AMI clients are available for different frameworks:

$ python -m obelus.ami.tornadoadapter -h
$ python -m obelus.ami.tulipadapter -h
$ python -m obelus.ami.twistedadapter -h

FastAGI server

Several example FastAGI servers are available for different frameworks:

$ python -m obelus.agi.tornadofastagi -h
$ python -m obelus.agi.tulipfastagi -h

Study the source codes for these modules for more information about how to re-use the Obelus protocol classes in your own application.


Running the test suite

To run the test suite with a single Python version, run:

$ pythonX.Y -m obelus.test

On Python versions before 3.3, you will need to install the mock library.

To run the test suite on all supported interpreters, install tox and run:

$ tox


Why "Obelus"?

An obelus is a typographical character, a bit like an asterisk.