Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 62 additions & 17 deletions docs/docs/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,79 @@
sidebar_position: 1
---

# Introduction
# 🛠️ Introducing Mopro: The Mobile Prover Toolkit

Mopro makes client-side proving simple. You can think of it as a toolkit for ZK app development. It primarily focuses on running natively mobile.
**Mopro** is a developer toolkit designed to make building **mobile-native ZK apps** easier, faster, and more accessible. Whether you're a ZK protocol author, a mobile app developer, or a Rust engineer exploring zero-knowledge proofs, Mopro provides a streamlined workflow to bring your ideas to mobile devices.

How? Mopro connects different adapters with different platforms. You can think of an adapter as a way to use a library with some proof system and performance profile. Because Mopro takes care of hooking up your circuit to some library, and generating bindings for use on multiple platforms, you can focus on what you do best: ZK app development.
## 🚀 What Is Mopro?

![mopro adapters and platforms](/img/roadmap.png)
Mopro simplifies the development of mobile-native apps by offering:

Note that the above is a work in progress, and the dashed lines indicate things that are still experimental and/or in an early stage.
- A powerful **CLI** to scaffold, build, and update projects

If you just want to get started using mopro, see [getting started](getting-started).
- Prebuilt **templates** for iOS, Android, React Native, and Flutter

## Overview
- Clear, step-by-step **documentation** to guide developers at every stage

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe replace this point with things related with highlighting the advantage of mobile-native arch?

e.g. "Mobile-native architecture for 10× faster proving and smooth integration with features like biometrics and secure storage for a better UX"

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the speed is not what we provide. Only like CLI, templates and documentation. Or maybe add other cross-platform toolings.

but we can move the advantage to more top https://doc-intro.mopro.pages.dev/docs/intro#-why-mobile-native
e.g.

  • 🚀 What Is Mopro?
  • ⚡ Why Mobile-Native?
    (and we can also include the mobile hardware device that can be accessed (e.g. camera, NFC,...)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

make sense to me! I like the idea of moving "⚡ Why Mobile-Native?" closer to the top


Mopro consists of a set of libraries and utilities. The following subprojects are included in the [mopro monorepo](https://github.com/zkmopro/mopro).
Our goal is to remove the friction from mobile ZK app development—so you can focus on your product, not the plumbing.

Primary libraries and utilities of interest:
## 🔧 How It Works

- `mopro-ffi` - main package, exposes macros for configuring and building projects.
- `mopro-wasm` - enables the compilation of Halo2 circuits into wasm modules.
- `test-e2e` - example implementation of mopro in Android and iOS apps, used for testing.
Mopro takes each proving system and wraps it as an **adapter** written in Rust. These adapters provide a unified interface for ZK proof generation regardless of the backend (e.g., Circom, Noir, Halo2). Mopro then uses [UniFFI](https://github.com/mozilla/uniffi-rs) to generate native bindings for **Swift (iOS)** and **Kotlin (Android)** from Rust code. These bindings can then be reused in cross-platform frameworks like **React Native** and **Flutter**, with ready-to-use templates for each platform.

Secondary subprojects:
## 👩‍💻 Who It's For

- `docs` - This documentation website.
### 📱 ZK Mobile App Developers

## Architecture
Get a full-stack monorepo template that handles Rust bindings, mobile UIs, and proof generation. Just follow the `mopro` CLI to bootstrap your app from zero to working prototype. See [**Getting Started**](getting-started).

The following illustration shows how mopro and its components fit together into the wider ZKP ecosystem:
### 🔐 ZK Protocol Developers

![mopro architecture](/img/architecture.png)
Don't want to maintain a full app? No problem. Mopro helps you ship production-ready **mobile SDKs** for your protocol, making it easier for others to integrate your tech.

See Mopro Bindings for Multiplatform

- [`mopro-kotlin-package`](https://github.com/zkmopro/mopro-kotlin-package): Kotlin bindings for Android.
- [`mopro-swift-package`](https://github.com/zkmopro/mopro-swift-package): Swift bindings for iOS.
- [`mopro-react-native-package`](https://github.com/zkmopro/mopro-react-native-package): A React Native wrapper.
- [`mopro_flutter_package`](https://github.com/zkmopro/mopro_flutter_package): Flutter bindings for Dart-based apps.

### 📲 Mobile Developers

Easily consume ZK SDKs via familiar package managers like **CocoaPods**, **Gradle**, **npm**, or **pub.dev**. No Rust knowledge required.

### 🦀 Rust Developers

Mopro supports various ZK backends—even those not originally written in Rust—via **wrapper** crates.

Examples include

- [`circom-prover`](https://github.com/zkmopro/mopro/tree/main/circom-prover)
- [`witnesscalc_adapter`](https://github.com/zkmopro/witnesscalc_adapter/tree/main/witnesscalc_adapter)
- [`rust-rapidsnark`](https://github.com/zkmopro/rust-rapidsnark/tree/main)
- [`noir-rs`](https://github.com/zkmopro/noir-rs).


## ⚡ Why Mobile-Native?

Mobile-native apps offer up to **10x performance improvement** over browser-based ZK apps. They also provide **smoother UX**, better integration with device features (e.g., biometric auth, secure storage), and offline-friendly capabilities—bringing your ZK protocol to a broader, mainstream audience.

See our [**benchmarks**](performance) for performance comparisons.

## ⚙️ GPU Acceleration

Mopro also focuses on **mobile-native GPU acceleration**, enabling client-side devices to leverage their GPUs to speed up operations like **MSM (Multi-Scalar Multiplication)** during proof generation. This significantly improves performance for ZK proving on mobile.

See implementation details and updates in [**gpu-acceleration**](https://github.com/zkmopro/gpu-acceleration).

## 📚 Learn More About Mopro

Explore the full ecosystem, documentation, and community resources:

- 📱 Main GitHub Repository: https://github.com/zkmopro/mopro

- 💡 Example Projects: https://zkmopro.org/docs/projects

- 💬 Community & Talks: https://zkmopro.org/docs/community

- 📰 Blog: https://zkmopro.org/blog
Loading