Skip to content

Create and Deploy an iApp ​

Bootstrap TEE-compatible applications in minutes without any hardcoding skills, iApp Generator handles all the low-level complexity for you.

  • Select your project mode & language - Get started with either a basic or advanced setup, depending on your experience with the iExec framework. You can use Python or JavaScriptβ€”whichever you prefer!
  • Develop your iApp effortlessly - Write your application logic using familiar programming languages while the generator handles all TEE-specific configurations.
  • Access to TEEs easily - No need to dive into low-level requirements, create iApps that connect to TEEs in minutes.
  • Check and deploy iApps quickly - iApp Generator checks that your iApp complies with the iExec Framework and streamlines its deployment.
bash
# Create your iApp (Python or Node.js supported)
iapp init my-privacy-app
cd my-privacy-app

# Develop and test locally (simulates TEE environment)
iapp test
# Deploy to the network
iapp deploy

Note: iApp Generator currently supports Python and Node.js, but iApps can be built in any language that runs in Docker.

Real Examples ​

Here are some real-world examples of iApps to help you understand how they work in practice.

Email Notification iApp ​

This iApp lets you send updates to your contacts without ever seeing their email addresses, privacy is preserved by design.

js
/* User runs: "Send updates to my contacts about my project" */
const contacts = loadProtectedData(); // User's protected contact list
contacts.forEach((contact) => {
  sendEmail(contact, projectUpdateMessage);
});
// β†’ Emails sent directly, you never see the addresses
python
# User runs: "Send updates to my contacts about my project"
contacts = load_protecteddata()  # User's protected contact list
for contact in contacts:
   send_email(contact, project_update_message)
# β†’ Emails sent directly, you never see the addresses

Oracle Update iApp ​

This iApp securely updates a price oracle using private trading data, ensuring sensitive information stays confidential.

js
// User runs: "Update price oracle with my private trading data"
const tradingData = loadProtectedData(); // User's protected trading history
const averagePrice = calculateWeightedAverage(tradingData);
updateOracleContract(averagePrice);
// β†’ Oracle updated with real data, trading history stays private
python
# User runs: "Update price oracle with my private trading data"
trading_data = load_protecteddata()  # User's protected trading history
average_price = calculate_weighted_average(trading_data)
update_oracle_contract(average_price)
# β†’ Oracle updated with real data, trading history stays private

Automated Transactions iApp

This iApp automates monthly payments using protected payment details, so financial information remains private.

js
// User runs: "Automate payments every month"
const paymentInfo = loadProtectedData(); // User's payment details
for (let month = 0; month < 12; month++) {
  processPayment(paymentInfo);
}
// β†’ Payments processed, payment details stay private
python
# User runs: "Automate payments every month"
payment_info = load_protecteddata()  # User's payment details
for month in range(12):
   process_payment(payment_info)
# β†’ Payments processed, payment details stay private