From author’s blog post:
selfportrait.exe uses pieces of its current Git commit hash to select a “paint” color and determine where to paint. Based on a heavy-handed prescription of rules (written by a human (this one in particular)), the bot draws a chunky-pixel representation of its own codebase at that moment in time while also incorporating vestiges of its previous portraits.
Each new change is committed to the repository history, producing a new commit hash. This, as you might guess, sets our bot-friend up to produce yet another portrait, ad infinitum. (Or until DigitalOcean goes out of business. Heyo.)