Layered Jupyter container images and project-local JovyKit environments.
Project description
JovyKit
JovyKit provides layered Jupyter notebook container images for data science, machine learning, and research workflows.
The images are designed as progressively larger environments, so users can pick the smallest image that fits their workload:
minimal: Jupyter runtime plus the core scientific Python stack.base: everyday data science, classical machine learning, statistics, and local data access.extended: advanced machine learning, NLP, time series, distributed compute, and API tooling.full: heavy frameworks, generative AI tooling, graph and geospatial analysis, big data, and additional research utilities.
Images
Published image variants use the following naming pattern:
ghcr.io/mihneateodorstoica/jovykit-TYPE:latest
ghcr.io/mihneateodorstoica/jovykit-TYPE:nightly
ghcr.io/mihneateodorstoica/jovykit-TYPE:lts
TYPE is one of minimal, base, extended, or full.
All image variations include client-side SSH tooling for Git remotes, file copying, and SSH-backed sync:
ssh,scp, andsftpfrom OpenSSHgitrsync
Build Locally
Build a specific image target from the repository root:
docker build --target minimal -t jovykit-minimal ./image
docker build --target base -t jovykit-base ./image
docker build --target extended -t jovykit-extended ./image
docker build --target full -t jovykit-full ./image
CLI
JovyKit includes a CLI for project-local container environments. The mental model is:
.jovy is to JovyKit what .venv is to Python.
Create an environment, add project packages, and run Jupyter:
jovy init .jovy --image base --gpus auto
jovy add pandas scikit-learn plotly
jovy install
jovy run
Run jovy with no subcommand to open the interactive terminal dashboard for
the current project. The dashboard shows environment status, recent logs, and a
jovy> command line for common operations. Closing the dashboard with quit or
exit does not stop the container; use jovy down or down inside the
dashboard when you want to stop it.
The CLI creates a local work/ directory for project files and writes a
root jovy.toml plus a reproducible overlay build recipe under .jovy/:
jovy.toml
work/
.jovy/
jovy.lock
Containerfile
compose.yaml
state.json
Useful commands:
jovy --version
jovy
jovy status
jovy status --json
jovy remove plotly
jovy add -r requirements.txt
jovy install
jovy install --upgrade
jovy up --no-build
jovy down --timeout 10
jovy restart
jovy build --pull
jovy run --watch
jovy logs --tail 100 --since 10m --timestamps --no-follow
jovy shell -c "python --version"
jovy exec python --version
jovy clean
jovy destroy --keep-image
Most commands accept --env PATH when you want to operate on a JovyKit
environment outside the current project tree. jovy init also supports
customizing the generated project name, overlay image name/tag, Jupyter port,
GPU mode, Jupyter token/password/log level, and mounted work directory. The
default token is empty and the default password is jovykit, so JovyKit does
not rely on Jupyter's generated token.
Docker Compose watch runs with jovy run; jovy up stays detached and starts
a lightweight watcher that restarts the container when jovy.toml changes.
Use jovy up for background startup, jovy down to stop the environment, and
jovy run when you want attached foreground Jupyter logs.
jovy.toml stores direct project packages under [python].packages. JovyKit
compiles them with uv into .jovy/jovy.lock, and Docker installs from that
lockfile. jovy.toml can also customize runtime environment variables, extra
volumes, restart policy, Jupyter command/logging, Compose Watch behavior, image
build arguments, build target/platform, apt packages, and uv/pip install
options.
Repository Layout
jovykit/ Python CLI package
image/ Dockerfile and layered image dependency manifests
docs/ mdBook documentation
.github/workflows/ CI, security, docs, and image publishing automation
Documentation
The mdBook source lives in docs/src.
To build the documentation locally:
mdbook build docs
Testing
Run the default deterministic test suite with coverage:
pytest --cov=jovykit --cov-report=term-missing --cov-fail-under=90
Docker-facing smoke tests are opt-in so routine CI and local test runs stay fast and deterministic:
pytest -m docker --run-docker
Contributing
Contributions are welcome. See CONTRIBUTING.md for the development workflow and CODE_OF_CONDUCT.md for community expectations.
License
This project is licensed under the MIT License. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jovykit-3.0.1.tar.gz.
File metadata
- Download URL: jovykit-3.0.1.tar.gz
- Upload date:
- Size: 41.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96adadf8cda0d871c261ee3cffe888a8d1a42d9dcd384f800073a18df8ff13c7
|
|
| MD5 |
3cd8c3746784b9b503057b4d4849747f
|
|
| BLAKE2b-256 |
8ec8fea02a6b6f818a48f3776ffd11f88c5b651b58bf7d9380d597223c0eb88f
|
Provenance
The following attestation bundles were made for jovykit-3.0.1.tar.gz:
Publisher:
ci-release.yml on MihneaTeodorStoica/jovykit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jovykit-3.0.1.tar.gz -
Subject digest:
96adadf8cda0d871c261ee3cffe888a8d1a42d9dcd384f800073a18df8ff13c7 - Sigstore transparency entry: 1440010368
- Sigstore integration time:
-
Permalink:
MihneaTeodorStoica/jovykit@caacc3d10d87859e6367e95c73d0f038ce250241 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MihneaTeodorStoica
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci-release.yml@caacc3d10d87859e6367e95c73d0f038ce250241 -
Trigger Event:
push
-
Statement type:
File details
Details for the file jovykit-3.0.1-py3-none-any.whl.
File metadata
- Download URL: jovykit-3.0.1-py3-none-any.whl
- Upload date:
- Size: 31.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9da29b837062cba92e68bc3ac1ebb539978a05a078e537e8bd4f04647fc38968
|
|
| MD5 |
acd812be9d64eab9cc72397ec9796355
|
|
| BLAKE2b-256 |
6a838d572ec0430d8ebcb2b68245a4cb228a833e5f576225aaece26f2cf1fe25
|
Provenance
The following attestation bundles were made for jovykit-3.0.1-py3-none-any.whl:
Publisher:
ci-release.yml on MihneaTeodorStoica/jovykit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jovykit-3.0.1-py3-none-any.whl -
Subject digest:
9da29b837062cba92e68bc3ac1ebb539978a05a078e537e8bd4f04647fc38968 - Sigstore transparency entry: 1440010373
- Sigstore integration time:
-
Permalink:
MihneaTeodorStoica/jovykit@caacc3d10d87859e6367e95c73d0f038ce250241 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MihneaTeodorStoica
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci-release.yml@caacc3d10d87859e6367e95c73d0f038ce250241 -
Trigger Event:
push
-
Statement type: