I doubt there's any such software under active development, because the only entities that run large clusters would be (1) uninterested in 32-bit x86 and (2) want to avoid the reliability problems inherent in a pseudo-unified view of a multi-machine system.
Your best bet might be to hack something together on top of QEMU. You could represent each physical machine as a NUMA node, and maybe use iSCSI for persistent storage. Note that this would imply full virtualization (not VTx), so the performance would be dreadful.
Google suggests the GiantVM project (https://giantvm.github.io/) is an attempt at this. It's a years-old snapshot for a research paper, but you might be able to use it as a starting point.
> I am aware I can install linux on each node and make a beowulf cluster
> but I am wondering if there is a cleaner, lower level solution.
As general advice, be really careful about conflating "low level" and "clean". Most architectures benefit from layers of abstraction. If you want to build a distributed VMM and make it host a 200-core 32-bit x86 then that's about as far from "clean" as you can get. It'd be much better, architecturally, to run a distributed process scheduler such as Kubernetes that can directly represent the physical machines.