The VM architecture is simple: two 8-bit registers, a stack, a small number of instructions, including conditional control flow. However, other than patience and hitting the recursion limits, more useful/realistic architectures could be embedded as well.
I wrote a blog post that goes into more depth about how this was developed and how it all works: https://www.thenet.sk/blog0011