Overall a really nice implementation. There are some minor issues below, that needs to be addressed. But in general, this is looking really good. Gave it a quick test and appears to behave as expected.
Have you given any thought to adding support for -o,--override to footclient? I think it's something we want, but I also think it's ok to push that to a separate PR.
Regarding the shell completions: I don't think it's meaningful to try to complete all possible key/values. Just add -o,--override, and tell the shells the option requires an argument, but don't provide any completions for the argument.
~~As far as footclient goes, that actually wouldn't be too difficult to add, and it might as well go here, it will be pushed shortly ~~
On second thought it probably should be separate, under the guise of harmonizing the options between foot and footclient in general. It's definitely desirable, though, as it would greatly simplify the client protocol if nothing else (no bespoke fields need to be sent, just the override corresponding to the given command line argument).