This topic describes how to run IDLTasks in command-line environments. The IDLTaskEngine executable is the core of this capability, allowing you to call IDL from other programming languages and systems through standard streams (stdin, stdout, and stderr) to share information.

The IDLTaskEngine executable works as follows:

  • All input and output is in the form of a JSON string.
  • IDL data types can be represented as JSON objects. See IDLDehydrate for details on the expected dehydratedForm to use as input. The IDLTaskEngine executable converts the JSON representation into the data type that is required for each task by using the IDLHydrate function.
  • IDLTaskEngine runs in a stateless environment to allow multiple instances to run simultaneously without affecting each other. The engine does this by using the current directory where the executable was invoked from as the location for home, preferences, and as the temporary directory. If you have a library of IDLTasks that you want all IDLTaskEngine instances to have access to then set the IDL_PATH environment variable or run the IDLTaskEngine in the directory that contains the task file.

See the following topics to learn more about running IDL analytics at the command line:

See Custom Tasks for details on creating tasks.

See IDL Feature Support for a current list of operating systems that support the IDL Task Engine.


Unix shell:

idltaskengine [OPTIONS]


taskengine [OPTIONS] engine


Windows terminal:

idltaskengine.bat [OPTIONS]


taskengine.exe [OPTIONS] engine



Set this argument to the task engine. Possible values include "IDL" and "ENVI".

Note: If you run using idltaskengine or idltaskengine.bat then the engine is supplied automatically.



Set this argument to enable IDL compilation. The default is to run code only from IDL SAVE files.


Display help information for the task engine executable.


Set this value to the time to wait for a license in seconds. Possible values are:

  • license-timeout < 0: wait indefinitely for a license
  • license-timeout = 0: do not wait for a license. This is the default behavior.
  • license-timeout > 0: wait up to the specified number of seconds for a license.


Set this value to the name of a file where any IDL console output will be written. By default the output is suppressed.