One binary. Three commands. The same proofs your dApp would generate — runnable from any terminal, before you write a line of on-chain code.
Run a circuit over an input file in the local SP1 zkVM and emit a sub-proof. Same prover the network uses.
Recursively fold a directory of sub-proofs into a single Groth16 SNARK. Constant final size.
Submit the folded proof to the mainnet verifier and print the resulting ProofRecord PDA and cost.