an XEP-0357 compatible XMPP component
C++ CMake
Latest commit 566bede Oct 5, 2015 Christian Ulrich fix bug which caused resending of old notifications


Oshyia is an app server for mobile XMPP clients as specified in XEP-0357. As such it receives push notification contents from those clients' XMPP servers and forwards them to the popular push notification services, e.g. APNS. It is implemented as XMPP component (see XEP-0114).

Clients can register using adhoc commands. Oshiya aims to be compatible with mod_push concerning commands and app server behaviour. This allows XEP-0357-compatible clients using mod_push's internal app server on an ejabberd server or, as an alternative, any XEP-0114-compatible server running Oshiya.

Oshiya is part of a GSoC 2015 project. Please send feedback.


Oshiya will support these push services:

Currently only the GCM and APNS backends are usable. The Ubuntu backend is implemented but untested.


  • libcurl 7.28.0 or later
  • expat
  • cmake 2.8 or later


git clone
cd oshiya
git submodule update --init --recursive
mkdir build
cd build
# the config file path and the data storage location can be configured using cmake options
cmake -DCONFIG_FILE="/etc/oshiya/oshiya.yml" -DSTORAGE_DIR="/var/run/oshiya/" ..
# no automatic file copying à la make install yet


currently there's only an example config (mod_push's configuration is similar, see over there):

    host: ""
    server_host: ""
    port: 5237
    password: "ABCDEF123456"
    pubsub_host: ""
        type: gcm
        certfile: "/etc/ssl/chatninja.pem"
        app_name: "chatninja"
        auth_key: "sdfF73HFk_fdhj8JFjfzqALkdj81dfjhs0jdEkf"
        type: ubuntu
        certfile: "/etc/ssl/chatninja.pem"
        app_name: "any"
    host: ""
    server_host: ""
    port: 5238
    password: "POIUZT987654"
    pubsub_host: ""
        type: apns
        certfile: "/etc/ssl/chatninja_apns.pem"
        app_name: "chatninja"

Pubsub service configuration

The pubsub service is where the XMPP servers publish the push notification contents. It has to fulfill XEP-0357's requirements. Here is how ejabberd having mod_pubsub and mod_push installed can be configured:

  host : ""
  nodetree : "tree"
    - "push"