Sitelet https://github.com/zkmopro/mopro/tree/main/cli
Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

MoPro CLI

What is MoPro?

MoPro stands for Mobile Prover — a framework designed to simplify the development of client-side zero-knowledge (ZK) proof systems on mobile platforms.

👉 Visit zkmopro.org to learn more about using MoPro and MoPro CLI.

Mopro CLI is a developer-friendly command-line tool that simplifies building native mobile apps with mopro-ffi. It streamlines the integration process and offers powerful customization options.

Key Features

  • Modular: Choose one or more adapters from mopro-ffi—currently supporting Circom, Halo2, and Noir. You can also integrate your own Rust crate. See Custom Adapters for details.
  • Versatile: Generate templates for various platforms including Swift (Xcode), Kotlin (Android Studio), React Native, Flutter, and Web.
  • Automated: Skip the tedious setup—mopro CLI automates UniFFI, flutter_rust_bridge, uniffi-bindgen-react-native and wasm-bindgen with rayon bindings and configures Xcode, Android Studio, flutter, react native, and web for you.

Usage

Installation

cargo install mopro-cli
  • Install the latest change on GitHub
git clone https://github.com/zkmopro/mopro
cd mopro/cli
cargo install --path .

Help

mopro --help

or

mopro init --help

to see instructions for each command.

Initialization

mopro init

Build bindings

mopro build

or

mopro build --auto-update

Create templates

mopro create

Update bindings

mopro update

or

mopro update [--src PATH] [--dest PATH] [--no-prompt]

By default mopro update looks for bindings and mobile projects in the current directory. Use --src to point to a bindings directory and --dest to target a specific mobile project located elsewhere. Frequently used destinations can be stored in Config.toml under an update section:

[update]
ios_dest = "../MyiOSApp"
android_dest = "../MyAndroidApp"

Create bindings without Rust project

mopro bindgen

You can customize the bindings generation:

  • Choose a witness generator adapter (default rust-witness):

    mopro bindgen --adapter witnesscalc
  • Specify the output directory for generated bindings:

    mopro bindgen --output-dir ./output

Generate the whole project with one command (experimental)

A simplified command for mopro init, mopro build and mopro create.

mopro construct

Development

After cloning the repository, you can install the CLI locally with your changes by running:

git clone https://github.com/zkmopro/mopro
cd mopro/cli
cargo install --path .

Community

Acknowledgements

This work was initially sponsored by a joint grant from PSE and 0xPARC. It is currently incubated by PSE.