Skip to content

Extra apps & ports

The Extra apps section, under Manage workspace on the workspace detail page, lets you expose services that aren’t built-in launchers. Each gets its own link behind your session cookie.

When you declare a port, LabPod reserves a port number from a pool and maps it through the reverse proxy. You then start your app inside the workspace and bind it to that port. LabPod serves it at /ws/<workspace-id>/_user/<name>/.

User-declared ports and built-in launchers use separate URL namespaces. A user app can therefore have the same name as a launcher without a conflict: /ws/<workspace-id>/_user/jupyter/ is the user app, while /ws/<workspace-id>/jupyter/ is the launcher. Old untyped user-port bookmarks are not aliases; create or open the app from the workspace page to get the typed URL.

The link works immediately once you click Add app - you don’t need to restart the workspace. Port declarations survive stop/start; LabPod re-wires the proxy when the workspace starts again.

  1. On the workspace detail page, open Manage workspace → Extra apps and click Add app.
  2. Pick a preset (TensorBoard, Gradio, Streamlit, FastAPI) or type a custom name.
    • Names must be lowercase letters, digits, and dashes (e.g. gradio, my-app).
  3. Click Add.

LabPod shows the link immediately: http://<host>:<port>/ws/<workspace-id>/_user/<name>/.

Open the LabPod Terminal and start your app bound to the port LabPod assigned. You can find the port number from the workspace detail page, or read it from the environment variable $LABPOD_USER_PORT_<n> (where <n> is the slot index shown in the Advanced section of the Add app dialog).

For example, to run a Gradio app on the assigned port:

Terminal window
python app.py --server-port $LABPOD_USER_PORT_1

For Streamlit:

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

Then click Open in the Extra apps card to load it in a new browser tab.

If you start an app inside the workspace without declaring a port first, LabPod may notice it listening and list it under Apps running in your workspace with the port number and the process command. Click Open there and LabPod assigns a free pool slot that forwards to it - no manual Add app dialog or port entry needed. This only helps once the app is already listening; declare the port yourself first if you’d rather bind to LabPod’s assigned port from the start.

  • You can have up to 8 extra apps per workspace (the pool size).
  • If all slots are in use, the Add app button is disabled until you delete one.
  • Port declarations are per-workspace. A different workspace has its own pool.

Click Delete on the app card. The port is returned to the pool. The app process inside the workspace keeps running until you stop it yourself.