# Launcher VIs

{% hint style="info" %}
You can create Launcher VIs with the [Create Launcher VI](https://docs.workersforlabview.io/workers-tools/workers-tools-menu/create-launcher-vi) tool.
{% endhint %}

A Launcher VI is a VI that you run to launch the [Head Worker](https://docs.workersforlabview.io/important-terms#head-worker) of a Workers application.

By default, a Worker cannot launch/run itself, and this is the reason we need a Launcher VI.

![Launcher VI launches head Worker of application.](https://2767648102-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZWihGdeYUalj239OUdAB%2Fuploads%2FAMGBwSIhcyoZKxbbOyEj%2Fimage.png?alt=media\&token=696f3479-a8b5-4af8-93a7-19b08ffd7267)

The following image shows a Launcher VI for a Worker in a LabVIEW project, and below that the block diagram of the Launcher VI.

![](https://content.gitbook.com/content/ZWihGdeYUalj239OUdAB/blobs/j8JIuv9haYAWG51GjqfI/Launcher%20VI%20in%20project.png)

![Launcher - Worker A.vi](https://2767648102-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZWihGdeYUalj239OUdAB%2Fuploads%2FEr1XKfw0uTOSR7PzrdB5%2Fimage.png?alt=media\&token=fe7407ff-a6cf-4556-a118-f1ccd2a68099)

A Launcher VI contains (from left to right):

* the class object constant of the application's head Worker
* the Worker's palette VI: *Debug Client Loader.vi*
* the Worker's palette VI: *Setup Head Worker.vi*
* the Main VI (Main.vi) of the application's head Worker.

Running the Launcher VI will launch the application's head Worker along with all of head Worker's statically-linked subWorkers. If the Launcher VI is aborted, then **all** Workers in the application's Worker call-chain hierarchy (both statically-linked and dynamically loaded) will also be immediately aborted.

## Asynchronous Launcher VIs

Asynchronous Launcher VIs will asynchronously launch a Worker's Launcher VI (above) and can be used to load multiple instances of a Workers application. Asynchronous Launcher VIs return the loaded Worker's class object containing only its Public Properties. This object can then be used with a Worker's Public API Request VIs from applications external to the Workers application (eg. TestStand).

{% hint style="success" %}
The Workers 5.0 [DMM HAL Demo Project](https://docs.workersforlabview.io/whats-new-in-v5.0/new-features/example-projects) and [TCP Server and Client](https://docs.workersforlabview.io/getting-started/example-projects) example project both launch their respective Worker applications using Asynchronous Launcher VIs.
{% endhint %}
