Comparison with talhelper
Both TOPF and talhelper help manage Talos cluster configurations declaratively, but they take different approaches.
Approach
talhelper is a config generator. It produces full machine configuration files that you then apply with talosctl. It also provides helper commands for common talosctl operations.
TOPF uses the Talos Go libraries directly to generate configs and interact with nodes in a single tool — no intermediate files or dependency on talosctl.
Configuration
talhelper keeps everything in a single talconfig.yaml, including inline patches and node-specific settings like installDisk and networkInterfaces.
TOPF separates node definitions (topf.yaml) from patches (individual files in patches/, <role>/, nodes/<host>/). This makes patches easier to review in pull requests.
Patches
Both tools support strategic merge patches. talhelper additionally supports JSON patches (RFC 6902).
TOPF does not support JSON patches — they are incompatible with multi-document configs and are being deprecated in Talos starting from v1.12.
Templating
talhelper uses envsubst with variables from talenv.yaml / talenv.sops.yaml.
TOPF uses Go templates (.yaml.tpl files) with data from topf.yaml, offering conditionals, loops, and per-node data via .Node.Data.
Secrets
talhelper uses a separate talenv.sops.yaml file for encrypted variables.
TOPF encrypts the data fields directly in topf.yaml with SOPS.
Summary
| talhelper | TOPF | |
|---|---|---|
| Approach | Config generator + helper commands | Direct interaction via Go libraries |
| Apply / Upgrade / Reset | Via talosctl |
Built-in |
| JSON patches | Yes | No (deprecated in Talos v1.12) |
| Strategic merge patches | Yes | Yes |
| Templating | envsubst | Go templates |
| SOPS integration | talenv.sops.yaml |
Directly in topf.yaml |
| Node filtering | No | Yes (--nodes-filter) |