Ok, I've had a chance to play with the script in earnest for a bit (just enough to be usefully confused), and have some usage suggestions. Before I get too far into it, I'll mention upfront that if this is going to be used entirely non-interactively, then a lot of the remarks in this comment are probably going to be irrelevant. However, if you anticipate anyone might be running this by hand, then they may be worthwhile. And first, here's how I'm running things: stirling:~/pkg/Oci/utils$ ./list-all-images.sh -r docker -n ubuntu Username: bryceharrington Password: ubuntu/nginx ubuntu/redis ubuntu/postgres ubuntu/mysql ubuntu/apache2 ubuntu/memcached ubuntu/grafana ubuntu/prometheus ubuntu/cortex ubuntu/telegraf ubuntu/prometheus-alertmanager $ ./list-tags-for-image.sh -r docker -n ubuntu -i redis Username: bryceharrington Password: ubuntu/redis:latest ubuntu/redis:6.0-21.04_beta ubuntu/redis:edge ubuntu/redis:6.0-21.04_edge ubuntu/redis:5.0-20.04_beta ubuntu/redis:5.0-20.04_edge One thing that's a bit confusing is after running ./list-all-images.sh, I figured I could just cut and paste a line from its input to pass to ./list-tags-for-image.sh, however, that's wrong: stirling:~/pkg/Oci/utils$ ./list-tags-for-image.sh -r docker -n ubuntu -i ubuntu/redis Username: bryceharrington Password: E: Invalid image name 'ubuntu/redis'. I'd probably just chalk that up to user error, but wouldn't be surprised if other rookie users make the same mistake. Again, if this is mainly intended to be used in an automated workflow, it's probably better to not have too many smarts in the argument parsing logic. You've got the --no-prefix argument if someone really needs the bare image name. stirling:~/pkg/Oci/utils$ ./multi-arch-tagger.sh -t foobar -n ubuntu -r docker -b 20.04 -u bryceharrington -p -i redis Username: bryceharrington Password: I: Tagging ubuntu/redis:20.04 as ubuntu/redis:foobar (on docker) ERROR: Image tagging failed with status code 400 So first comment is I'm not entirely certain this is the right way to be calling this tool. Given the large number of required parameters it would help a lot to have an example or two in the help text (or in a man page). For this tool, maybe one cut-and-paste command line to test it, and then one real-world usage. Second, I'd kind of like to be able to run this against a throwaway image in my own namespace, just to test it, but passing '-n bryceharrington' gives an error. If that's intended/desired then a --dry-run parameter might be handy to add. Third, I was initially a bit confused why there are --username and --password arguments, yet it still prompts me for username and password. From the help text I got the impression they were two different sets of usernames and passwords, but still a bit confusing what they might be. Also, taking a password on the command line might have some security implications, although I gather this is just for testing convenience and the auth token is used more in practice? And fourth, the error message with status code 400 is a bit cryptic. That said, I'll bet it's not really going to be possible to give a better error message since that comes from the server, but if it is it would help. I'm guessing I don't have a registry user/pass or something. I have some additional comments on the description text for the cli options, which I'll inline below. Since all of my comments are regarding docs, comments, or ux, and there are no functional issues (other than me not knowing how to run the master script properly) I'm marking this approved for landing. You can thumb through my comments and pick whatever is of use, at your discretion; no real need for a subsequent round of review. And congrats on these scripts, that's a healthy amount of code for one MP. :-)