https://github.com/nebari-dev/nebari-pi-coding-agent-pack
https://github.com/nebari-dev/nebari-pi-coding-agent-pack
Last synced: 17 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/nebari-dev/nebari-pi-coding-agent-pack
- Owner: nebari-dev
- License: apache-2.0
- Created: 2026-03-09T18:19:44.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-04-15T10:24:56.000Z (2 months ago)
- Last Synced: 2026-04-15T12:21:36.163Z (2 months ago)
- Language: Python
- Size: 372 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# nebari-pi-pack
Helm chart that extends Nebari's data-science JupyterHub stack with a Pi coding-agent workflow.
## What this chart adds
- Pi launcher service in Hub (`/services/pi-launcher/`, port `10300`)
- 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/`, port `10400`)
- Optional relay subsystem (core + dummy/slack/whatsapp adapters)
- Shared skills delivered from the Pi runtime image (no PVC sync job)
## Architecture
- JupyterHub remains the control plane.
- User requests Pi via launcher.
- JupyterHub spawns/controls named server `pi` per user.
- Pi pod serves browser terminal via `jhsingle_native_proxy` + `ttyd` + `pi` CLI.
- 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-learning` extension (`-e /usr/local/lib/node_modules/pi-self-learning/extensions/self-learning.ts`).
## Install
```bash
helm dependency update .
helm upgrade --install data-science-pack . \
--namespace data-science \
--wait --timeout 40m
```
### Example values
```bash
# 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 45m
```
## Important values
- `pi.image.*`
- `pi.sharedSkills.enabled`
- `pi.sharedSkills.mode` (`image`)
- `pi.sharedSkills.imagePath`
- `jupyterhub.custom.pi-image`
- `jupyterhub.custom.pi-skills-path`
- `jupyterhub.custom.pi-coding-agent-dir`
- `jupyterhub.custom.pi-session-viewer-*` (enable/port/S3 settings)
- `relay.*`
When relay is enabled, keep these aligned:
- `relay.core.piAgentDir`
- `jupyterhub.custom.pi-coding-agent-dir`
## Build Pi image with baked skills
`images/pi-agent/Dockerfile` now bakes skills directly from local repository files:
- `skills/shared-skills/jhub-deploy/SKILL.md`
- `skills/shared-skills/observability/SKILL.md`
- `skills/shared-skills/web-browser/SKILL.md`
- `skills/shared-skills/gog/SKILL.md`
- `skills/shared-skills/notion/SKILL.md`
- `skills/shared-skills/video-frames/SKILL.md`
- `skills/shared-skills/markdown-converter/SKILL.md`
Example:
```bash
docker build \
-f images/pi-agent/Dockerfile \
-t quay.io/openteams/pi-coding-agent-demo:baked- \
.
```
Then set your Helm values to the pushed image tag/digest:
- `pi.image.repository`
- `pi.image.tag`
- `jupyterhub.custom.pi-image` (prefer digest pin)
## Notes
- Legacy PVC-based shared-skills sync is removed from runtime flow.
- Existing running Pi sessions keep old image/skills until pod restart.