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

Python

Available

Rust

Coming soon

JS/TS

Coming soon

Application-specific

Coming soon

Framework middleware, data/connectors, orchestration adapters coming soon.

Language SDKs

Python

Available

Rust

Coming soon

JS/TS

Coming soon

Application-specific

Coming soon

Framework middleware, data/connectors, orchestration adapters coming soon.

Language SDKs

Python

Available

Rust

Coming soon

JS/TS

Coming soon

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

Start Building Today

Start Building Today

Start Building Today