This doc describes concepts in the
envd. The name
envd is inspired by systemd. 
The core abstractions in
envd are environments and images. Images are built from the given
build.envds and follow docker image spec v1.2. Thus you can use the images built by
envd with Docker directly.
Environments are containers run by docker, Kubernetes, or some other OCI runtime spec-compatible runtimes (e.g. runc, crun, containerd).
build.envd is written in Starlark, a simplified dialect of Python 3. The default function
build() will be invoked on startup.
# build.envd # The function `build` will be evaluated by default. def build(): # envd instructions here.
config.jupyter can be used to register information. The information will be kept in a static graph in the memory.
envd uses the static graph to build the environment at the
envd of execution.
envd evaluates the
build function with the starlark interpreter, thus you can use loops, if/else conditional execution or other statements in
Code below is for conceptual demonstration purposes only. Some features are not yet implemented.
# build.envd # The function `build` will be evaluated by default. def build(): version = "2.9.1" dev_env(version, "zsh") # Here is a new function and it is used in `build()` def dev_env(version, custom_shell): install.python_packages(name=[ "tensorflow=="+version, "tensorboard" ]) config.jupyter() # Configure zsh if it is specified. if custom_shell == "zsh": shell("zsh")