Each app must be accompanied by an XML file defining its basic information and its inputs. This XML file can be used by a UI or another plugin to help format inputs.

The <plugin_info> tag is the base. Next, <plugin_name>, <plugin_description> and <plugin_dir> describe the name of the plugin to display, a description of what it does, and the location of the actual executable file, if necessary. For example

    <plugin_name>Test Plugin</plugin_name>
    <plugin_description>Check for the existance of a network in hydra
            Written by Stephen Knox
            (c) Copyright 2013, University College London.
    <plugin_epilog>For more information visit</plugin_epilog>

Immediately after this, the app’s inputs are defined.

There are three category of input: <mandatory_args>, <non_mandatory_args> and <switches>

        <help>The name of the network you are creating</help>
        <help>The number of nodes to create in the network</help>
        <help>The name of the scenario to create. If none is specified, a default is used.</help>
        <help>If you want data in your network, use this switch.</help>

Within each category there is an <arg>, inside which is defined a <name>, command line <switch>, whether <multiple> inputs can be expected, what type input can be expected and a help string to describe what it is.