ov-images/skills/jupyter-ml/SKILL.md
Full CUDA ML JupyterLab image with real-time collaboration and CRDT MCP server. Base: nvidia. Port 8888. GPU-accelerated ML training + collaborative notebooks. MUST be invoked before building, deploying, or troubleshooting the jupyter-ml image.
npx skillsauth add overthinkos/overthink-plugins jupyter-mlInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
jupyter-ml:
base: nvidia
layers:
- agent-forwarding
- jupyter-ml
- notebook-templates
- dbus
- ov
ports:
- "8888:8888"
platforms:
- linux/amd64
The jupyter-ml layer is a Tier 2 environment-owning meta-layer that composes:
llama-cpp — llama.cpp prebuilt binaries + GGUF toolsunsloth — vLLM 0.19 cu130 inference engine + fine-tuning (unsloth + unsloth-zoo) + vLLM torch.compile patchjupyter-mcp — CRDT MCP extension (fastmcp + jupyter_mcp package)Additional layers from the image:
agent-forwarding — SSH/GPG agent forwardingnotebook-templates — Starter notebooks (data layer, seeds ~/workspace)dbus — D-Bus session busov — Overthink CLIquay.io/fedora/fedora:43
└── fedora
└── fedora-nonfree (RPM Fusion repos)
└── nvidia (NVIDIA drivers + container toolkit)
└── jupyter-ml
| Port | Service |
|------|---------|
| 8888 | JupyterLab + MCP endpoint at /mcp |
| Name | Path | Purpose | |------|------|---------| | workspace | ~/workspace | Persistent notebook storage | | models | ~/.cache/huggingface | HuggingFace model cache (from unsloth sub-layer) |
This image receives env_provides variables from infrastructure layers when they are deployed:
| Variable | Injected by | Value |
|----------|------------|-------|
| OLLAMA_HOST | /ov-layers:ollama | http://ov-ollama:11434 |
| PGHOST | /ov-layers:postgresql | ov-postgresql |
| PGPORT | /ov-layers:postgresql | 5432 |
| REDIS_URL | /ov-layers:redis or /ov-layers:valkey | redis://ov-<image>:6379 |
These variables are injected automatically into the container environment at ov config time when the corresponding service is deployed. No manual -e flags needed.
/mcp — 13 tools for programmatic notebook accessov image build jupyter-ml
ov config jupyter-ml
ov start jupyter-ml
ov status jupyter-ml
ov logs jupyter-ml -f
# JupyterLab: http://localhost:8888
# MCP endpoint: http://localhost:8888/mcp
ov shell jupyter-ml -c "pixi run verify-pytorch"
ov shell jupyter-ml -c "pixi run verify-vllm"
ov shell jupyter-ml -c "pixi run verify-unsloth"
ov shell jupyter-ml -c "pixi run verify-mcp"
ov shell jupyter-ml -c "pixi run verify-collaboration"
| | jupyter | jupyter-ml | |---|---|---| | Base | fedora | nvidia | | CUDA | No | Yes | | Arch | amd64 + arm64 | amd64 | | MCP | CRDT (13 tools) | CRDT (13 tools) | | Collaboration | Yes | Yes | | ML Stack | No | Full | | Volume | workspace | workspace + models | | Notebook dir | ~/workspace | ~/workspace |
/ov-images:jupyter-ml-notebook — Same stack with fine-tuning notebooks/ov-images:jupyter — Lightweight variant (no CUDA, multi-arch)/ov-images:python-ml — ML base without JupyterMCP testing: inherits 3 deploy-scope mcp: checks from the jupyter-ml layer (ping, list-tools, call list_notebooks). Run ov test jupyter-ml --filter mcp or probe ad-hoc with ov test mcp list-tools jupyter-ml. See /ov:mcp.
MUST be invoked before building, deploying, configuring, or troubleshooting the jupyter-ml image.
/ov:image — image family umbrella (image: entries in overthink.yml, build/validate/inspect/list)/ov:build — build.yml vocabulary (distros, builders, init-systems)tools
Use when authoring or modifying a charly PLUGIN — a candy with a `plugin:` block that contributes Providers (verbs/kinds/deploy-targets/steps/builders/commands), its own CUE schema, builtin (compiled-in) or external (out-of-tree git repo). Covers the unified Provider model, the per-plugin CUE-schema contract (single source → Go params for dev + schema-over-Describe RPC for runtime), the SDK, and the loader.
tools
The CUE data-validation / configuration CLI (cue), pinned to v0.16.1. Use when working with the cue candy, installing the cue binary into a box or onto a target:local dev host, or running the offline schema-vendoring pipeline that feeds charly's egress validation.
tools
CUE EGRESS validation — validating (and, where it adds value, generating) the config files charly WRITES to a system BEFORE the bytes hit disk. MUST be invoked before working on charly/egress.go, the vendored schemas under candy/plugin-egress/egress-schemas/vendor/, the ValidateEgress / registerVendoredEgressKind path, the offline `task cue:vendor` pipeline, or adding an egress schema for any written artifact (cloud-init, k8s manifests, traefik routes, runtime config, install ledger, systemd/quadlet units, ssh_config, libvirt XML).
tools
Kubernetes cluster-probe declarative check verb — the `kube:` check verb (nodes, pods, ingress, storage class, addon health, apply/delete, and arbitrary resource GETs) served out-of-process by the candy/plugin-kube plugin (vendored client-go; no external kubectl required).