Skip to content

Extra apps & ports

The Extra apps section 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 template 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 template 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, scroll to 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.

  • 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.