MongooseIM provides a wide range of pluggable and configurable modules, that implement various features including XEPs. For instance mod_muc enables Multi-User Chat (group chat), mod_mam gives us Message Archive Management, and mod_stream_management is for stanza acknowledgement and stream resumption. This modular architecture provides great flexibility for everyday operations and feature development.

A module configuration generally looks like this:

  {mod_muc, [
             {host, "muc.@HOST@"},
             {access, muc},
             {access_create, muc_create}
            ]},

Module list

Some of the modules feature an iqdisc parameter. It defines the method for handling incoming IQ stanzas. Please refer to [[IQ handlers]] for more information. Valid values: no_queue, one_queue, {queues, N}, parallel. Default: one_queue.

mod_adhoc

Implements XEP-0050: Ad-Hoc Commands for advertising and executing application-specific commands, such as those related to a configuration workflow, using XEP-0004: Data Forms in order to structure the information exchange. This is extremely useful for use cases such as remote administration, user engagement via polls, and ChatBots.

mod_amp

Implements a subset of XEP-0079: Advanced Message Processing functionality, that enables entities to request, and servers to perform advanced processing of XMPP message stanzas, including reliable data transport, time-sensitive delivery, and expiration of transient messages.

mod_auth_token

A module used by SASL X-OAUTH mechanism. It provides an API to manage custom OAuth tokens. It requires mod_keystore as an actual key database.

mod_blocking

Implements XEP-0191: Blocking Command, a simplified interface to privacy lists.

mod_bosh

Allows users to connect to MongooseIM using BOSH (Bidirectional-streams Over Synchronous HTTP), the HTTP long-polling technique described in XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH) and XEP-0206: XMPP Over BOSH.

mod_caps

Implements XEP-0115 Entity Capabilities. It queries clients for their supported functionalities and caches them in Mnesia. This module tightly cooperates with mod_pubsub in order to deliver PEP events to user's subscribers.

mod_carboncopy

Implements XEP-0280: Message Carbons in order to keep all IM clients for a user engaged in a real-time conversation by carbon-copying all inbound and outbound messages to all interested resources (Full JIDs).

mod_commands

A central gateway providing access to a subset of MongooseIM functions by channels other than XMPP. Commands defined there are currently accessible via REST API.

mod_csi

Enables the XEP-0352: Client State Indication functionality.

mod_disco

Implements XEP-0030: Service Discovery for discovering information (capabilities, protocols, features) about other XMPP entities.

mod_event_pusher

A framework module to build other notification-based modules on.

mod_event_pusher_sns

Allows sending online/offline notifications, chat and groupchat messages as events to Amazon Simple Notification Service.

mod_event_pusher_rabbit

Allows sending presence changes (to available/unavailable), chat and groupchat messages as events to a RabbitMQ server.

mod_event_pusher_push

Implements XEP-0357 Push Notifiactions to provide push notifications to clients that are temporary unavailable.

mod_event_pusher_http

Forward events to an external HTTP service. This applies to situations such as sending messages or presences to mobile/SMS/email push service, big data, or an analytics service.

mod_http_upload

Implements XEP-0363: HTTP File Upload for coordinating with an XMPP server to upload files via HTTP and receive URLs that can be shared in messages.

mod_inbox

Implements custom inbox XEP

mod_global_distrib

Enables sharing a single XMPP domain between distinct datacenters (experimental).

mod_jingle_sip

Enables Jingle to SIP and SIP to Jingle translator.

mod_keystore

Serves as a storage for crypto keys for mod_auth_token.

mod_last

Implements XEP-0012: Last Activity) for communicating information about the last activity associated with an XMPP entity (most recent presence information from an offline contact).

mod_mam

Implements XEP-0313: Message Archive Management, that defines a protocol to query and control an archive of messages stored on a server.

mod_muc

Implements XEP-0045: Multi-User Chat), for a featureful multi-user text chat (group chat), whereby multiple XMPP users can exchange messages in the context of a chat room. It is tightly coupled with user presence in chat rooms.

mod_muc_commands

Provides mod_muc related mongoose_commands, accessible via the client REST API.

mod_muc_log

Implements a logging subsystem for [mod_muc].

mod_muc_light

Implements XEP Multi-User Chat Light.

mod_muc_light_commands

Provides mod_muc_light related mongoose_commands, accessible via client REST API.

mod_offline

Provides an offline messages storage that is compliant with XEP-0160: Best Practices for Handling Offline Messages).

mod_offline_stub

Prevents <service-unavailable/> error when the message recipient is offline.

mod_ping

Implements XEP-0199 XMPP Ping, enabling periodic XMPP pings sent to clients and responds to those sent from clients.

mod_privacy

This module implements XEP-0016: Privacy Lists), for enabling or disabling communication with other entities on a network.

mod_private

Implements XEP-0049 (Private XML Storage) to store and query private user data in XML format.

mod_pubsub

This extension implements XEP-0060 (Publish-Subscribe). It is a pluggable implementation using behaviours provided by node_*.erl and nodetree_*.erl modules.

mod_push_service_mongoosepush

Handles push notifications generated by mod_pubsub's node_push and passes them to MongoosePush service.

mod_register

Implements XEP-0077: In-Band Registration), that enables creating an account and changing the password once connected. This does not provide a solution to the forgotten password use case via SMS or email.

mod_revproxy

With this extension, MongooseIM may serve as a reverse proxy.

mod_roster

Roster support, specified in RFC 6121. Includes support for XEP-0237: Roster Versioning.

mod_shared_roster_ldap

This module, when enabled, will inject roster entries fetched from LDAP.

mod_sic

Implements XEP-0279: Server IP Check) that enables a client to discover its external IP address.

mod_stream_management

Enables XEP-0198: Stream Management functionality that defines the active management of an XML stream between two XMPP entities, including features for stanza acknowledgements and stream resumption.

mod_time

XEP-0202: Entity Time implementation. With this extensions, clients can get the current server time.

mod_vcard

Provides support for vCards, as specified in XEP-0054: vcard-temp and XEP-0055: Jabber Search.

mod_version

This module provides the functionality specified in XEP-0092: Software Version.