Skip to main content

Remote

Offloads proving to a remote coordinator instead of running the prover in-process. Documents the connection options and the upload, setup, prove, execute, and wrap subcommands that mirror the local commands.

The cargo-zisk remote subcommands send work to a remote coordinator instead of running the prover in-process. They mirror the local commands (setup, prove, execute, wrap) and add upload, which ships the guest ELF to the coordinator.

cargo-zisk remote <SUBCOMMAND> [OPTIONS]

Connecting to the coordinator​

These options are global to every remote subcommand:

FlagDefaultEnvDescription
--coordinator <URL>http://localhost:7000ZISK_COORDINATOR_URLCoordinator gRPC URL.
--connect-timeout <SECS>10Connection timeout in seconds.
--request-timeout <SECS>3600Per-request transport timeout in seconds.

Each operation subcommand also has its own --timeout (default 0 = no timeout), which bounds the operation itself and is separate from the transport-level --request-timeout.

Subcommands​

SubcommandDescription
uploadUpload a guest program (ELF) to the coordinator.
setupGenerate the proving setup on the remote service.
proveGenerate a proof on the remote service.
executeExecute a guest program on the remote service.
wrapWrap an existing proof on the remote service.

remote upload​

Uploads the guest ELF so the coordinator has the program to run and prove. Later commands can reference it by its returned hash_id.

FlagShortDefaultDescription
--elf <ELF>-eauto-detectedPath to the guest ELF to upload. Auto-detected from the current project if omitted.

--release / --debug / --bin select the profile and binary when auto-detecting the ELF.

remote setup​

FlagShortDefaultDescription
--elf <ELF>-eauto-detectedPath to the guest ELF. Uploads the program, then runs setup. Conflicts with --hash-id.
--hash-id <HASH_ID>hash_id of an already-uploaded program. Runs setup only, skipping the upload.
--hintsfalseEnable precompiles hints support for this program.
--emulator-onlyfalseGenerate setup for the emulator only (supports execute, not prove).

remote prove​

FlagShortDefaultDescription
--elf <ELF>-eautoPath to the guest ELF. Auto-detected from the current project if omitted.
--inputs <INPUTS>-iInput for the guest. Accepts a file path, file://path, or inline inline://[[1,2],[3]].
--hints <HINTS>Precompiles hints URI for the guest, sent inline to the coordinator.
--output <OUTPUT>-oSave the generated proof to this local path.
--minimal-cfalseSmaller STARK proof at the cost of longer proving time. Mutually exclusive with --plonk.
--plonkfalsePLONK proof for on-chain verification via the EVM verifier. Mutually exclusive with --minimal.
--timeout <SECS>0Proof timeout in seconds (0 = no timeout).

remote execute​

FlagShortDefaultDescription
--elf <ELF>-eautoPath to the guest ELF. Auto-detected if omitted.
--inputs <INPUTS>-iInput for the guest. File path, file://path, or inline inline://[[1,2],[3]].
--hints <HINTS>Precompiles hints URI for the guest, sent inline.
--timeout <SECS>0Execute timeout in seconds (0 = no timeout).

remote wrap​

FlagShortDefaultDescription
--proof <PROOF>-prequiredPath to the STARK (VADCOP) proof file to wrap.
--output <OUTPUT>-oOutput file path.
--minimal-cfalseWrap into a smaller STARK proof. Mutually exclusive with --plonk.
--plonkfalseWrap into a PLONK proof for on-chain verification. Mutually exclusive with --minimal.
--timeout <SECS>0Wrap timeout in seconds (0 = no timeout).

Example​

Point the CLI at a coordinator, then upload, set up, prove, and verify the downloaded proof locally:

export ZISK_COORDINATOR_URL=http://my-prover:7000

cargo-zisk remote upload
cargo-zisk remote setup
cargo-zisk remote prove -i input.bin -o proof.bin
cargo-zisk verify -p proof.bin