Synapse XMPP Daemon
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


# synapse: a small XMPP server
# README: at-a-glance documentation
# Copyright (c) 2006 Eric Will <>
# $Id$

= synapse
=== A Lightweight XMPP Server Implementation

This program is free but copyrighted software; see <tt>doc/license.txt</tt> for

Information about +synapse+ may be found at <tt></tt>.

== Credits

This program was written from scratch, based only off of my other Ruby programs,
none of which have ever been released. This program borrows some ideas, and
perhaps a small amount of code (mostly for IDN, TLS, and SASL) from the
netxmpp-ruby project: <tt></tt>.

Currently synapse is written largely by me:
  rakaur, Eric Will <>

With various code from:
  sycobuny, Stephen Belcher <>

Thanks to "official" alpha/beta testers:
  naki, Adam Walls <>
  rintaun, Matt Lanigan <>

And of course, thanks to all of the people who tested and posted bugs, etc.

Special thanks to:
  stpeter, Peter Saint-Andre <>
     for giving this project a chance, for putting up with my
     endless questions on the RFCs that you so kindly published,
     and of course for all the hard work you put into XMPP.

== References

  [   XMPP-CORE] -- RFC 3920 -- XMPP: Core
  [     XMPP-IM] -- RFC 3921 -- XMPP: Instant Messaging and Presence
  [      BASE64] -- RFC 3548 -- The Base16, Base32, and Base64 Data Encodings
  [  DIGEST-MD5] -- RFC 2831 -- Using Digest Authentication as a SASL Mechanism
  [       PLAIN] -- RFC 4616 -- The PLAIN SASL Mechanism
  [  STRINGPREP] -- RFC 3454 -- Preparation of Internationalized Strings
  [         IDN] -- RFC 3491 -- Stringprep Profile for Domain Names
  [        SASL] -- RFC 2222 -- Simple Authentication and Security Layer
  [         SRV] -- RFC 2782 -- DNS RR SRV
  [         TLS] -- RFC 2246 -- Transport Layer Security
  [  IQ-VERSION] -- XEP 0092 -- Software Verson
  [       DISCO] -- XEP 0030 -- Service Discovery
  [  MSGOFFLINE] -- XEP 0160 -- Best Practices for Handling Offline Messages
  [       DELAY] -- XEP 0203 -- Delayed Delivery
  [ IQ-REGISTER] -- XEP 0077 -- In-Band Registration
  [  VCARD-TEMP] -- XEP 0054 -- vcard-temp
  [VCARD-AVATAR] -- XEP 0153 -- vCard-Based Avatar

== Presentation

+synapse+ is a small, lightweight, strictly RFC-compliant Jabber/XMPP server.
It doesn't require a system-wide install, so that XMPP can hopefully be
brought to the world of shells. As part of this goal, +synapse+ doesn't rely
on many processes running concurrently (+jabberd+), and doesn't rely on
an exotic language to be installed (+ejabberd+) (unless you consider Ruby
exotic, I guess, but it's installed in all of *my* shells).

+synapse+ should happily interoperate with any server that is either RFC
compliant, or supports, at the very least, the Dialback protocol. +synapse+
is quite strict in regards to enforcing the RFC, with one exception for
legacy +jabberd+ servers that don't properly specify the <tt>jabber:server</tt>

== Installation

+synapse+ comes pretty much installed, as there's no compile-time.

=== Dependencies:

* ruby (>= 1.8.0)
* openssl
* idn (>= 0.0.1) (rubygem: <tt>gem install --remote idn</tt>)
* rake (rubygem: <tt>gem install --remote rake</tt>)

We require ruby for obvious reasons.

We require OpenSSL for TLS streams.

We require IDN for Nameprep. Thankfully, the RubyGem 'idn' already includes
support for Nodeprep and Resourceprep.

We require rake to run the tests and generate documentation.

Once all dependencies are met, edit <tt>etc/xmppd.conf</tt> in accordance to
the example in <tt>etc/example.conf</tt>. Once the configuration is to your
liking, you may of course move the installation to wherever you like, and run
the main program with <tt>./bin/xmppd</tt>.

== Contact

If you have a bug, support request, patch, or feature request, please use
our tracker: <tt></tt>.

Also, my JID is <tt></tt>. Keep in mind if you message me
about a bug, support request, patch, or feature request, I'm just going to point
you to the tracker. If I handled everyone's problems on a case-by-case
basis I'd certainly be crazier than I already am.

There is a mailing list,

If you've read this far, congratulations. You are among the few elite people
that actually read documentation. Thank you.