Problem
Operators cannot discover all supported runtime IGGY_* variables. Release builds warn and ignore unknown names.
Add the flag to iggy-server, iggy-connectors and iggy-mcp (add CLI parsing to MCP). Print sorted, deduplicated names/templates, one per stdout line, then exit 0 with empty stderr. Print no values, banners or logs. Handle it after argument parsing but before runtime creation, dotenv/config loading, credentials, plugins, filesystem changes or network activity, including with --fresh.
Scope and design
Reuse ConfigEnvMappings and provider naming rules, including nested fields, enum variants/tags, overrides and skips. Do not maintain a second config-field list or change parsing/validation behavior.
Include each binary's runtime process variables, including shared IGGY_DISPLAY_CONFIG, its config/dotenv paths and, for the server, root credentials and shard executor knobs. Separate these from scan-only allowances without removing those allowances. Exclude build-time IGGY_CI_BUILD, test/CLI-only names, other binaries' prefixes and non-IGGY_* variables. iggy-gateway-kafka remains out of scope: it does not use configs.
Templates
- Collapse only indexed vector segments to
<N>, including nested indices, e.g. IGGY_CLUSTER_NODES_<N>_IP. Keep whole-value leaf vectors as single names and preserve literal digits. Document per-field index limits in help/docs.
- Include both
IGGY_CONNECTORS_SINK_<KEY>_... and IGGY_CONNECTORS_SOURCE_<KEY>_... from their config mappings. <KEY> is the configured connector key uppercased. Document that these overrides require the local provider.
- Include
..._PLUGIN_CONFIG_<FIELD> for plugin overrides. <FIELD> denotes a top-level field, with underscores preserved, excluding reserved FORMAT. List ..._PLUGIN_CONFIG_FORMAT explicitly. These are passthrough templates, not a guarantee that a plugin accepts every field. Do not load plugins to enumerate them.
Acceptance
- Test mapping coverage and exclusions per binary, plus nested/leaf vectors, index bounds, enum deduplication and sink/source templates. Exercise real override parsing, including
FORMAT; template matches need not be unique.
- Subprocess tests verify identical, clean output with missing/invalid config, invalid env values and dotenv files, no services/plugins available, and no startup side effects.
- Document the flag and placeholders in
--help and configuration docs.
Problem
Operators cannot discover all supported runtime
IGGY_*variables. Release builds warn and ignore unknown names.Add the flag to
iggy-server,iggy-connectorsandiggy-mcp(add CLI parsing to MCP). Print sorted, deduplicated names/templates, one per stdout line, then exit 0 with empty stderr. Print no values, banners or logs. Handle it after argument parsing but before runtime creation, dotenv/config loading, credentials, plugins, filesystem changes or network activity, including with--fresh.Scope and design
Reuse
ConfigEnvMappingsand provider naming rules, including nested fields, enum variants/tags, overrides and skips. Do not maintain a second config-field list or change parsing/validation behavior.Include each binary's runtime process variables, including shared
IGGY_DISPLAY_CONFIG, its config/dotenv paths and, for the server, root credentials and shard executor knobs. Separate these from scan-only allowances without removing those allowances. Exclude build-timeIGGY_CI_BUILD, test/CLI-only names, other binaries' prefixes and non-IGGY_*variables.iggy-gateway-kafkaremains out of scope: it does not useconfigs.Templates
<N>, including nested indices, e.g.IGGY_CLUSTER_NODES_<N>_IP. Keep whole-value leaf vectors as single names and preserve literal digits. Document per-field index limits in help/docs.IGGY_CONNECTORS_SINK_<KEY>_...andIGGY_CONNECTORS_SOURCE_<KEY>_...from their config mappings.<KEY>is the configured connector key uppercased. Document that these overrides require the local provider...._PLUGIN_CONFIG_<FIELD>for plugin overrides.<FIELD>denotes a top-level field, with underscores preserved, excluding reservedFORMAT. List..._PLUGIN_CONFIG_FORMATexplicitly. These are passthrough templates, not a guarantee that a plugin accepts every field. Do not load plugins to enumerate them.Acceptance
FORMAT; template matches need not be unique.--helpand configuration docs.