Metadata-Version: 2.1
Name: labmachine
Version: 0.3.1
Summary: A simple creator of machines with Jupyterlab
Home-page: https://github.com/nuxion/labmachine
License: Apache-2.0
Keywords: jupyter,cloud
Author: nuxion
Author-email: nuxion@gmail.com
Requires-Python: >=3.8,<3.11
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Provides-Extra: gcs
Requires-Dist: apache-libcloud (>=3.6.0,<4.0.0)
Requires-Dist: click (>=8.1.3,<9.0.0)
Requires-Dist: cryptography (>=37.0.4,<38.0.0)
Requires-Dist: google-cloud-storage (>=1.31.0,<2.0.0); extra == "gcs"
Requires-Dist: nanoid (>=2.0.0,<3.0.0)
Requires-Dist: pydantic (>=1.9.2,<2.0.0)
Requires-Dist: rich (>=12.5.1,<13.0.0)
Requires-Dist: smart-open (>=6.0.0,<7.0.0); extra == "gcs"
Requires-Dist: tomli (>=2.0.1,<3.0.0)
Requires-Dist: tomli-w (>=1.0.0,<2.0.0)
Project-URL: Repository, https://github.com/nuxion/labmachine
Description-Content-Type: text/markdown

# labmachine

This is a POC with two purposes: refactoring a cluster package from [labfunctions](github.com/labfunctions/labfunctions) and allowing the creation and self registering of a jupyter instance.

This work was inpired by [Let Deep Learning VMs and Jupyter notebooks burn the midnight oil for you](https://cloud.google.com/blog/products/ai-machine-learning/let-deep-learning-vms-and-jupyter-notebooks-to-burn-the-midnight-oil-for-you-robust-and-automated-training-with-papermill)

Right now only works for Google Cloud but should be easy to expand to other providers. 


For examples, see [examples](examples/)

See `infra_[cpu|gpu].py` and `lab_[cpu|gpu].py`

`infra_*` files are raw implementacion of the cluster library.

Lab files are abstractions built over this library for jupyter lab provisioning.

## Features

- VM creation (Google)
- Jupyter on docker
- SSL certificates (ZeroSSL & Caddy)
- Volumes managments (Creation, Resizing, deletion, formating, etc)
- DNS A record creation (Google, Cloudflare)
- Automatic shutdown by inactivity (by Jupyter)
- GPU Provisioning (nvidia-smi installation, docker configuration, etc)
- Linux image creation (Packer)
- Entities types for autocompletion

# Documentation

- [Quickstart](docs/quickstart.md)
- [Permissions](docs/permissions.md)


## Next work

See https://trello.com/b/F2Smw3QO/labmachine


