XMPP implementation for Python
Branch: master
Clone or download
Jajcus XEP 0203 support
Old jabberdelay has already disappeared from servers.
Latest commit ef3cf7e Aug 11, 2016
Type Name Latest commit message Commit time
Failed to load latest commit information.
auxtools Makefile updated for use with git instead of svn May 3, 2011
examples Do not use '$Id'. May 3, 2011
pyxmpp XEP 0203 support Aug 12, 2016
tests Do not use '$Id'. May 3, 2011
utils - executable flag set Nov 16, 2004
.gitignore - more ignores May 3, 2011
CHANGES - use the standard 'ssl' module instead of M2Crypto Apr 3, 2010
COPYING - many new fixes, updates... and workarounds Jun 3, 2003
MANIFEST.in - missing files added: build.cfg and configure.py Aug 31, 2006
README PyXMPP is becoming obsolete, PyXMPP2 is there Jun 30, 2011
README.WIN32 - README file and setup.py improvements for Windows builds, thanks to… Oct 14, 2005
README.rst README.rst symlink added for better rendering on GitHub May 3, 2011
TODO Obsolete entry removed from TODO May 8, 2011
TODO.pylint - some cosmetic and documentation fixes Dec 26, 2005
build.cfg - simple configure.py script (fixes #2) Jul 23, 2006
setup.py URLs updated after moving to GitHub May 8, 2011


PyXMPP – Python Jabber/XMPP implementation


PyXMPP is a Python XMPP (RFC 3920,3921) implementation, including some of the well-known extensions. It is based on libxml2 -- fast and fully-featured XML parser.

PyXMPP provides most core features of the XMPP protocol and several JSF-defined extensions. PyXMPP provides building blocks for creating Jabber clients and components. Developer uses them to setup XMPP streams, handle incoming events and create outgoing stanzas (XMPP "packets").

Please note: this project is becoming obsolete, as now PyXMPP2 is being developed. PyXMPP2 is a modern rewrite of PyXMPP, using ElementTree instead of libxml2.


  • nearly complete XMPP Core (RFC 3920) protocol for client connections (includes SASL, TLS and Strinprep).
  • mostly complete XMPP IM (RFC 3921) protocol (lacks privacy lists)
  • XMPP error objects including translations to and from legacy codes for backward compatibility (JEP-0086).
  • legacy authentication ("digest" and "plain") (JEP-0078).
  • component protocol (JEP-0114).
  • Service Discovery (JEP-0030).
  • vCards -- both Jabber "vcard-temp" and RFC 2426
  • basic parts of the Multi-User Chat protocol (JEP-0045)
  • delayed delivery timestamps (JEP-0091).
  • Data Forms (JEP-0004).
  • In-Band Registration (JEP-0077).


For PyXMPP you will need:

  • Python. Python 2.6 required.
  • libxml2. Recent release (>=2.6.11) with python bindings is required. Additionally, all development files for libxml2 (usually in separate libxml2-devel package) are recommended for compilation of PyXMPP for best performance. PyXMPP 1.0 was tested with libxml2-2.7.6.
  • dnspython. PyXMPP 1.0 was tested with version 1.6.0.


To make sure you have all the requirements listed above or to prepare limited (without the binary extension) build of PyXMPP you may want to run:

python configure.py

You may manually pick the limited or full build of PyXMPP by editing the build.cfg file.

To build the package just invoke:

python setup.py build

To install it:

python setup.py install

If you had some older version of PyXMPP it is better to uninstall it (delete pyxmpp subdirectory os your site-packages directory) before installing this one or things may not work correctly.

You may also try:



make install



PyXMPP was written and is maintained by Jacek Konieczny <jajcus@jajcus.net>.

To report bugs or request features use the GitHub interface.

For discussion you may join the PyXMPP mailing list.


Current source code is available via GitHub at: https://github.com/Jajcus/pyxmpp


PyXMPP is free software, licenced under the GNU LGPL. See the COPYING file for details.