Skip to main content

Mopro is a toolkit for ZK app development on mobile.

πŸ”§ Why Mopro?

MoPro makes it radically easier to integrate zero-knowledge proofs (ZKPs) for client-side proving, providing clean abstractions across multiple platforms.

cargo install mopro-cli
Getting Started
abstract mobile illustration
separating line

Is MoPro for me?

Decision Tree - Find Your Perfect Use Case

START What's your current situation?
Do you have an existing ZK project?
What are you building?
ZK App
More
Mobile App
More
What do you currently have?
ZK Protocol
More
Web/JS App
More
I have a mobile native ZK App and I want to upgrade the underlying proving system
More
separating line
Core Features
Cross-platform Support

Automated pipelines for generating bindings and deploying libraries across platforms: iOS (Swift), Android (Kotlin), web/JS app, react-native, flutter.

Simple CLI & SDK

Developers can generate bindings and integrate circuits in minutes via an intuitive command-line interface and mobile-friendly SDK.

Circuit Integration

Support for Circom, Halo2 and Noir. It is also easy to integrate with other proving systems.

Extensibility to new proving systems

Currently supporting Arkworks, Rapidsnark, Plonk, Hyperplonk, Gemini, Barretenberg with more to come!

Additional Features
WebAssembly (WASM) Support

mopro-wasm: Generates WebAssembly (WASM) with Rayon for browser compatibility.

circom-prover

circom-prover: A Rust prover for Circom. Supports cross-platform high performance circom proving. It also supports BLS12-381 and BN254 curves.

ark-zkey

ark-zkey: Compresses and decompresses zkey files for Arkworks.

witnesscalc_adapter

witnesscalc_adapter: A Rust wrapper for witnesscalc.

rust-rapidsnark

rust-rapidsnark: A Rust wrapper for Rapidsnark.

noir-rs

noir-rs: A Rust wrapper for Noir.

separating line

MoPro vs. Legacy Setups

ComparisonMoProLegacy
Integration TimeUnder 2 hours10–15 days
Native Code RequiredMinimal (mostly abstracted)High
Code ComplexitySingle toolchain (Rust β†’ Kotlin/Swift)Multiple binaries, manual bindings
Dev UXClean CLI, modern toolingFragmented and error-prone
Cross-PlatformYes (Android & iOS)Requires separate native work
Proof System UpgradabilityMinimal effort 2-3 hoursRequires entire code re-write
separating line

πŸ“ˆ Impact & Value

Short-Term

  • Reduction in the size of native library bindings
    In this example for zkEmail, Mopro reduced the iOS binary size from ~154 MB to 143 MB ~7.1% improvement
  • ⏱ Time-to-Integration
    Most developers can generate a working proof on a mobile device in under 1.5 hours.
  • πŸ“± Real-World Adoption
    3+ mobile apps in production using MoPro expected by Q3 2025. (Anon Aadhaar, zkEmail, EZKL, Semaphore)
  • πŸ’‘ Dev Effort Saved
    Integrators report saving ~14 days in dev time/code vs. traditional approaches.

Long-Term

  • 🌐 GPU acceleration
    Leverage client-side native GPUs and other proving systems to enhance on-device proof generation, read our research here.
  • 🧠 Future Proof System Support
    MoPro will continue to add support for the most performant client-side proving system based on PSE's client-side proving research team
  • 🐞 Debugging and testing tools
separating line

βš™οΈ Key Developer Challenges for ZK app development

  • High Integration Complexity

    Time-consuming native setup and platform-specific headaches

  • Messy multi-language code

    Previous methods like Rapidsnark/Witnesscal required writing native code in C++, Java, and Objective-C, significantly slowing down development.

  • Poor Developer UX

    Developers historically spent more time making circuits run on mobile than building the circuits themselves.

  • Low Portability

    Most ZKP tools weren't built with mobile platforms in mind

  • No GPU optimization
separating line

πŸš€ What Developers Are Saying

"It used to take 15 days to integrate ZK proving on Android. With MoPro, I had it running in hours β€” without touching C++."

β€”Anon Aadhaar, April 2025

"We went from a cpp/ folder full of brittle native code to a clean, smooth setup. MoPro automated most of it."

β€”Anonymous Developer