Documentation
¶
Overview ¶
Command nova-config is the one tool for the fleet's permanent, non-ephemeral configuration: it owns Postgres (schema `config`, its migrations, its history) and every registry of the fleet, and it applies that configuration into Redis so Redis is always a rebuildable copy. The runtime tools (nova-friend, nova-sprint) read configuration and never write it. The contract is docs/SPEC-CONFIG.md; the guide is docs/nova-config/README.md.
Every kind (machine, fleet, friend, sprint, loop, route) has the same six verbs -- add, remove, set, list, show, history -- generated from its descriptor in pkg/config, so every kind has identical flags, help and refusals; a singleton kind (fleet: one row the migration creates) has set, show and history without a name. apply diffs Postgres against Redis per kind and writes the difference through the runtime's own Redis Functions, compare-and-set on a revision stamped in config:decl. --file keeps the rows in a local JSON file in Postgres's place (config.FileStore), so every verb but apply's write runs with no database.
Exit 0 done, 1 refused (the store or Redis said no: a duplicate, a missing row, a ceiling, a conflict), 2 usage (could not run: a flag, a store that did not answer), plus two for machine self: 2 when --check finds the name is no machine row, and 3 when the name or the rows could not be read. A refusal is one stderr line, `nova-config <verb> REFUSED: <what>; run: <next>`.