Skip to content

How to add a launcher

A launcher is an app definition that LabPod can start inside a running workspace: JupyterLab, code-server, TensorBoard, MLflow, Streamlit, and similar tools.

There are three related workflows:

  • Add a launcher to one of your private templates.
  • Ask an admin to add a reusable launcher to the global catalog.
  • Expose a one-off app from a running workspace with Extra apps.

Use this when you own the template and want every new workspace from that template to show the app in its Apps section.

Workspace Apps section showing multiple launcher cards

  1. If the template does not exist yet, open Templates → My templates and create it.
  2. Open Templates → My templates.
  3. Select your template.
  4. In the Ports section, click Import launcher.
  5. Pick a launcher from the catalog.
  6. Mark one launcher as Primary if that app should be the main app for the template.
  7. Click Save.
  8. Create a new workspace from the template.

Importing a launcher copies the catalog definition into your template. Later catalog edits do not rewrite your template.

Use a manual launcher when the catalog does not have the app yet.

  1. Open Templates → My templates.
  2. Select your template.
  3. In Ports, click Add port.
  4. Set Name to a lowercase identifier such as streamlit or gradio.
  5. Set Label to the display name.
  6. Set Container port to the app’s normal port, such as 8501 for Streamlit.
  7. Open the advanced launcher fields.
  8. Fill in Command template, Probe command, Readiness path, and Install hint.
  9. Save the template.

For launchers, the command must bind to ${HOST_PORT}. LabPod assigns this port at runtime.

Example Streamlit command:

Terminal window
streamlit run ${SCRIPT} --server.address=0.0.0.0 --server.port=${HOST_PORT} --server.baseUrlPath=${BASE_PATH_NO_SLASH} --server.headless=true

Example option schema:

{"fields":[{"name":"SCRIPT","type":"file","label":"App script","default":"/work/app.py","required":true}]}

Useful command tokens:

TokenMeaning
${HOST_PORT}Runtime port the app must bind. Required for launchers.
${BASE_PATH}Proxy path including the trailing slash.
${BASE_PATH_NO_SLASH}Proxy path without the trailing slash.
${AUTH_TOKEN}Per-launcher token for supported credential-aware apps.
${AUTH_TOKEN_SHA256}SHA-256 form used by code-server password auth.
Option keysValues from the option schema, such as ${SCRIPT} or ${LOGDIR}.

The Probe command is the executable LabPod checks inside the container, for example streamlit, jupyter, or tensorboard. If the probe is missing, the launcher card shows the install hint instead of a Start button.

A template launcher only works if the image contains the app binary. For a private template, edit the template Dockerfile and install the app there.

Example:

RUN pip install --no-cache-dir streamlit

Then build the template image and create a new workspace from that template. If an existing workspace uses an older image, recreate it or install the missing package inside that workspace and click Refresh in the Apps section.

Only root admins can edit the reusable catalog at /admin/launchers.

The admin creates the launcher once with:

  • Name and Label.
  • Container port.
  • Command template using ${HOST_PORT}.
  • Probe command.
  • Readiness path.
  • Install hint.
  • Optional JSON Option schema.
  • Optional Proxy strips prefix for apps such as code-server that do not support a base path.

After it is saved, users and admins can import it into templates. Existing templates are not changed automatically.

Expose a one-off app from a running workspace

Section titled “Expose a one-off app from a running workspace”

Use Extra apps when you do not need a reusable template launcher.

Workspace detail page with apps and extra workspace controls

  1. Start the workspace.
  2. Open the workspace detail page.
  3. In Extra apps, click Add app.
  4. Pick a preset or enter a custom name.
  5. Start your app inside the LabPod Terminal and bind it to the assigned port.
  6. Click Open on the Extra apps card.

For example:

Terminal window
streamlit run app.py --server.port $LABPOD_USER_PORT_1

Extra apps are per-workspace. They are a good fit for experiments; template launchers are better for repeatable tools you want on every new workspace.