Helm chart that extends Nebari's data-science JupyterHub stack with a Pi coding-agent workflow.
- Pi launcher service in Hub (
/services/pi-launcher/, port10300) - Pi named-server profiles (
pi-small,pi-medium,pi-large) - Pi home/quick-access UI customizations
- Optional Pi session sharing RBAC + handlers
- Optional Pi Session Viewer service (
/services/pi-session-viewer/, port10400) - Optional relay subsystem (core + dummy/slack/whatsapp adapters)
- Shared skills delivered from the Pi runtime image (no PVC sync job)
- JupyterHub remains the control plane.
- User requests Pi via launcher.
- JupyterHub spawns/controls named server
piper user. - Pi pod serves browser terminal via
jhsingle_native_proxy+ttyd+piCLI. - Pi startup includes
--skill /opt/nebari/baked-skills/shared-skills. - Pi startup loads the OpenAI Codex device-code OAuth override extension (
-e /opt/nebari/extensions/openai-codex-device-auth.ts). - Pi startup loads session sharing commands extension (
-e /opt/nebari/extensions/session-share.ts). - Pi startup also loads
pi-self-learningextension (-e /usr/local/lib/node_modules/pi-self-learning/extensions/self-learning.ts).
helm dependency update .
helm upgrade --install data-science-pack . \
--namespace data-science \
--wait --timeout 40m# Local baseline
helm upgrade --install data-science-pack . \
--namespace data-science \
-f examples/values-local.yaml \
--wait --timeout 40m
# Local reliable
helm upgrade --install data-science-pack . \
--namespace data-science \
-f examples/values-local-reliable.yaml \
--wait --timeout 45m
# Relay profile
helm upgrade --install data-science-pack . \
--namespace data-science \
-f examples/values-relay.yaml \
--wait --timeout 50m
# Production-style baked skills profile
helm upgrade --install data-science-pack . \
--namespace data-science \
-f examples/values-baked-skills.yaml \
--wait --timeout 45mpi.image.*pi.sharedSkills.enabledpi.sharedSkills.mode(image)pi.sharedSkills.imagePathjupyterhub.custom.pi-imagejupyterhub.custom.pi-skills-pathjupyterhub.custom.pi-coding-agent-dirjupyterhub.custom.pi-session-viewer-*(enable/port/S3 settings)relay.*
When relay is enabled, keep these aligned:
relay.core.piAgentDirjupyterhub.custom.pi-coding-agent-dir
images/pi-agent/Dockerfile now bakes skills directly from local repository files:
skills/shared-skills/jhub-deploy/SKILL.mdskills/shared-skills/observability/SKILL.mdskills/shared-skills/web-browser/SKILL.mdskills/shared-skills/gog/SKILL.mdskills/shared-skills/notion/SKILL.mdskills/shared-skills/video-frames/SKILL.mdskills/shared-skills/markdown-converter/SKILL.md
Example:
docker build \
-f images/pi-agent/Dockerfile \
-t quay.io/openteams/pi-coding-agent-demo:baked-<tag> \
.Then set your Helm values to the pushed image tag/digest:
pi.image.repositorypi.image.tagjupyterhub.custom.pi-image(prefer digest pin)
- Legacy PVC-based shared-skills sync is removed from runtime flow.
- Existing running Pi sessions keep old image/skills until pod restart.