Skip to content

Migrating to Language Pipes 2.0

Language Pipes 2.0.0 replaces the flag-driven serve/init CLI with a TOML configuration file plus an interactive TUI. No CLI flags configure a node anymore — everything (model selection, networking, ports, security) now lives in the TOML config file, and only a handful of machine-local settings are controlled by environment variables.

If you have a 1.x config file, scripts, or environment variables, you’ll need to update them as described below.


1. CLI commands

1.x2.0.0Notes
language-pipes serve [flags...]language-pipes -c config.toml runNo more per-flag overrides — all settings come from the TOML file.
language-pipes init [file]language-pipes (launch the TUI)The TUI now creates, edits, and saves configurations interactively.
(n/a)language-pipes -c config.toml configNew: prints a resolved config as a human-readable report (not valid TOML).
(n/a)language-pipes -c config.toml --startNew: launches the TUI and immediately starts serving without the startup confirmation.

Argument order matters. -c/--config, --start, -v, and -h are global options and must come before the subcommand:

Terminal window
# 1.x
language-pipes serve --config config.toml --node-id node-1 --openai-port 8000 \
--layer-models "id=Qwen/Qwen3-1.7B,device=cpu,memory=4" --end-models Qwen/Qwen3-1.7B
# 2.0.0
language-pipes -c config.toml run

-c/--config accepts either a path containing .toml, or the name of a saved configuration under <app_dir>/configs/<name>.toml:

Terminal window
language-pipes -c config.toml run # explicit path
language-pipes -c node4 run # resolves <app_dir>/configs/node4.toml

All of the old serve flags — --node-id, --openai-port, --layer-models, --end-models, --num-local-layers, --logging-level/-l, --bootstrap-address, --whitelist-ips, --whitelist-node-ids, --app-dir, --model-dir, --print-times — are removed. Move these values into your TOML config (see below), or, for the handful of machine-local ones, into environment variables.

keygen is unchanged.


2. Configuration file changes

Renamed properties

1.x key2.0.0 keyNotes
oai_port / openai_portjob_portTop-level. Port for the OpenAI-compatible API server.
[[layer_models]]idmodel_idPer-entry field.
[[layer_models]]max_memorymemoryPer-entry field.

Bootstrap node(s)

The single flat bootstrap_address / bootstrap_port pair is replaced by a [[bootstrap_nodes]] array of tables, which lets you list multiple peers:

# 1.x
bootstrap_address = "192.168.0.2"
bootstrap_port = 5000
# 2.0.0
[[bootstrap_nodes]]
address = "192.168.0.2"
port = 5000

Network key

network_key used to be a path to a key file generated by language-pipes keygen. In 2.0.0 it is the hex key string itself, inlined directly into the TOML.

The contents of an old key file are the hex string, so migration is just:

Terminal window
cat network.key
# e.g. 9f86d081884c7d659a2feaa0c55ad015...
# 1.x
network_key = "network.key"
# 2.0.0
network_key = "9f86d081884c7d659a2feaa0c55ad015"

You can also generate a fresh key with language-pipes keygen (prints the hex string and writes it to network.key) or from the network configuration screen in the TUI.

Removed properties

These no longer exist in the TOML config and have no config-file replacement:

1.x keyWhat to do instead
model_validationRemoved entirely — model weight hash validation is no longer configurable.
max_pipesRemoved entirely.
print_timesRemoved entirely.
logging_levelRemoved. Logging is fixed at INFO and written to a per-session log file under the app’s log directory.
app_dirSet the LP_APP_DIR environment variable instead (see below).
model_dirSet the LP_MODEL_DIR environment variable instead (see below).
num_local_layersSet the LP_NUM_LOCAL_LAYERS environment variable instead (see below).

Key ordering now matters

In TOML, keys written after an array-of-tables header ([[layer_models]], [[bootstrap_nodes]]) belong to that table, not the top-level document. Put all top-level scalar keys (node_id, job_port, end_models, peer_port, network_key, etc.) before any [[layer_models]] or [[bootstrap_nodes]] blocks.


3. Environment variables

1.x exposed a generic LP_* override for almost every config property. In 2.0.0, environment variables only control machine-local settings; the TOML config is authoritative for everything else.

1.x environment variable2.0.0
LP_NODE_ID, LP_LAYER_MODELS, LP_OAI_PORT, LP_API_KEYS, LP_PEER_PORT, LP_NETWORK_IP, LP_BOOTSTRAP_ADDRESS, LP_BOOTSTRAP_PORT, LP_NETWORK_KEY, LP_WHITELIST_IPS, LP_WHITELIST_NODE_IDS, LP_MAX_PIPES, LP_MODEL_VALIDATION, LP_PRINT_TIMES, LP_LOGGING_LEVELRemoved. Set these in the TOML config file instead.
LP_APP_DIRUnchanged.
LP_MODEL_DIRUnchanged.
(n/a)LP_NUM_LOCAL_LAYERS — new home for the old --num-local-layers / num_local_layers setting. Default 1.
LP_HUGGINGFACE_TOKENStill read, but no longer the primary mechanism — see below.
Terminal window
export LP_APP_DIR=~/.config/language_pipes
export LP_MODEL_DIR=~/.cache/language_pipes/models
export LP_NUM_LOCAL_LAYERS=1

4. HuggingFace token

In 1.x, LP_HUGGINGFACE_TOKEN was the main way to supply a token for gated models. In 2.0.0, the token is stored in <app_dir>/globals.toml (hf_token). The TUI prompts for it the first time a gated model needs to be downloaded and offers to save it for future use. LP_HUGGINGFACE_TOKEN is still read, but won’t be persisted for you — use the TUI prompt (or write the token into globals.toml yourself) for a one-time setup.


5. Full example

1.x config:

node_id = "node-1"
openai_port = 8000
api_keys = ["test_key"]
[[layer_models]]
id = "Qwen/Qwen3-1.7B"
device = "cpu"
max_memory = 4
end_models = ["Qwen/Qwen3-1.7B"]
peer_port = 5000
network_ip = "192.168.0.1"
bootstrap_address = "192.168.0.2"
bootstrap_port = 5000
network_key = "network.key"
logging_level = "INFO"
max_pipes = 1
model_validation = true
print_times = false
num_local_layers = 1
app_dir = "~/.config/language_pipes"
model_dir = "~/.cache/language_pipes/models"

2.0.0 config:

node_id = "node-1"
job_port = 8000
api_keys = ["test_key"]
end_models = ["Qwen/Qwen3-1.7B"]
peer_port = 5000
network_ip = "192.168.0.1"
network_key = "9f86d081884c7d659a2feaa0c55ad015"
[[layer_models]]
model_id = "Qwen/Qwen3-1.7B"
device = "cpu"
memory = 4
[[bootstrap_nodes]]
address = "192.168.0.2"
port = 5000
Terminal window
# Machine-local settings move to the environment
export LP_APP_DIR=~/.config/language_pipes
export LP_MODEL_DIR=~/.cache/language_pipes/models
export LP_NUM_LOCAL_LAYERS=1
Terminal window
language-pipes -c config.toml run