id = "node-red"
name = "Node-RED"
homepage = "https://nodered.org/"
description = "Low-code programming for event-driven applications"
executables = ["node-red"]
[dotfiles]
paths = [
"~/.node-red/settings.js",
"~/.node-red/flows*.json",
]
secret = ["~/.node-red/flows*_cred.json"]
[commands]
format = 1
label = "Start Node-RED"
description = "Start the Node-RED runtime. The admin subcommand and telemetry/title options are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.source]]
id = "help"
kind = "help"
url = "https://github.com/node-red/node-red/blob/HEAD/packages/node_modules/node-red/red.js"
revision = "red.js usage text 2026-10-27"
evidence = """
Usage: node-red [-v] [-?] [--settings settings.js] [--userDir DIR]
[--port PORT] [--title TITLE] [--safe] [flows.json]
-p, --port PORT port to listen on
-s, --settings FILE use specified settings file
-u, --userDir DIR use specified user directory
-v, --verbose enable verbose output
--safe enable safe mode
"""
[[commands.field]]
id = "flows"
label = "Flows file"
description = "Defaults to flows.json in the user directory."
type = "path"
position = 0
path = { kind = "file", role = "input", must_exist = false }
sources = ["help"]
[[commands.field]]
id = "port"
label = "Port"
type = "integer"
option = ["--port", "-p"]
sources = ["help"]
[[commands.field]]
id = "settings"
label = "Settings file"
type = "path"
option = ["--settings", "-s"]
path = { kind = "file", role = "input", must_exist = true }
sources = ["help"]
[[commands.field]]
id = "user_dir"
label = "User directory"
type = "path"
option = ["--userDir", "-u"]
path = { kind = "directory", role = "input", must_exist = false }
sources = ["help"]
[[commands.field]]
id = "verbose"
label = "Verbose output"
type = "boolean"
option = ["--verbose", "-v"]
sources = ["help"]
[[commands.field]]
id = "safe"
label = "Safe mode"
description = "Start without running the flows."
type = "boolean"
option = ["--safe"]
sources = ["help"]
[[commands.task]]
id = "start"
label = "Start on a port"
fields = ["port", "user_dir"]
required = ["port"]
[[commands.task]]
id = "safe_start"
label = "Start in safe mode"
fields = ["safe", "user_dir"]
required = ["safe"]
set = { safe = [true] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["flows", "port", "user_dir", "safe"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["settings", "verbose"]