Tutorial overview - Stoffel Documentation<br>Documentation Index<br>Fetch the complete documentation index at: /llms.txt<br>Use this file to discover all available pages before exploring further.
Skip to main content
Search...
Navigation<br>Tutorials<br>Tutorial overview
Documentation<br>SDKs<br>Developer Skills
:last-child]:max-w-6xl peer-[.is-custom]:[&>:first-child]:hidden! peer-[.is-custom]:[&>:first-child]:sm:hidden! peer-[.is-custom]:[&>:first-child]:md:hidden! peer-[.is-custom]:[&>:first-child]:lg:hidden! peer-[.is-custom]:[&>:first-child]:xl:hidden! peer-[.is-center]:[&>:first-child]:hidden! peer-[.is-center]:[&>:first-child]:sm:hidden! peer-[.is-center]:[&>:first-child]:md:hidden! peer-[.is-center]:[&>:first-child]:lg:hidden! peer-[.is-center]:[&>:first-child]:xl:hidden!">
Start with the Rust SDK quickstart if you want the smallest app-shaped project. Then move to the private matchmaking tutorial for the full Rust service boundary, and use the focused tutorials to isolate the privacy patterns you will reuse in your own app: reveal boundaries and hidden state.
Start here
svg]:size-6" data-component-part="card-icon"><br>Rust SDK quickstart<br>Build a private approval tally that opens only an aggregate yes-vote count, then maps it into a normal Rust launch decision.
svg]:size-6" data-component-part="card-icon"><br>Build a private matchmaking service<br>Compute matches from private feature and preference vectors without exposing raw vectors, scores, rankings, or rejection paths. This is the best next step if you want to see the full Rust service boundary around a Stoffel computation.
Deepen the mental model
svg]:size-6" data-component-part="card-icon"><br>Private lottery<br>Reveal the winner without exposing eligibility bits, ticket values, losing order, or comparison trace.
svg]:size-6" data-component-part="card-icon"><br>N-party Battleship<br>Update hidden state while revealing only the shot result each recipient is allowed to see.
svg]:size-6" data-component-part="card-icon"><br>Privacy boundary<br>Decide what is private, public, opened, routed, or never revealed before adapting the tutorial pattern.
Run the source
The runnable projects live in the Stoffel tutorials repository.<br>From the repository root:
cargo test
Then run the quickstart or matching tutorial directly:
cd tutorials/00-rust-sdk-quickstart<br>stoffel status --verbose<br>stoffel check<br>stoffel build<br>stoffel run --client-input 0=1 --client-input 1=0 --client-input 2=1 --timeout-secs 180
Each tutorial README includes its exact cargo run, stoffel check, stoffel build, and stoffel run commands.
What to copy into your app
Copy the boundary pattern, not the sample domain:
Keep public product data in ordinary application code.
Give each logical client an explicit client slot and private payload type.
Put only the private computation boundary in StoffelLang.
Attach client inputs with one with_client_input(slot, values) call per logical client slot.
Validate the client input shape before running local MPC.
Open only the authorized output your product needs.
Map the opened result back into a typed Rust domain object.
Next steps
Rust SDK quickstart
Build a private matchmaking service
Embed Stoffel in a Rust service
Run a local Docker MPC network
Browse StoffelLang examples
Your First MPC ProjectRust SDK Quickstart<br>⌘I