mopro-cli

Crates.iomopro-cli
lib.rsmopro-cli
version0.3.4
created_at2025-06-17 08:22:04.288808+00
updated_at2026-01-19 02:43:47.879311+00
descriptionA CLI tool for creating a mobile native app with Mopro FFI
homepage
repositoryhttps://github.com/zkmopro/mopro
max_upload_size
id1715406
size893,283
Ya-wen, Jeng (vivianjeng)

documentation

README

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.

Commit count: 811

cargo fmt