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