Have you tried asking @Dolu1990 on the VexRiscv gitter - https://gitter.im/SpinalHDL/VexRiscv?
He is the author and expert on all this.
Is it a long time since I used Murax and I have never used an Arty A7.
You can load code into on-chip ram using a hex file - https://github.com/SpinalHDL/VexRiscv/blob/master/src/main/scala/vexriscv/demo/Murax.scala#482
But an external JTag is useful for debugging.
If you have a variant of Murax that uses XIP, you can also load code into flash memory and execute it from there.
But as I say, you should ask @Dolu1990 on the Vexriscv or SpinalHDL gitters.
I used to builfd the hex filles using the VexRiscSocSoftware project, e.g. - https://github.com/SpinalHDL/VexRiscvSocSoftware/blob/master/projects/murax/demo/src/main.c