Skip to main content

Layered Jupyter container images and project-local JovyKit environments.

Project description

JovyKit logo

JovyKit

Project-local JupyterLab environments, built and run through Docker Compose.

CI Version CLI Python Image Python GHCR License

Model

compose.yaml is runtime. Dockerfile is the project overlay. requirements.txt is project Python packages. Python comes from the selected image tag, for example :python-3.13.

  • jovy initializes an empty directory, or prints help in an existing project.
  • jovy init creates compose.yaml, Dockerfile, requirements.txt, work/, and .jupyter/.
  • jovy up, down, start, stop, restart, config, logs, build, and watch pass through to Docker Compose.
  • jovy add and jovy remove edit requirements.txt.
  • jovy status, shell, run, open, and doctor add small Jupyter-focused conveniences.
  • jovy compose ... is the Docker Compose escape hatch.

There is no JovyKit config file. Edit compose.yaml, Dockerfile, or requirements.txt directly.

Requirements

  • Python 3.9 or newer on the host.
  • Docker Engine.
  • Docker Compose plugin support.
  • Optional GPU runtime support for gpus: all.

Install

python -m pip install -e .
jovy --version

Quick Start

jovy init --image-level base --python 3.13 --port 8888
jovy add pandas scikit-learn
jovy up -d
jovy open

Common commands:

jovy build
jovy watch
jovy logs -f
jovy status
jovy shell
jovy down
jovy compose ps

Images

Image levels map to published JovyKit images:

ghcr.io/mihneateodorstoica/jovykit-minimal:python-3.13
ghcr.io/mihneateodorstoica/jovykit-base:python-3.13
ghcr.io/mihneateodorstoica/jovykit-extended:python-3.13
ghcr.io/mihneateodorstoica/jovykit-full:python-3.13

minimal and base publish python-3.9 through python-3.14. extended and full publish python-3.11 through python-3.13. Scheduled images also get nightly-python-3.x, weekly-python-3.x, and monthly-python-3.x tags.

minimal, base, and extended are curated cuts from the full stack. full is intentionally huge and keeps heavyweight ML, AI, cloud, distributed, and app runtimes in one batteries-included layer.

jovy init --image-level minimal --python 3.11
jovy init --image-level base --python 3.12
jovy init --image-level extended --python 3.13
jovy init --image-level full --python 3.13

The generated Compose file passes only JOVY_BASE_IMAGE. It does not pass a Python version build argument.

Build published image targets from the single multi-stage Dockerfile:

./build.sh minimal
./build.sh --python-version 3.13 base
./build.sh --python 3.11 --python 3.12 --python 3.13 all

With no args, ./build.sh builds all supported image and Python tag pairs.

Dependencies

Use requirements.txt.

jovy add pandas scikit-learn
jovy remove pandas

Compose Watch rebuilds when dependency files change:

jovy watch

Persistent Files

Generated projects mount only the durable user paths:

./work      -> /home/jovyan/work
./.jupyter  -> /home/jovyan/.jupyter

Project notebooks and Jupyter settings survive rebuilds and container removal. Other container state is disposable.

GPU

GPU support is explicit:

jovy init --gpu none
jovy init --gpu all

By default, jovy init uses all when a local GPU is detected. none omits the Compose GPU field. all writes Compose gpus: all.

Repository Checks

ruff check .
black --check .
mypy jovykit tests main.py
pytest --cov=jovykit --cov-report=term-missing

Docker checks are opt-in:

pytest -m docker --run-docker

Repository Layout

jovykit/              Python CLI package
image/                Published image layers
site/                 GitHub Pages site
wiki/                 GitHub Wiki source
.github/workflows/    CI, release, docs, and image automation

License

JovyKit is licensed under the MIT License. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jovykit-8.0.0.tar.gz (20.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jovykit-8.0.0-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file jovykit-8.0.0.tar.gz.

File metadata

  • Download URL: jovykit-8.0.0.tar.gz
  • Upload date:
  • Size: 20.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jovykit-8.0.0.tar.gz
Algorithm Hash digest
SHA256 112e598adeaee358e708f6157280d506828cf7b9ddcf92b46a30febda1637047
MD5 bc1eae90aeb74152768d5ff063f64ab9
BLAKE2b-256 32afdf75e0000ddfe48ce8e6aee0c33d476861517939b8f74d1643cc537de61e

See more details on using hashes here.

Provenance

The following attestation bundles were made for jovykit-8.0.0.tar.gz:

Publisher: ci-release.yml on MihneaTeodorStoica/jovykit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jovykit-8.0.0-py3-none-any.whl.

File metadata

  • Download URL: jovykit-8.0.0-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jovykit-8.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 864e142a37e9a41d1134b56f120b519ebfee656345983a4a0fe85de1ad79c7ee
MD5 c1c6b719165daa7237b96c52239cfdf6
BLAKE2b-256 453afd2660954a0adb8a803e249a4f07e06f72faec7ceccc643b3a179a3009cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for jovykit-8.0.0-py3-none-any.whl:

Publisher: ci-release.yml on MihneaTeodorStoica/jovykit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page