Shared Workspace
The shared workspace is a ReadWriteMany PersistentVolumeClaim (10Gi) automatically mounted in all Jupyter notebook instances and batch job pods within a project.
Mount Path
Section titled “Mount Path”The shared workspace is available inside notebooks and batch jobs at:
/home/jovyan/work/shared/Structure
Section titled “Structure”shared/├── my-data.csv ← files you upload or create in JupyterLab├── reports/│ └── monthly.ipynb ← notebook to run as a batch job└── batch_outputs/ ├── abc123/ │ └── output.ipynb ← output from job abc123 └── def456/ └── output.ipynb ← output from job def456Lifecycle
Section titled “Lifecycle”- The shared workspace PVC is created on demand when the first batch job is submitted for a project
- Existing notebook deployments are automatically patched to mount it — no restart required
- New notebooks in the same project automatically receive the mount
Accessing from JupyterLab
Section titled “Accessing from JupyterLab”In JupyterLab, the shared workspace appears in the file browser under work/shared/. You can:
- Upload data files that batch jobs will process
- Save notebooks to
shared/so they can be submitted as batch jobs - Browse batch job outputs without leaving JupyterLab
Storage Capacity
Section titled “Storage Capacity”The shared workspace is provisioned with 10Gi of storage. To increase this, update the PVC size via kubectl:
kubectl patch pvc shared-workspace -n apps-<project-slug> \ -p '{"spec":{"resources":{"requests":{"storage":"50Gi"}}}}'Storage Class
Section titled “Storage Class”The shared workspace uses ReadWriteMany access mode, which requires an RWX-capable storage class such as:
- Longhorn (recommended for production)
- NFS CSI driver
- local-path in single-node k3d clusters (uses
ReadWriteOnceas fallback)
The storage class is configured via the STORAGE_CLASS_RWX environment variable on the backend.