This is a collection of recipes that aims to simplify:
- Configuring and running an Infernet Node.
- Configuring and running services on an Infernet Node.
Node recipes reside under the node/
directory.
- Sub-directories
node/**
represent different connected chain configurations. - Sub-directories under each chain (e.g.
node/base/**
) represent Infernet Node versions. - Each directory
node/<chain>/<version>/
contains aconfig.json
, the node recipe file, along with auxiliary files required for node deployment.
Service (container) recipes reside under services/
.
- Sub-directories
services/**
represent different Infernet-compatible services. - Sub-directories under each service (e.g.
services/onnx-inference/**
) represent service versions. - Each directory
services/<service>/<version>/
contains arecipe.json
, the service recipe file, along with a README with more details.
Recipes are json
files that contain:
- A
config
section, which is the (incomplete) configuration object with several required and/or optional fields pre-specified. - An
inputs
section, which describes the user inputs necessary to transform theconfig
into a complete configuration object. See Inputs.
Recipe inputs are specified by the following fields:
id
(string): The ID of the variable.path
(string): The path in theconfig
object where the variable belongs. See Path Rules.type
(string): The type of the variable.required
(boolean): Whether user input is required.default
(any, optional): The default value of the variable, if applicable.description
(string, optional): The description of the variable.
Object properties within the config
object are specified as paths joined by .
(dots). For example, path
chain.wallet.private_key
refers to
config["chain"]["wallet"]["private_key"]
Partial substitutions are also possible with the #
. For example, path
command#NUM_WORKERS
refers to the substring ${NUM_WORKERS}
within
config["command"]