Skip to content

Installation Manual - Service and Plugins


The DQ0 Service provides a catalog and launch service for DQ0 Plugins. Plugins are executable jobs that perform analysis, machine learning or privacy preserving tasks.


The DQ0 Service ships pre-built as a binary executable for the following platforms:

  • Linux (tested on CentOS 7)
  • Mac OS, Version 10.15 or higher
  • Windows 10


Plugins can be added or removed to/from the service at any time - even at runtime. A configuration file is available in the service where all services are listed with all necessary parameters. An entry of a plugin contains:

  • Plugin Identifier (name)
  • Environment Variables
  • Dependencies to other packages / plugins
  • Container information (name of the images, repository, cloud vendor, etc)

This information is required to start a new independent instance either locally or remotely (as a container instance) when using a plugin.

Example Service plugin configuration (snippet):

# content of config.yaml (Service)
    # sample python plugin with dependency to source code version of dependency 'dq0-sdk' executing locally
    -   plugin: 'dq0.plugin_1'
        executor: 'local'
        command: 'python'
        arguments: ['-m', 'dq0.plugin_1']
        environment: 'PYTHONPATH=$PYTHONPATH:/path/to/dq0-sdk/:/path/to/dq0-plugin_1'

    # sample plugin without external dependencies
    -   plugin: 'my_external_plugin'
        executor: 'remote'
        command: 'python'
        arguments: ['-m', 'my_external_2']
        environment: 'ENV1=123'

After the plugins have been entered, they can be used in Service and addressed with “dq0.plugin_1” and “my_external_plugin” from outside. This means that dq0-platform can call the service with this plugin name.

Example Plugin (written in Python):

  • Define plugin configuration (my_plugin.yaml)
version: 3.6.2
name: My Plugin
description: Description of my plugin
author: Me

dockerfile: /path/to/Dockerfile

requirements: /path/to/requirements.txt

      param1: {type: string, default: 'test'}
      param2: {type: float, default: 123.66}
    command: python {param1} {param2}
  • Define sample plugin in Python (
import argparse

def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('--param1', required=False,
                        type=str, dest='param1')
    parser.add_argument('--param2', required=False,
                        type=float, dest='param2')                    
def run():
    args, unknown = parse_args()

    # print hello world
    print('hello world')


if __name__ == "__main__":
  • Provide Dockerfile
FROM python:3.8
COPY requirements.txt .
RUN pip install -r requirements.txt
CMD [ "python", "./", "--param1=test" ]