Skip to main content

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, and sftp from OpenSSH
  • git
  • rsync

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


Download files

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

Source Distribution

jovykit-3.0.1.tar.gz (41.6 kB view details)

Uploaded Source

Built Distribution

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

jovykit-3.0.1-py3-none-any.whl (31.4 kB view details)

Uploaded Python 3

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

Hashes for jovykit-3.0.1.tar.gz
Algorithm Hash digest
SHA256 96adadf8cda0d871c261ee3cffe888a8d1a42d9dcd384f800073a18df8ff13c7
MD5 3cd8c3746784b9b503057b4d4849747f
BLAKE2b-256 8ec8fea02a6b6f818a48f3776ffd11f88c5b651b58bf7d9380d597223c0eb88f

See more details on using hashes here.

Provenance

The following attestation bundles were made for jovykit-3.0.1.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-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

Hashes for jovykit-3.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9da29b837062cba92e68bc3ac1ebb539978a05a078e537e8bd4f04647fc38968
MD5 acd812be9d64eab9cc72397ec9796355
BLAKE2b-256 6a838d572ec0430d8ebcb2b68245a4cb228a833e5f576225aaece26f2cf1fe25

See more details on using hashes here.

Provenance

The following attestation bundles were made for jovykit-3.0.1-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