Module Description

Implements XEP-0030: Service Discovery. The module itself provides only the essential disco interface, the actual capabilities announced by Service Discovery are gathered via executing a fold-type hook.



  • Syntax: string, one of "one_queue", "no_queue", "queues", "parallel"
  • Default: "no_queue"

Strategy to handle incoming stanzas. For details, please refer to IQ processing policies.


  • Syntax: array of strings, valid domain names
  • Default: no extra domains
  • Example: extra_domains = ["custom_domain"]

Adds domains that are not registered with other means to a local item announcement (response to IQ get). Please note that mod_disco doesn't verify these domains, so if no handlers are registered later for them, a client will receive a service-unavailable error for every stanza sent to one of these hosts.


  • Syntax: array of tables described below
  • Default: no additional server info
  • Example:
server_info = [
  {module = "all", name = "abuse-address", urls = [""]}

Adds extra disco information to all or chosen modules. New fields will be added in a manner compliant with XEP-0157: Contact Addresses for XMPP Services.

Required keys and their values for each entry:

  • module - the string "all" or an array of module names for which the additional server information is to be returned
  • name - a non-empty string with the name of the field
  • urls - an array of valid addresses


  • Syntax: boolean
  • Default: true
  • Example: users_can_see_hidden_services = false

MongooseIM node with this option set to false will exclude "hidden components" from disco results sent to clients (identified by bare or full JID). Other entities, with empty username part in their JIDs (e.g., will still receive full disco results.

Example Configuration

  iqdisc.type = "one_queue"
  extra_domains = ["some_domain", "another_domain"]
  server_info = [
    {module = "all", name = "abuse-address", urls = [""]},
    {module = ["mod_muc", "mod_disco"], name = "friendly-spirits", urls = ["spirit1@localhost", "spirit2@localhost"]}
  users_can_see_hidden_services = true