simple XMPP command line client
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Rolf Pfeffertal 6c8f85cc49 add tit-for-tat mode 8 months ago
bin add tit-for-tat mode 8 months ago
cmake bump version 10 months ago
doc allow to avoid spdlog system version 10 months ago
include add tit-for-tat mode 8 months ago
man add tit-for-tat mode 8 months ago
src add tit-for-tat mode 8 months ago
.gitignore progress: split cmake across multiple files 2 years ago
CMakeLists.txt bump version 10 months ago
COPYING add license 2 years ago reference binary builds in readme 10 months ago
TODO add tit-for-tat mode 8 months ago


simple XMPP command line client

smplxmpp allows you to send and receive xmpp messages via the commandline. Both normal chat messages and MUCs are supported.

This is another tool in your linux toolbelt: To have it's output and/or input joined to other line-oriented tools like sed or awk in a pipeline.

Install a binary:
Debian | Ubuntu | Fedora | openSUSE | Archlinux | Manjaro


Please have a look at the Tutorial for more detailed introduction.

Fully configured

This example shows sending and receiving messages when using a config file.

# send a message to alice
$ echo " Hello, World!" | smplxmpp

# now wait for a response interactively (and clear the offline queue)
$ smplxmpp Hello Bot! How are you doing?

Out of the box

This example will work out of the box.

Note that you should not do that, it will leak your password to all users of the system (via the process list).

$ smplxmpp -j --pass=hackme


Don't forget to specify a nick. Also, parsing nicks in MUCs is almost impossible (they basically can contain any character), so they are not displayed (so you don't have to write complex parsers for smplxmpp's output)

$ smplxmpp --muc ""

Only one user

To only send and receive messages from a single user use --focus

$ smplxmpp --focus ""
There are no more prefixes!

Encoding helper

Every line contains only one message. Newlines within a message are encoded to \n.

To encode a message you may pipe it through smplxmpp-nl:

$ fortune | smplxmpp-nl | smplxmpp --focus ""

Use the flag -d to decode messages.

Configuration file

Place these in /etc/smplxmpp.conf (system wide) or in ~/.smplxmpprc (only user).

pass hackme


For the usage please refer to the man pages smplxmpp(1) for the binary, smplxmpp(5) for the configuration and smplxmpp-nl(1) for the encoding and decoding helper.

man 1 smplxmpp
man 5 smplxmpp
man 1 smplxmpp-nl

Additional documentation on the internal structure is provided in the doc/ directory.

Activate the build option BUILD_DOCUMENTATION to build the API documentation.


This is a cmake project, and can be installed like any other cmake project.

git clone
cd smplxmpp
mkdir build && cd build
cmake ..
ccmake . # optional, adjust build vars
make -j8
sudo make install

See the docs for available build configuration.


You require cmake and a c++ compiler (e.g. g++).

As libraries you need gloox and spdlog. If you don't have them installed you can set SMPLXMPP_GLOOX_USE_SYSTEM and SMPLXMPP_SPDLOG_USE_SYSTEM to OFF respectively, which causes smplxmpp to fetch them via the internet and build them locally.

As transitive dependencies libidn, zlib and gnutls are also required. (Don't forget their header files for building.)


This project is available under the GNU GPLv3 only.


Find this project on Codeberg.