Run Arduino/AVR Code on your PC (inside a docker container) including support for serial communication. State of the simulated microcontroller can be seen and controlled via websockets ...
The SPI Master drivers used in QMK have a set of common functions to allow portability between MCUs.