MAD job processor

MAD has an internal cronjob-like job processing mechanism. With this mechanism, you can run jobs manually or schedule them.


  • Install or update apps on your devices
  • Run any command on your devices

Create new job

Create Folder personal_commands in MAD’s root directory. Safe custom jobs as .json file. MAD must be restarted for new jobs to appear.

Example Job to read the game’s version:

  "Readout Pogo Version":
      "TYPE": "jobType.PASSTHROUGH",
      "SYNTAX": "dumpsys package com.nianticlabs.pokemongo | grep versionName",
      "FIELDNAME": "POGO_Version",
      "WAITTIME": 5
  • Readout Pogo Version: Name of job that will appear in MADmin
  • TYPE: jobType.PASSTHROUGH: Type of job. See Job types for a list of supported jobs
  • SYNTAX: dumpsys package com.nianticlabs.pokemongo | grep versionName: Shell command
  • FIELDNAME: POGO_Version: Field name for returning Value
  • WAITTIME: 5: Wait 5 minutes before starting the job

You can chain multiple jobs together. See Nested jobs.

APK installation job

MAD can create a job to install an APK on your devices just by uploading the app via MADmin.

Use upload_path in config.ini to define the software folder for these APKs (Default: upload/ in MAD root folder)

MADmin ‣ Jobs ‣ Upload File


Select APK and Upload it.

Job types

MAD supports the following job types:

  • jobType.INSTALLATION: Install APK on device
  • jobType.REBOOT: Reboot device
  • jobType.RESTART: Restart Pogo
  • jobType.STOP: Stop Pogo
  • jobType.START: Start Pogo
  • jobType.PASSTHROUGH: Send command to device

Automatic Jobs

You can configure MAD to launch jobs based on certain timings.

Create file “autocommands.json” in your configured file_path/ directory. You can set the path via config.ini.

Example content:

    "redo": true,
    "algotype": "loop",
    "algovalue": 10,
    "startwithinit": true,
    "origins": "tv1",
    "job": "Readout Pogo Version",
    "redoonerror": true
    "redo": true,
    "algotype": "daily",
    "algovalue": "21:00",
    "startwithinit": true,
    "origins": "tv5|tv6|tv7",
    "job": "Readout RGC Version",
    "redoonerror": false


  • redo: true will reschedule jobs after finish. false will set this jobs to run only once
  • algotype: daily runs this job once a day. loop will looü the job every x minutes
  • algovalue: depends on algotype. :code: daily sets time like “21:30” (24h format). loop sets loop time in minutes (120 = every 2 hours)
  • startwithinit: true will start the job after MAD start. false starts the job according to schedule
  • origins: Single or list of devices (separated by |)
  • job: Name of the job
  • redoonerror: Reschedule jobs after getting an error

MADmin API endpoint for jobs

Madmin provides a read-only endpoint via GET /jobstatus to read all processed jobs’ return value.


   "my_device_name": {
      "POGODROID_Version": "[versionName=]",
      "POGO_Version": "[versionName=0.153.2]",
      "RGC_Version": "[versionName=1.9.3, versionName=1.8.34]"

Nested jobs

You are able to combine more jobs to one nested or chained job. Nested jobs are processed from top to bottom.


MAD starts the top most job and will schedule the memory usage readout with a delay of 3 minutes. Eventually, the game will start.

  "Stop/Start Pogo and readout Memory Usage":
      "TYPE": "jobType.STOP",
      "SYNTAX": "STOP Pogo"
      "TYPE": "jobType.PASSTHROUGH",
      "SYNTAX": "dumpsys meminfo | egrep -w 'Total RAM|Free RAM|Used RAM'",
      "WAITTIME": 3
      "TYPE": "jobType.START",
      "SYNTAX": "START Pogo"


If one of the jobs results in an error, following jobs will be canceled.


Discord integration

MAD is able to submit a job’s state to Discord.

job_dt_wh                    # Send job status to discord (Default: False)
job_dt_wh_url:               # Discord Webhook URL for job messages
job_dt_send_type:            # Kind of Job Messages to send - separated by pipe | (Default: SUCCESS|FAILURE|NOCONNECT|TERMINATED)
  • job_dt_wh: Enable Discord support
  • job_dt_wh_url: Discord webhook URL
  • job_dt_send_type: Define the kind of submission (separated by |) (Default: SUCCESS|FAILURE|NOCONNECT|TERMINATED)


../_images/Jobs_DT_job1.png ../_images/Jobs_DT_job2.png ../_images/Jobs_DT_job3.png