Drop Shared Computation into Your App
Use our SDKs to split sensitive values on the client, send them to the MPC network, and combine the final result locally. Your app code stays simple.
mport asyncio from stoffel import StoffelProgram, StoffelMPCClient async def main(): # 1. Compile and setup the StoffelLang program program = StoffelProgram("secret_value_example.stfl") program.compile() program.set_execution_params({ "computation_id": "secret_value_demo", "function_name": "main", "expected_inputs": ["user_age", "salary"] }) # 2. Setup MPC client for network execution client = StoffelMPCClient({ "nodes": ["http://mpc1:9000", "http://mpc2:9000", "http://mpc3:9000"], "client_id": "user123", "program_id": "secret_value_demo" }) # 3. Execute with private inputs (one line!) result = await client.execute_program_with_inputs({ "user_age": 25, "salary": 75000 }) print(f"Secure computation result: {result}") await client.disconnect() asyncio.run(main())
Uses threshold secret sharing for inputs; the final result is reconstructed client-side via standard polynomial interpolation.
Drop Shared Computation into Your App
Use our SDKs to split sensitive values on the client, send them to the MPC network, and combine the final result locally. Your app code stays simple.
mport asyncio from stoffel import StoffelProgram, StoffelMPCClient async def main(): # 1. Compile and setup the StoffelLang program program = StoffelProgram("secret_value_example.stfl") program.compile() program.set_execution_params({ "computation_id": "secret_value_demo", "function_name": "main", "expected_inputs": ["user_age", "salary"] }) # 2. Setup MPC client for network execution client = StoffelMPCClient({ "nodes": ["http://mpc1:9000", "http://mpc2:9000", "http://mpc3:9000"], "client_id": "user123", "program_id": "secret_value_demo" }) # 3. Execute with private inputs (one line!) result = await client.execute_program_with_inputs({ "user_age": 25, "salary": 75000 }) print(f"Secure computation result: {result}") await client.disconnect() asyncio.run(main())
Uses threshold secret sharing for inputs; the final result is reconstructed client-side via standard polynomial interpolation.
Drop Shared Computation into Your App
Use our SDKs to split sensitive values on the client, send them to the MPC network, and combine the final result locally. Your app code stays simple.
mport asyncio from stoffel import StoffelProgram, StoffelMPCClient async def main(): # 1. Compile and setup the StoffelLang program program = StoffelProgram("secret_value_example.stfl") program.compile() program.set_execution_params({ "computation_id": "secret_value_demo", "function_name": "main", "expected_inputs": ["user_age", "salary"] }) # 2. Setup MPC client for network execution client = StoffelMPCClient({ "nodes": ["http://mpc1:9000", "http://mpc2:9000", "http://mpc3:9000"], "client_id": "user123", "program_id": "secret_value_demo" }) # 3. Execute with private inputs (one line!) result = await client.execute_program_with_inputs({ "user_age": 25, "salary": 75000 }) print(f"Secure computation result: {result}") await client.disconnect() asyncio.run(main())
Uses threshold secret sharing for inputs; the final result is reconstructed client-side via standard polynomial interpolation.
Why Developers Use It
Create shares client-side
Turn inputs into shareable pieces; raw values never leave your app.
Send & orchestrate
Start a session, send shares to the MPC network, and track progress.
Get the answer locally
Receive result pieces and combine them on the client—only the final answer is rebuilt.
Why Developers Use It
Create shares client-side
Turn inputs into shareable pieces; raw values never leave your app.
Send & orchestrate
Start a session, send shares to the MPC network, and track progress.
Get the answer locally
Receive result pieces and combine them on the client—only the final answer is rebuilt.
Why Developers Use It
Create shares client-side
Turn inputs into shareable pieces; raw values never leave your app.
Send & orchestrate
Start a session, send shares to the MPC network, and track progress.
Get the answer locally
Receive result pieces and combine them on the client—only the final answer is rebuilt.
SDKs at a Glance
Language SDKs
Application-specific
Coming soon
Framework middleware, data/connectors, orchestration adapters coming soon.
Language SDKs
Application-specific
Coming soon
Framework middleware, data/connectors, orchestration adapters coming soon.
Language SDKs
Application-specific
Coming soon
Framework middleware, data/connectors, orchestration adapters coming soon.
How it Works
Share
share(input)
Create client-side shares.
Send
start_session()
send(shares)
Computation runs across parties.
Rebuild
reconstruct(result_shares)
Combine result pieces locally; only the final answer is revealed.
Your app has sensitive data. Raw data never leaves your app
SDK splits data into shares
Share sent to MPC network
Computation runs across network
Shares sent back to your app. One final result reconstructed
How it Works
Share
share(input)
Create client-side shares.
Send
start_session()
send(shares)
Computation runs across parties.
Rebuild
reconstruct(result_shares)
Combine result pieces locally; only the final answer is revealed.
Your app has sensitive data. Raw data never leaves your app
SDK splits data into shares
Share sent to MPC network
Computation runs across network
Shares sent back to your app. One final result reconstructed
How it Works
Share
share(input)
Create client-side shares.
Send
start_session()
send(shares)
Computation runs across parties.
Rebuild
reconstruct(result_shares)
Combine result pieces locally; only the final answer is revealed.
Your app has sensitive data. Raw data never leaves your app
SDK splits data into shares
Share sent to MPC network
Computation runs across network
Shares sent back to your app. One final result reconstructed
Products
© 2025 Stoffel. All rights reserved.
Products
© 2025 Stoffel. All rights reserved.
Products
© 2025 Stoffel. All rights reserved.