jupyter/skills/jupyter-ml/SKILL.md
Full CUDA ML JupyterLab box 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 box.
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
candy:
- agent-forwarding
- jupyter-ml
- notebook-templates
- dbus
- charly
ports:
- "8888:8888"
platforms:
- linux/amd64
The jupyter-ml candy 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 candies from the box:
agent-forwarding — SSH/GPG agent forwardingnotebook-templates — Starter notebooks (data candy, seeds /workspace)dbus — D-Bus session buscharly — OpenCharly 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-candy) |
This box receives env_provide variables from infrastructure candies when they are deployed:
| Variable | Injected by | Value |
|----------|------------|-------|
| OLLAMA_HOST | /charly-ollama:ollama | http://charly-ollama:11434 |
| PGHOST | /charly-infrastructure:postgresql | charly-postgresql |
| PGPORT | /charly-infrastructure:postgresql | 5432 |
| REDIS_URL | /charly-infrastructure:redis or /charly-infrastructure:valkey | redis://charly-<image>:6379 |
These variables are injected automatically into the container environment at charly config time when the corresponding service is deployed. No manual -e flags needed.
/mcp — 11 tools for programmatic notebook access (server manages CRDT rooms invisibly; see /charly-jupyter:jupyter-mcp for the auto-attach + canonicalization design)charly box build jupyter-ml
charly config jupyter-ml
charly start jupyter-ml
charly status jupyter-ml
charly logs jupyter-ml -f
# JupyterLab: http://localhost:8888
# MCP endpoint: http://localhost:8888/mcp
charly shell jupyter-ml -c "pixi run verify-pytorch"
charly shell jupyter-ml -c "pixi run verify-vllm"
charly shell jupyter-ml -c "pixi run verify-unsloth"
charly shell jupyter-ml -c "pixi run verify-mcp"
charly shell jupyter-ml -c "pixi run verify-collaboration"
| | jupyter | jupyter-ml | |---|---|---| | Base | fedora | nvidia | | CUDA | No | Yes | | Arch | amd64 + arm64 | amd64 | | MCP | CRDT (11 tools) | CRDT (11 tools) | | Collaboration | Yes | Yes | | ML Stack | No | Full | | Volume | workspace | workspace + models | | Notebook dir | /workspace | /workspace |
/charly-jupyter:jupyter-ml-notebook — Same stack with fine-tuning notebooks/charly-jupyter:jupyter — Lightweight variant (no CUDA, multi-arch)/charly-languages:python-ml — ML base without Jupytercachyos.jupyter-ml is the CachyOS GPU sibling (built on the cachyos.nvidia GPU base) in the overthinkos/cachyos submodule. See /charly-distros:cachyos.MCP testing: inherits 3 deploy-scope mcp: checks from the jupyter-ml candy (ping, list-tools, call list_notebooks). Run charly check live jupyter-ml --filter mcp to exercise them. See /charly-build:charly-mcp-cmd.
MUST be invoked before building, deploying, configuring, or troubleshooting the jupyter-ml box.
/charly-image:image — image family umbrella (candy: image entries — those carrying base:/from: — in charly.yml, build/validate/inspect/list)/charly-build:build — the embedded build 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).