Marketplace

jupyter

JupyterLab ML/AI development environment management via Podman Quadlet. Supports multi-instance deployment, GPU acceleration (NVIDIA/AMD/Intel), token authentication, and per-instance configuration. Use when users need to configure, start, stop, or manage JupyterLab containers for ML development.

$ Installieren

git clone https://github.com/atrawog/bazzite-ai-plugins /tmp/bazzite-ai-plugins && cp -r /tmp/bazzite-ai-plugins/bazzite-ai/skills/jupyter ~/.claude/skills/bazzite-ai-plugins

// tip: Run this command in your terminal to install the skill


name: jupyter description: | JupyterLab ML/AI development environment management via Podman Quadlet. Supports multi-instance deployment, GPU acceleration (NVIDIA/AMD/Intel), token authentication, and per-instance configuration. Use when users need to configure, start, stop, or manage JupyterLab containers for ML development.

Jupyter - ML/AI Development Environment

Overview

The jupyter command manages JupyterLab instances for ML/AI development using Podman Quadlet containers. Each instance runs as a systemd user service with optional GPU acceleration.

Key Concept: Multi-instance support allows running multiple isolated JupyterLab environments simultaneously, each on different ports with different GPU configurations.

Quick Reference

ActionCommandDescription
Configujust jupyter config [--instance=N] [--port=...] [--gpu-type=...]Configure instance N
Startujust jupyter start [--instance=N|all]Start instance(s)
Stopujust jupyter stop [--instance=N|all]Stop instance(s)
Restartujust jupyter restart [--instance=N|all]Restart instance(s)
Logsujust jupyter logs [--instance=N] [--lines=...]View logs
Listujust jupyter listList all instances
Statusujust jupyter status [--instance=N]Show instance status
URLujust jupyter url [--instance=N]Show access URL
Shellujust jupyter shell [--instance=N] [-- CMD...]Open shell in container
Token enableujust jupyter token-enable [--instance=N]Enable token auth
Token showujust jupyter token-show [--instance=N]Show token
Token disableujust jupyter token-disable [--instance=N]Disable token auth
Token regenerateujust jupyter token-regenerate [--instance=N]Generate new token
Deleteujust jupyter delete [--instance=N|all]Remove instance(s) and images

Parameters

ParameterLong FlagShortDefaultDescription
Instance--instance-n1Instance number (1, 2, 3...)
Port--port-p8888Web UI port
GPU Type--gpu-type-gautoGPU type: nvidia, amd, intel, none, auto
Image--image-i(default image)Container image
Tag--tag-tstableImage tag
Workspace--workspace-dir-w(empty)Mount to /workspace
Bind--bind-b127.0.0.1Bind address
Lines--lines-l50Log lines to show

Instance Numbering

  • Instance 1: Port 8888 (default)
  • Instance 2: Port 8889
  • Instance N: Port 8887+N

Configuration Examples

# Default: Instance 1, port 8888, auto-detect GPU
ujust jupyter config

# Instance 2 with custom port and NVIDIA GPU (long form)
ujust jupyter config --instance=2 --port=8889 --gpu-type=nvidia

# Instance 2 with custom port and NVIDIA GPU (short form)
ujust jupyter config -n 2 -p 8889 -g nvidia

# Instance 3 with AMD GPU
ujust jupyter config -n 3 -p 8890 -g amd

# No GPU acceleration
ujust jupyter config --gpu-type=none

# With workspace mount
ujust jupyter config --gpu-type=nvidia --workspace-dir=/home/user/projects

# Network-wide access
ujust jupyter config --bind=0.0.0.0

# Combine multiple options
ujust jupyter config -n 2 -p 8889 -g nvidia -b 0.0.0.0 -w /home/user/projects

Update Existing Configuration

Running config when already configured will update the existing configuration, preserving values not explicitly changed.

Shell Access

# Interactive bash shell
ujust jupyter shell

# Run specific command (use -- separator)
ujust jupyter shell -- pip list

# Shell in specific instance
ujust jupyter shell --instance=2 -- nvidia-smi

# Short form
ujust jupyter shell -n 2 -- nvidia-smi

Lifecycle Commands

Start/Stop/Restart

# Single instance (long form)
ujust jupyter start --instance=1
ujust jupyter stop --instance=1
ujust jupyter restart --instance=1

# Single instance (short form)
ujust jupyter start -n 1
ujust jupyter stop -n 1
ujust jupyter restart -n 1

# All instances
ujust jupyter start --instance=all
ujust jupyter stop --instance=all
ujust jupyter restart --instance=all

View Logs

# Follow logs (instance 1 default)
ujust jupyter logs

# Specific instance
ujust jupyter logs --instance=1

# Last N lines (long form)
ujust jupyter logs --lines=100

# Last N lines (short form)
ujust jupyter logs -l 100 -n 2

Get Access URL

ujust jupyter url
# Output: http://localhost:8888

# Specific instance
ujust jupyter url --instance=2

Token Authentication

By default, JupyterLab requires no token for local development. Enable token auth for remote access or shared environments.

# Enable token (generates random token) - instance 1 default
ujust jupyter token-enable

# Enable token for specific instance
ujust jupyter token-enable --instance=2

# Show current token
ujust jupyter token-show --instance=1

# Disable token (password-less access)
ujust jupyter token-disable

# Generate new token
ujust jupyter token-regenerate --instance=1

Configuration Files

FilePurposeLocation
Quadlet unitService definition~/.config/containers/systemd/jupyter-1.container
Instance configPer-instance settings~/.config/jupyter/instance-1.env

Volume Mounts

Container PathHost PathPurpose
/workspace$HOMEUser home directory
/home/jovyan/.jupyter~/.jupyterJupyter config

Common Workflows

Initial Setup

# 1. Configure JupyterLab with GPU support
ujust jupyter config --gpu-type=nvidia

# 2. Start the instance
ujust jupyter start

# 3. Get the URL
ujust jupyter url

# 4. Open in browser
# http://localhost:8888

Multiple Environments

# PyTorch environment (instance 1)
ujust jupyter config --instance=1 --gpu-type=nvidia

# TensorFlow environment (instance 2)
ujust jupyter config -n 2 -p 8889 -g nvidia

# CPU-only data science (instance 3)
ujust jupyter config -n 3 -p 8890 -g none

# Start all
ujust jupyter start --instance=all

# List all
ujust jupyter list

Remote Access

# Enable token for security
ujust jupyter token-enable

# Get token
ujust jupyter token-show
# Use: http://your-ip:8888/?token=<token>

GPU Support

Automatic Detection

ujust jupyter config  # Auto-detects GPU type

Manual Selection

GPU TypeFlag ValueRequirements
NVIDIA--gpu-type=nvidia or -g nvidiaNVIDIA drivers + nvidia-container-toolkit
AMD--gpu-type=amd or -g amdROCm drivers
Intel--gpu-type=intel or -g inteloneAPI runtime
None--gpu-type=none or -g noneCPU only

Verify GPU Access

ujust jupyter shell -- nvidia-smi  # NVIDIA
ujust jupyter shell -- rocm-smi    # AMD

Troubleshooting

Instance Won't Start

Symptom: ujust jupyter start fails

Check:

# Check service status
systemctl --user status jupyter-1

# Check logs
ujust jupyter logs --lines=50

Common causes:

  • Port already in use
  • GPU not available
  • Image not pulled

GPU Not Detected

Symptom: No GPU acceleration in notebooks

Check:

# Verify GPU config
ujust jupyter status

# Test inside container
ujust jupyter shell -- nvidia-smi

Fix:

# Reconfigure with explicit GPU type
ujust jupyter delete
ujust jupyter config --gpu-type=nvidia

Token Issues

Symptom: Can't access Jupyter, token required

Fix:

# Show current token
ujust jupyter token-show

# Or disable token for local use
ujust jupyter token-disable

Port Conflict

Symptom: "Address already in use"

Fix:

# Find what's using the port
lsof -i :8888

# Use different port
ujust jupyter config --port=8889

Cross-References

  • Related Skills: pod (build images), configure gpu (GPU setup)
  • GPU Setup: ujust config gpu setup
  • Documentation: Podman Quadlet Docs

When to Use This Skill

Use when the user asks about:

  • "install jupyter", "setup jupyterlab", "ML development"
  • "start jupyter", "stop jupyter", "restart jupyter"
  • "jupyter not working", "jupyter won't start"
  • "jupyter token", "jupyter password", "jupyter authentication"
  • "jupyter GPU", "jupyter nvidia", "jupyter cuda"
  • "multiple jupyter", "second jupyter instance"