<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: DC</title>
    <description>The latest articles on DEV Community by DC (@dc600).</description>
    <link>https://dev.to/dc600</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2900291%2F39cae2b5-c4d4-436f-a982-cad67f3b24ae.jpg</url>
      <title>DEV Community: DC</title>
      <link>https://dev.to/dc600</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dc600"/>
    <language>en</language>
    <item>
      <title>Better AI Context Management With Privacy. Case Studies: Plurality, Ekai.</title>
      <dc:creator>DC</dc:creator>
      <pubDate>Wed, 24 Jun 2026 07:15:54 +0000</pubDate>
      <link>https://dev.to/dc600/better-ai-context-management-with-privacy-case-studies-plurality-ekai-53jg</link>
      <guid>https://dev.to/dc600/better-ai-context-management-with-privacy-case-studies-plurality-ekai-53jg</guid>
      <description>&lt;p&gt;Earlier this year, I had &lt;a href="https://dev.to/dc600/ai-has-a-memory-problem-decentralization-and-privacy-might-have-a-solution-part-3-2288"&gt;discussed&lt;/a&gt; at length about AI memory challenges and potential solutions. I mentioned a couple of names there who had been working on AI context management, as I firmly believe that is how we solve the memory constraints. &lt;/p&gt;

&lt;p&gt;Here, I will further explore two projects that have progressed in this aspect and offer a glimpse of the AI future that could take our experiences to the next level.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Plurality &amp;amp; portable AI context&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Consider this: what if you did not have to start over constantly, or to reiterate and summarize previous conversations whenever you switch models or start a new session? &lt;/p&gt;

&lt;p&gt;Plurality started by trying to answer this. Their aim: to develop an Open Context Layer. As a result, you could autonomously store your data and chats in specific memory buckets. This would not only help with better context management, but also enable sharing the context as needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Context Flow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Billed as a fix for the problem of portable AI memory, Plurality built &lt;strong&gt;&lt;a href="https://plurality.network/ai-context-flow/" rel="noopener noreferrer"&gt;AI Context Flow&lt;/a&gt;&lt;/strong&gt;. The tool works with ChatGPT, Claude, Gemini, Grok, and Perplexity. &lt;/p&gt;

&lt;p&gt;One of the USPs of AI Context Flow is the ingrained privacy control. It thus differs from most other solutions, where cloud storage and data mining are part of the deal, mostly without the knowledge or consent of the users. Plurality teamed up with Oasis for a TEE-based, privacy-first context management, where you can decide what AI can see, you can revoke access at your discretion, and have complete data ownership.&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8ooabpuz3rwruk08h2n0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8ooabpuz3rwruk08h2n0.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's now see how Plurality and Oasis address the privacy question. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI Context Flow solves one problem but opens up a new challenge - the infrastructure issue. Helping portable context flow through other servers is tricky and poses inherent trust gaps.&lt;/p&gt;

&lt;p&gt;The easiest answer that springs to mind is adopting the Model Context Protocol (MCP). It enables agents to access tools, data, memory, and APIs. The infrastructure is powerful and growing as more and more AI products get built on top of it. But the privacy pain point lingers.&lt;/p&gt;

&lt;p&gt;Most people, when they talk about AI privacy, are thinking about the model. But the underlying infrastructure is where most privacy is exposed. When a tool uses MCP, the MCP operator can see everything running through the server. So, you get the portable context but without privacy guardrails. Plurality faced this issue while building AI Context Flow, where user intent, history, and sensitive information were vulnerable to third-party access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Oasis solution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Oasis comes into the picture by offering its Runtime Off-chain Logic (&lt;a href="https://docs.oasis.io/build/rofl/" rel="noopener noreferrer"&gt;ROFL&lt;/a&gt;) for confidential computation to fix the infrastructure exposure dilemma.  Now, the context can flow through the MCP server running inside a Trusted Execution Environment (TEE). This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The operator cannot read context in memory&lt;/li&gt;
&lt;li&gt;The host OS cannot tamper with execution&lt;/li&gt;
&lt;li&gt;Code running is provable with remote attestation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, when Plurality runs its MCP server on ROFL, the confidentiality of the infrastructure layer is not rooted in mere trust assumptions but actually verifiable. Context is stored and processed within the secure enclave away from prying eyes, and visible and accessible only to the model as needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plurality next&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Privacy-focused context management opens up new opportunities. In the next phase, Plurality is focusing on building a context marketplace on top of this foundation.&lt;/p&gt;

&lt;p&gt;Simply stated, the context marketplace aggregates the information and knowledge that usually stays fragmented and in silos to be available in packages that anyone can opt to inject into any AI tool. Here, too, the privacy constraint is the potential deal-breaker. And Oasis, with its privacy layer, enables sharing and monetization of context without accessibility to the parties facilitating the transaction in the marketplace. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Ekai &amp;amp; AI context layer&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The trade-off of using AI extensively is our dependency on the context that we have built meticulously over time, fine-tuning prompts and accumulating layers of responses. &lt;/p&gt;

&lt;p&gt;Ekai has built a developer-focused solution that can seamlessly and cost-efficiently switch among various AI models via smart model routing without losing precious context. Oasis provides the trustless and verifiable privacy engine that such a context engine needs to function. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffz1nqv9xwusjqhduqdti.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffz1nqv9xwusjqhduqdti.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It addresses two major pain points in AI today.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Access control&lt;/strong&gt;: Access sharing is a common practice among users. They let friends and colleagues share access to AI models for ease of use. This is most prevalent while collaborating on projects. Divulging your actual credentials is a high-risk proposition.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agent context&lt;/strong&gt;: Sharing access is easy; sharing context is the real challenge. Say, you are working with an agent for an hour, and it has accumulated patterns, decisions, contents, outputs, and the logic connecting everything. This context lives in plaintext and is shareable. But whenever there is a new session, the context is gone, or it is a nightmare to locate and reference it. Sometimes, even within a single session, the context degrades as the session timing progresses, leading to hallucinations. Summarization works with limitations, as compressed details tend to get lost in the AI's memory architecture.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ekai is trying to solve this by becoming the context engine for AI agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contexto&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Designed as the context layer for AI agents, &lt;strong&gt;&lt;a href="https://www.getcontexto.com/" rel="noopener noreferrer"&gt;Contexto&lt;/a&gt;&lt;/strong&gt; currently works with OpenAI, Anthropic, Google, xAI, OpenRouter, and Groq, while the gateway runs on ROFL. Since it is built as an OpenClaw plugin, migration is not necessary.&lt;/p&gt;

&lt;p&gt;From an architectural point of view, Contexto works by keeping the main thread clean by storing and indexing older work. So, when the agent calls for it, the tool retrieves the relevant context automatically. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjs3s9rfuc68mdvwzpfgt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjs3s9rfuc68mdvwzpfgt.png" alt=" " width="799" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All tasks and subtasks run in isolation and are handled by scoped sub-agents who will return contextualized outputs and assembled context in short and simple results. However, nothing gets thrown out, and if you need to trace the full details, they are recoverable on demand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Oasis adds&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ekai's Control Plane enables storing encrypted API keys on-chain via Oasis &lt;a href="https://docs.oasis.io/build/sapphire/" rel="noopener noreferrer"&gt;Sapphire&lt;/a&gt;, so that you can delegate access with granular controls such as model restrictions, spending limits, and instant revocation. As decryption takes place only within the secure enclave or the TEE, it allows access sharing without credential sharing.&lt;/p&gt;

&lt;p&gt;Now, context. As our session windows with AI models grow, the more we have to lose if trust fails, since the context plaintext is recorded for anyone with access to see or manipulate. This context confidentiality issue is solved with ROFL running the context layer inside a TEE. Result: context is stored, indexed, and retrieved within the secure enclave without ever exposing the plaintext.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ekai next&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As of now, both the Control Plane and the context layer as an OpenClaw plugin are live on mainnet. The next phase involves making persistent context private by default as they design the bringing of the context store into the ROFL enclave. &lt;/p&gt;

&lt;p&gt;This would set the stage for agent-to-agent context routing. When this becomes possible, your agent will be able to collaborate with agents belonging to anyone. These disparate agents can then share relevant context with baked-in rules and privacy policies.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Final words&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I am reminded of Oasis AI head, Marko Stokić's discussion about AI memory in his &lt;a href="https://www.forbes.com/sites/digital-assets/2025/12/12/why-crypto-needs-portable-ai-memory/" rel="noopener noreferrer"&gt;Forbes article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We need confidentially computed, and verifiable portable AI context where the user can decide if and when they want to move across AI models, and the interoperable memory layer is subject to the user's data sovereignty and privacy. Both Plurality and Ekai, adopting a privacy-first approach with Oasis's tech stack, demonstrate their commitment to that future.&lt;/p&gt;

&lt;p&gt;What is your take on these projects working to solve AI's persistent memory problem? Let's hit the comments section.&lt;br&gt;
And if you would want to explore more about how Oasis can help you deploy verifiable agents, the journey starts &lt;a href="https://oasis.net/ai-agents" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>context</category>
      <category>web3</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Privana Is Coming. Private DeFi, No Catch.</title>
      <dc:creator>DC</dc:creator>
      <pubDate>Fri, 19 Jun 2026 09:29:25 +0000</pubDate>
      <link>https://dev.to/dc600/privana-is-coming-private-defi-no-catch-4lcd</link>
      <guid>https://dev.to/dc600/privana-is-coming-private-defi-no-catch-4lcd</guid>
      <description>&lt;p&gt;When web3 started its journey, one of the earliest use cases was decentralized finance (DeFi), and it quickly earned popularity among crypto enthusiasts. Over the years, DeFi has evolved in its scope and impact, and is still the best use case of web3 that invites adoption. However, DeFi has not been an unmitigated success and has its own set of challenges that frustrate users and discourage wider adoption.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The dark side of DeFi&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The biggest pain point in DeFi is &lt;a href="https://privana.finance/blog/how-privana-protects-web3-from-mev" rel="noopener noreferrer"&gt;MEV&lt;/a&gt;, or maximal extractable value. For a long time, users had to accept MEV as an invisible tax, although by definition, it is an oversimplification to call it bad. Yet many veteran users cannot escape the clutches of MEV's ugly side, and inexperienced users fall prey to it unwittingly as they navigate the world of DeFi.&lt;/p&gt;

&lt;p&gt;Here are the most prevalent MEV exploits.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In a sandwich attack, bots profit like this: notice the user awaiting a swap, buy the token, push the price up, then execute the user's trade at a worse price, and immediately sell so that the user gets fewer tokens.&lt;/li&gt;
&lt;li&gt;In frontrunning, when bots notice a pending transaction, they copy and submit the same trade with higher gas fees, thus jumping the queue at the user's disadvantage.&lt;/li&gt;
&lt;li&gt;In back-running, bots execute transactions immediately after a large trade to cash in on the arbitrage opportunity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Researchers have noted how users lose hundreds of millions of their funds due to poor defence against such attacks.&lt;/p&gt;

&lt;p&gt;It is not that solutions don't exist. But protection against MEV is still optional, and if users don't know exactly what to do or how, the bots will collect their dues. Public mempools and lack of privacy are the other side of the coin.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Enter private DeFi&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Oasis, which has been perfecting its privacy-first infrastructure, has joined the fray in offering an alternative to old, flawed DeFi with a new application - &lt;a href="https://oasis.net/blog/privana-liquefaction-implementation" rel="noopener noreferrer"&gt;Privana&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In tech-savvy speak, it combines Sapphire (only production-ready confidential EVM), secure enclaves as in TEEs, encrypted mempools, liquefaction, key encumbrance, and smart privacy to create a consumer-facing, user-friendly private DeFi solution. Let's unpack the user benefits instead of decoding jargon or justifying technical excellence.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What is Privana&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Simply stated, Privana offers private swaps, automated yields, and zero MEV in multi-chain operations (Ethereum, Base, HyperEVM).&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fju9z6kj1x2mf1q834qec.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fju9z6kj1x2mf1q834qec.png" alt=" " width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;USPs&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Privacy-first&lt;/strong&gt; - All user transactions are TEE-protected, and as they never hit the public mempools, bots can neither see nor target the trades. Result: protection from the adversarial effects that MEV inevitably causes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automation&lt;/strong&gt; - Users can set the operational rules and let everything execute in auto-mode. Their keys remain private, so no sharing, no exposure, no exploit risks - all in 3 steps.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deposit into the vault - Users send their tokens to the Privana vault, a secure enclave.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set preferences - Users choose their swap conditions, yield settings, and app permissions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Activate strategy - Once users approve, they can sit back and forget about manual intervention. Swaps, yield allocation, and rebalancing all run in the background without exposing any of the activity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Self-custody&lt;/strong&gt; - Applying the concept of key encumbrance, self-custody design is achieved through non-extractable keys, so no one can access or move the key outside the policy set by the users, not even by Privana developers in the backend. This also redefines self-custody as it empowers users to govern the keys instead of holding them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multi-chain&lt;/strong&gt; - Users don't need the expertise or headache of hopping between chains as one interface, no bridges, no wallet-switching leads to a seamless experience.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A quick overview of Privana's capabilities and what other major protocols offer, showcasing its versatile advantages with structural privacy design.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpfoj1ydf0lil2usefjsc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpfoj1ydf0lil2usefjsc.png" alt=" " width="800" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Privana&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Privana does not claim to be the only solution in the DeFi space. So, when we do a deep dive into &lt;a href="https://privana.finance/blog/2026-comparing-defi-privacy-solutions" rel="noopener noreferrer"&gt;comparing&lt;/a&gt; what is available right now, it clearly indicates that no one else combines everything. It is particularly interesting to see the trade-offs, even when tools have baked-in privacy.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fobsvhd8ch1qkdjd81ih5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fobsvhd8ch1qkdjd81ih5.png" alt=" " width="799" height="420"&gt;&lt;/a&gt;&lt;br&gt;
Privana checks all the boxes.&lt;/p&gt;

&lt;p&gt;No decentralized exchange (DEX) so far has been immune to MEV attacks, and Privana aims to counter this with the idea of encrypted mempools. When transactions are on-chain and public, they sit exposed in the mempool, and any malicious bot on the network can take advantage and undercut even a simple swap. Private RPCs and relays do work with limitations. They successfully hide transactions from the network, but reveal full swap intent to the relay operators.&lt;/p&gt;

&lt;p&gt;A centralized exchange (CEX) solves this particular trust gap of the DEX with internal books, but as the users' keys are in their custody, it opens a new can of worms. In truth, both DEXes and CEXes offer partial solutions with trade-offs. If there is some degree of MEV protection, then on-chain full transparency becomes an issue. If private swaps are possible, they don't come with automation and self-custody. Users usually get either cross-chain swaps or privacy-focused swaps, but not both.&lt;/p&gt;

&lt;p&gt;As a trading interface, Privana does the serious legwork with its privacy-first approach - designed specifically to be private by default and automated without giving up control. This is a long-awaited solution that promises to plug the holes while delivering the optimal DeFi experience for users.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Privana is coming&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The Privana roadmap comprehensively lists what users can expect from the product in the coming days.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwl5gme714gd77j2hyxr3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwl5gme714gd77j2hyxr3.png" alt=" " width="800" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The impending launch of Privana is also in sync with the &lt;a href="https://oasis.net/blog/oasis-new-chapter" rel="noopener noreferrer"&gt;new strategic direction&lt;/a&gt; adopted by Oasis. The protocol already has the underlying infrastructure for implementation. So, instead of solely relying on ecosystem partners to build the dApps, it is now focusing on shipping products that directly bring the benefits of the tech stack to the users.&lt;/p&gt;

&lt;p&gt;Privana promises to be the vanguard. For users, this is a new opportunity as well to transform their DeFi experience for the better.&lt;/p&gt;

&lt;p&gt;There are already several incentives announced for early joiners of &lt;a href="https://privana.finance/" rel="noopener noreferrer"&gt;Privana&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Zero fees for 90 days&lt;/li&gt;
&lt;li&gt;Founding Member status&lt;/li&gt;
&lt;li&gt;Priority queue at launch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do not miss out.&lt;/p&gt;

&lt;p&gt;Let's discuss in the comments your take on Privana and private DeFi, and what aspects you like the best, and what else you want to be incorporated down the line.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>decentralizedfinance</category>
      <category>privacy</category>
      <category>uxdesign</category>
    </item>
    <item>
      <title>ROFLize an App? Part 1: ROFL Workflow To Initialization</title>
      <dc:creator>DC</dc:creator>
      <pubDate>Thu, 18 Jun 2026 08:16:32 +0000</pubDate>
      <link>https://dev.to/dc600/roflize-an-app-part-1-rofl-workflow-to-initialization-4m78</link>
      <guid>https://dev.to/dc600/roflize-an-app-part-1-rofl-workflow-to-initialization-4m78</guid>
      <description>&lt;p&gt;Recently, I shared a quickstart guide titled "&lt;a href="https://dev.to/dc600/how-to-enhance-your-app-with-oasis-rofl-a-quickstart-tutorial-3n55"&gt;How To Enhance Your App With Oasis ROFL&lt;/a&gt;". While the tutorial was complete in itself, I skipped some of the finer implementation details to keep it streamlined. Here, in this new 2-part series, I will unpack those sections step by step.&lt;/p&gt;

&lt;p&gt;Rather than covering old ground from the post, which already features a short explainer video and visuals of the architectural breakdown and the workflow overview of the ROFL (runtime off-chain logic) framework, let's dive straight into the developers' POV here.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Workflow&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6sp44ft4kur866hrve63.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6sp44ft4kur866hrve63.png" alt=" " width="799" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As this visual shows, there is a dedicated Trusted Execution Environment (TEE) for every app that runs inside ROFL. An Oasis node provides the TEE from its ORC bundle, consisting of a zip archive containing the program binaries and metadata required for execution. &lt;br&gt;
As a result, the ROFL apps registering on Oasis's network can easily authenticate to on-chain smart contracts and also transparently gain access to the decentralized per-app key management system.&lt;/p&gt;

&lt;p&gt;The TEE ensures app security and enables secure communication with the outside world. The function of the light client here is to establish a fresh view of the Oasis consensus layer. This not only provides a source of approximate time references but also acts as an integrity gatekeeper for the verification of all on-chain states.&lt;br&gt;
In addition, the app also generates a set of ephemeral cryptographic keys, used in remote attestation and on-chain registration, and then discarded at the end of the session to provide forward and backward secrecy. &lt;br&gt;
The authentication process for on-chain modules is completed by signing and submitting special transactions. As a result, the app can now perform any arbitrary task and interact with the outside world through network connections, authenticated via HTTPS/TLS, or other methods such as light clients for other chains.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We need 2 tools for ROFL development and deployment.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Oasis CLI&lt;/strong&gt;: The Oasis command-line interface (CLI) is an all-in-one tool, handling wallet management, app registration, building, deployment, and replica management. For a detailed overview and installation instructions, check out the &lt;strong&gt;&lt;a href="https://docs.oasis.io/build/tools/cli/" rel="noopener noreferrer"&gt;oasis&lt;/a&gt;&lt;/strong&gt; command. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Docker&lt;/strong&gt;: Having a containerized build environment is an essential prerequisite, as it ensures that you do not have to install a handful of Intel-specific libraries and dependencies on your system. Moreover, the &lt;strong&gt;Compose&lt;/strong&gt; function will help test the ROFL locally before you deploy it on-chain.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can choose any of the 3 following ways to continue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Preferred&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This method uses Oasis CLI and a container for building and testing. &lt;br&gt;
First, you need to &lt;strong&gt;&lt;a href="https://docs.oasis.io/build/tools/cli/setup/" rel="noopener noreferrer"&gt;download and install&lt;/a&gt;&lt;/strong&gt; the Oasis CLI on your platform.&lt;br&gt;
Next, test the functionality by building the ROFL app.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;oasis rofl build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Conservative&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this method, there are containers everywhere. &lt;br&gt;
If there are any issues while installing the Oasis CLI locally, or perhaps you want to skip the Oasis CLI step altogether, the workaround is to run the &lt;strong&gt;oasis&lt;/strong&gt; command from the &lt;strong&gt;&lt;a href="https://github.com/oasisprotocol/oasis-sdk/pkgs/container/rofl-dev" rel="noopener noreferrer"&gt;rofl-dev&lt;/a&gt;&lt;/strong&gt; image.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: You must be careful when you bind-mount the Oasis CLI config folder, which contains your wallet. Otherwise, there is a risk of losing access to your (funded) accounts.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Invoke &lt;strong&gt;oasis&lt;/strong&gt; from the &lt;strong&gt;rofl-dev&lt;/strong&gt; image.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Linux:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;--platform&lt;/span&gt; linux/amd64 &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; .:/src &lt;span class="nt"&gt;-v&lt;/span&gt; ~/.config/oasis:/root/.config/oasis &lt;span class="nt"&gt;-it&lt;/span&gt; ghcr.io/oasisprotocol/rofl-dev:main oasis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For MacOS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;--platform&lt;/span&gt; linux/amd64 &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; .:/src &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="s2"&gt;"~/Library/Application Support/oasis/"&lt;/span&gt;:/root/.config/oasis &lt;span class="nt"&gt;-it&lt;/span&gt; ghcr.io/oasisprotocol/rofl-dev:main oasis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Windows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;docker&lt;/span&gt; &lt;span class="nb"&gt;run&lt;/span&gt; &lt;span class="na"&gt;--platform &lt;/span&gt;&lt;span class="kd"&gt;linux&lt;/span&gt;&lt;span class="na"&gt;/amd&lt;/span&gt;&lt;span class="m"&gt;64&lt;/span&gt; &lt;span class="na"&gt;--rm -v &lt;/span&gt;.:/src &lt;span class="na"&gt;-v &lt;/span&gt;&lt;span class="nv"&gt;%USERPROFILE%&lt;/span&gt;&lt;span class="na"&gt;/AppData/Local/oasis&lt;/span&gt;/:/root/.config/oasis &lt;span class="na"&gt;-it &lt;/span&gt;&lt;span class="kd"&gt;ghcr&lt;/span&gt;.io/oasisprotocol/rofl&lt;span class="na"&gt;-dev&lt;/span&gt;&lt;span class="nl"&gt;:main&lt;/span&gt; &lt;span class="kd"&gt;oasis&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;This step here is optional. You can choose to add &lt;strong&gt;oasis&lt;/strong&gt;alias to your shell start-up script. This will mimic as if Oasis CLI was installed locally.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Linux:&lt;br&gt;
~/.bashrc&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;oasis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'docker run --platform linux/amd64 --rm -v .:/src -v ~/.config/oasis:/root/.config/oasis -it ghcr.io/oasisprotocol/rofl-dev:main oasis'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For MacOS:&lt;br&gt;
~/.bash_profile&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;oasis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'docker run --platform linux/amd64 --rm -v .:/src -v "~/Library/Application Support/oasis/":/root/.config/oasis -it ghcr.io/oasisprotocol/rofl-dev:main oasis'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Advanced&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This method uses native Oasis CLI and ROFL build utils. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: It is for &lt;strong&gt;linux/amd64&lt;/strong&gt; only.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The first step is installing the Oasis CLI locally.&lt;br&gt;
Next, you need to install tools for creating and encrypting partitions and Quick Emulator (QEMU). For a Debian-based Linux, this can be done by running this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;squashfs-tools cryptsetup-bin qemu-utils
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, you may be looking to build SGX and TDX-raw ROFL bundles. In that case, it will require the installation of the Rust toolchain and Fortanix libraries. It is a separate detailed process involving &lt;strong&gt;Oasis Core prerequisites&lt;/strong&gt;, which I will elaborate on in a later post. For now, you just follow the steps outlined &lt;a href="https://docs.oasis.io/core/development-setup/prerequisites" rel="noopener noreferrer"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: You do not need a working SGX/TDX TEE when building ROFL natively. Even an Intel-based CPU and the corresponding libraries will suffice.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Containerize&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We have often mentioned that an ROFL app needs to be containerized. What does this mean? A container is basically a controlled environment that includes the exact version of the operating system, both system and user libraries, as well as your configured service. The image of the container is uploaded to an OCI file server, such as &lt;strong&gt;&lt;a href="https://docker.io/" rel="noopener noreferrer"&gt;docker.io&lt;/a&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;a href="https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry" rel="noopener noreferrer"&gt;ghcr.io&lt;/a&gt;&lt;/strong&gt;. The server hosting your app can then download it, consisting two files.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-bot
├── bot.py           # A python bot script
└── requirements.txt # Python dependencies
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, we will use &lt;strong&gt;&lt;a href="https://www.docker.com/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt;&lt;/strong&gt; to containerize. However, you can choose to go with &lt;strong&gt;&lt;a href="https://www.podman.io/" rel="noopener noreferrer"&gt;Podman&lt;/a&gt;&lt;/strong&gt; instead of Docker, as once the app is deployed to a ROFL node, the containers there will be orchestrated by Podman anyway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dockerfile&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here we will create a file called &lt;strong&gt;Dockerfile&lt;/strong&gt; inside the project folder. This will tell Docker to compile a &lt;strong&gt;python-based image&lt;/strong&gt; and add the &lt;strong&gt;python bot script&lt;/strong&gt; on top of it.&lt;/p&gt;

&lt;p&gt;Dockerfile&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; python:alpine3.17&lt;/span&gt;

&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /bot&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; ./bot.py ./requirements.txt /bot&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="k"&gt;ENTRYPOINT&lt;/span&gt;&lt;span class="s"&gt; ["python", "bot.py"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Compose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The function of &lt;strong&gt;&lt;a href="https://docs.docker.com/reference/compose-file/" rel="noopener noreferrer"&gt;Docker Compose&lt;/a&gt;&lt;/strong&gt; is to orchestrate the containers you will be using. This ensures correct sequencing, defining storage points, networking, and other functionalities. You can create &lt;strong&gt;compose.yaml&lt;/strong&gt; with the following command.&lt;/p&gt;

&lt;p&gt;compose.yaml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;python-bot&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;docker.io/YOUR_USERNAME/YOUR_PROJECT"&lt;/span&gt;
    &lt;span class="na"&gt;platform&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;linux/amd64&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;TOKEN=${TOKEN}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You may need to adjust the &lt;strong&gt;image:&lt;/strong&gt; field(s) to fit your needs. The &lt;strong&gt;image:&lt;/strong&gt; field must always point to a &lt;strong&gt;publicly accessible OCI registry&lt;/strong&gt; from where your image will be downloaded for execution. &lt;br&gt;
If you are replacing the &lt;strong&gt;image:&lt;/strong&gt; field with a fully qualified domain of the OCI server you use, followed by your username, the field will look like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;docker.io/your_username/my-bot&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ghcr.io/your_username/my-bot&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Always specify the container image URL with a fully qualified domain name, e.g., &lt;strong&gt;docker.io/ollama/ollama&lt;/strong&gt; and not just &lt;strong&gt;ollama/ollama&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Build and Push&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now, you can build the container image and tag it using &lt;strong&gt;docker compose&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To check the compose setup locally, test it with this command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To stop once done, use this command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose down
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After you have completed building and tagging the images, the next step is to push the container images to a publicly accessible OCI registry that we referred to earlier (&lt;strong&gt;&lt;a href="https://docker.io/" rel="noopener noreferrer"&gt;docker.io&lt;/a&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;a href="https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry" rel="noopener noreferrer"&gt;ghcr.io&lt;/a&gt;&lt;/strong&gt;).&lt;br&gt;
For first-time use, you need to perform an authentication step by running this command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once done and for all those already logged in before, this command will upload the container images to the registry.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: For first-timers, when pushing the image to GitHub containers, please ensure &lt;a href="https://docs.github.com/en/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#configuring-visibility-of-packages-for-your-personal-account" rel="noopener noreferrer"&gt;public package visibility&lt;/a&gt; is properly configured.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Pin Your Image Hash&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the final step in the containerizing process. It helps prevent another container image from being pulled inside ROFL. You do it by pinning the image digest inside &lt;strong&gt;compose.yaml&lt;/strong&gt;. To fetch the &lt;strong&gt;sha256:...&lt;/strong&gt; digest, try invoking:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker images &lt;span class="nt"&gt;--digests&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you need to append &lt;strong&gt;@&lt;/strong&gt; and the digest next to the image tag in your &lt;strong&gt;compose.yaml&lt;/strong&gt;. Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;docker.io/MY_USERNAME/my-bot@sha256:9633593eb9e8395023cb0d926982602978466ec003efa189d94a34e7bea6ec0d"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Init&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In the final section of this tutorial, we will see how to initialize the ROFL app. Before starting, you need to choose from the 3 options below. Notably, whatever you choose, it would likely be a trade-off between the Trusted Computing Base (TCB) size and ease of use.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;TDX containers ROFL (default)&lt;/strong&gt;: A Docker compose-based container service packed in a secure virtual machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Raw TDX ROFL&lt;/strong&gt;: A Rust app compiled as the init process of the operating system and packed in a secure virtual machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SGX ROFL&lt;/strong&gt;: A Rust app with fixed memory allocation compiled and packed into a single secure binary.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Init App Directory and Manifest&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first step is to create the basic directory structure for the app using the Oasis CLI.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oasis rofl init my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You now have a &lt;strong&gt;my-app&lt;/strong&gt; directory and have also initialized a ROFL manifest file. As noted above, the default is a TDX container-based ROFL. To select one of the other options, you need to use the &lt;strong&gt;--kind&lt;/strong&gt; parameter.&lt;/p&gt;

&lt;p&gt;As a result of the &lt;strong&gt;init&lt;/strong&gt; command, you will get the following output summary.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Creating a new ROFL app with default policy...
Name:     my-app
Version:  0.1.0
TEE:      tdx
Kind:     container
Git repository initialized.
Created manifest in 'rofl.yaml'.
Run `oasis rofl create` to register your ROFL app and configure an app ID.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The directory structure (omitting git artifacts) will look like this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;myapp
├── compose.yaml        # Container compose file.
└── rofl.yaml           # ROFL app manifest.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The &lt;a href="https://docs.oasis.io/build/rofl/features/manifest" rel="noopener noreferrer"&gt;manifest&lt;/a&gt; that this step initialized is a ROFL feature that contains metadata, secrets, and requested resources. These can be modified either manually or by using the CLI commands and require to be discussed in detail separately. For now, we have finished initialization.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the concluding part of the series, I will guide you through the next steps in ROFLizing your app, involving create, build, deploy, and test processes. &lt;br&gt;
Until then, if you encounter any issues, you can have a quick chat with the Oasis engineering team for help by dropping your comments in the &lt;strong&gt;dev-central channel&lt;/strong&gt; in the official &lt;a href="https://discord.com/invite/BQCxwhT5wS" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>blockchain</category>
      <category>tee</category>
      <category>devex</category>
    </item>
    <item>
      <title>Guide To Deploying A Trustless Eliza Agent With Oasis ROFL</title>
      <dc:creator>DC</dc:creator>
      <pubDate>Thu, 28 May 2026 06:53:48 +0000</pubDate>
      <link>https://dev.to/dc600/guide-to-deploying-a-trustless-eliza-agent-with-oasis-rofl-48hh</link>
      <guid>https://dev.to/dc600/guide-to-deploying-a-trustless-eliza-agent-with-oasis-rofl-48hh</guid>
      <description>&lt;p&gt;Oasis introduced the framework for runtime off-chain logic (ROFL) to help build and run apps off-chain while ensuring privacy and maintaining trust with on-chain verifiability. For most people, this &lt;a href="https://www.youtube.com/watch?v=JFYnEyMFgRE" rel="noopener noreferrer"&gt;explainer video&lt;/a&gt; would be enough. But for developers and dApp builders, who want to try things out themselves, a deeper dive is worth it.&lt;/p&gt;

&lt;p&gt;In this tutorial, I will demonstrate how to build and deploy a trustless Eliza agent with Oasis ROFL.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Objective&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The objective is to have a working Eliza agent running inside a ROFL Trusted Execution Environment (TEE). I will also show how to get it registered and validated as a trustless agent in the &lt;a href="https://eips.ethereum.org/EIPS/eip-8004" rel="noopener noreferrer"&gt;ERC-8004&lt;/a&gt; registry. The agent's code will be fully auditable, and anyone can verify the authenticity of the origin of the deployed instance, which is immutable and tamper-proof.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Refer to the prerequisite section in the &lt;a href="https://dev.to/dc600/how-to-enhance-your-app-with-oasis-rofl-a-quickstart-tutorial-3n55"&gt;ROFL quickstart tutorial&lt;/a&gt; for setup details.&lt;br&gt;
So, right now, we need these to get started.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Docker&lt;/strong&gt; (or Podman) with credentials. It can be on docker.io, ghcr.io, or any other public OCI registry.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Oasis CLI&lt;/strong&gt; and at least &lt;strong&gt;120 TEST&lt;/strong&gt; tokens in your wallet. Since we are building in the testnet environment, you can get these tokens for free from the &lt;a href="https://faucet.testnet.oasis.io/" rel="noopener noreferrer"&gt;official faucet&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node.js 22+&lt;/strong&gt;. It is for Eliza and helper scripts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenAI API key&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RPC URL&lt;/strong&gt;. It is to access the ERC-8004 registry (e.g. Infura).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pinata JWT&lt;/strong&gt;. It is to store agent information in IPFS.&lt;/li&gt;
&lt;li&gt;At least &lt;strong&gt;2 GiB of memory&lt;/strong&gt; and &lt;strong&gt;10 GB of storage&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Eliza Agent Creation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The first step is to initialize a project using the ElizaOS CLI. Next, prepare it for ROFL.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install bun and ElizaOS CLI&lt;/span&gt;
bun &lt;span class="nt"&gt;--version&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://bun.sh/install | bash
bun &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @elizaos/cli

&lt;span class="c"&gt;# Create and configure the agent&lt;/span&gt;
elizaos create &lt;span class="nt"&gt;-t&lt;/span&gt; project rofl-eliza
&lt;span class="c"&gt;# 1) Select Pqlite database&lt;/span&gt;
&lt;span class="c"&gt;# 2) Select the OpenAI model and enter your OpenAI key&lt;/span&gt;

&lt;span class="c"&gt;# Test the agent locally&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;rofl-eliza
elizaos start
&lt;span class="c"&gt;# Visiting http://localhost:3000 with your browser should open Eliza UI&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Containerize&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In this step, you will need to containerize both the app and the ERC-8004 wrapper. &lt;br&gt;
You will notice that the Eliza agent startup wizard has already generated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dockerfile&lt;/strong&gt; - this packs your agent into a container. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;docker-compose.yaml&lt;/strong&gt; - this automatically configures, connects, and manages the interdependent &lt;strong&gt;postgres&lt;/strong&gt; and &lt;strong&gt;elizaos&lt;/strong&gt; containers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The next step is to make some changes to &lt;strong&gt;docker-compose.yaml&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the PostgreSQL section, you need to replace relative &lt;strong&gt;image: ankane/pgvector:latest&lt;/strong&gt; with &lt;strong&gt;image: docker.io/ankane/pgvector:latest&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;You need to name the &lt;strong&gt;elizaos&lt;/strong&gt; image with a corresponding absolute path, e.g. &lt;strong&gt;image: docker.io/YOUR_USERNAME/elizaos:latest&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;You need to register the Eliza agent as a trustless agent in the ERC-8004 registry using the &lt;a href="https://github.com/oasisprotocol/erc-8004" rel="noopener noreferrer"&gt;&lt;strong&gt;rofl-8004&lt;/strong&gt;&lt;/a&gt; snippet. Ensure that the environment variables are mapped as is.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;docker-compose.yaml&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;  &lt;span class="na"&gt;rofl-8004&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ghcr.io/oasisprotocol/rofl-8004@sha256:f57373103814a0ca4c0a03608284451221b026e695b0b8ce9ca3d4153819a349&lt;/span&gt;
    &lt;span class="na"&gt;platform&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;linux/amd64&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;RPC_URL=${RPC_URL}&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;PINATA_JWT=${PINATA_JWT}&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;/run/rofl-appd.sock:/run/rofl-appd.sock&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The validation flow looks something like this:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvikw8xthetw9s4i6pfpy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvikw8xthetw9s4i6pfpy.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have edited &lt;strong&gt;docker-compose.yaml&lt;/strong&gt;, it is time to build and push.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose build
docker compose push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you are looking for full verifiability, you need to pin the digest by appending &lt;strong&gt;image: ...&lt;a class="mentioned-user" href="https://dev.to/sha256"&gt;@sha256&lt;/a&gt;:...&lt;/strong&gt; to all images in &lt;strong&gt;docker-compose.yaml&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Init &amp;amp; Create&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Once all previous steps are complete, you will find that the agent is running in a container within a TEE. In this setup, ROFL handles the startup attestation of the container and the secrets in the form of environment variables. As a result, the TEE is completely transparent to the Eliza agent app.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oasis rofl init
oasis rofl create &lt;span class="nt"&gt;--network&lt;/span&gt; testnet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can check out on-chain activity and app details in the &lt;a href="https://explorer.oasis.io/testnet/sapphire" rel="noopener noreferrer"&gt;Oasis Explorer&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Build ROFL bundle&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This is where the memory and storage prerequisites come in handy.&lt;br&gt;
First, you need to update the resources section.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;rofl.yaml&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;memory&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2048&lt;/span&gt;
  &lt;span class="na"&gt;cpus&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
  &lt;span class="na"&gt;storage&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;disk-persistent&lt;/span&gt;
    &lt;span class="na"&gt;size&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, you can build the ROFL bundle by invoking this command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oasis rofl build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Secrets&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In this step, we take care of encryption. It involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;End-to-end encrypting of &lt;strong&gt;OPENAI_API_KEY&lt;/strong&gt; and storing it on-chain. &lt;/li&gt;
&lt;li&gt;Providing the &lt;strong&gt;RPC_URL&lt;/strong&gt; and &lt;strong&gt;PINATA_JWT&lt;/strong&gt; values for ERC-8004 registration.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;your-openai-key-here&amp;gt;"&lt;/span&gt; | oasis rofl secret &lt;span class="nb"&gt;set &lt;/span&gt;OPENAI_API_KEY -
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"https://sepolia.infura.io/v3/&amp;lt;YOUR_KEY&amp;gt;"&lt;/span&gt; | oasis rofl secret &lt;span class="nb"&gt;set &lt;/span&gt;RPC_URL -
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;your-pinata-key-here&amp;gt;"&lt;/span&gt; | oasis rofl secret &lt;span class="nb"&gt;set &lt;/span&gt;PINATA_JWT -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then comes the important step of storing the secrets as well as the previously built enclave identities on-chain.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oasis rofl update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Deploy&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This completes the building of the Eliza agent. Now, we need to deploy it to an ROFL provider.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oasis rofl deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Oasis-maintained provider is selected on Testnet, which rents a node for 1 hour by default. You can extend the rental period for more hours, say for 6 hours, by invoking &lt;strong&gt;oasis rofl machine top-up --term hour --term-count 6&lt;/strong&gt; &lt;a href="https://docs.oasis.io/build/tools/cli/rofl#deploy" rel="noopener noreferrer"&gt;command&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Test&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;You have successfully built and deployed your very own Eliza agent. You can test if it is running properly with this CLI check.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Show machine details (state, proxy URLs, expiration).&lt;/span&gt;
oasis rofl machine show
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A successful agent boot means the &lt;strong&gt;Proxy:&lt;/strong&gt; section will show the URL where the agent is accessible. So, for example if it shows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;Proxy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;Domain&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;m1058.opf-testnet-rofl-25.rofl.app&lt;/span&gt;
  &lt;span class="na"&gt;Ports from compose file&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;3000 (elizaos)&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://p3000.m1058.opf-testnet-rofl-25.rofl.app&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case, the app would be accessible at &lt;strong&gt;&lt;a href="https://p3000.m1058.opf-testnet-rofl-25.rofl.app" rel="noopener noreferrer"&gt;https://p3000.m1058.opf-testnet-rofl-25.rofl.app&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;ERC-8004 Registration and Validation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This is not an automatic step and needs to be completed to get this Eliza agent registered and validated as a trustless agent in the ERC-8004 registry. When you are running the agent for the first time, the &lt;strong&gt;rofl-8004&lt;/strong&gt; service will derive the Ethereum address for registering it. To go ahead, you will need to fund that account with some ETH to pay for the gas fees.&lt;/p&gt;

&lt;p&gt;Use this command to fetch your app logs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oasis rofl machine logs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;strong&gt;Please top it up&lt;/strong&gt; line will show the derived address. After funding it, your agent is registered and validated, and ready to go.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Please note&lt;/strong&gt;: All logs here are accessible to the app admin, as they are stored &lt;strong&gt;unencrypted on the ROFL node&lt;/strong&gt;. So, remember not to put any private information here.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Demo&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This guide shows how you can build your own agent, but if you need to check out a full-fledged demo of how it looks and works, there is an example in the official Oasis repository.&lt;br&gt;
&lt;a href="https://github.com/oasisprotocol/demo-trustless-agent" rel="noopener noreferrer"&gt;&lt;strong&gt;Trustless Agent Demo&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a quick chat with the Oasis engineering team for help with specific issues, you can drop your comments in the &lt;strong&gt;dev-central channel&lt;/strong&gt; in the official &lt;a href="https://discord.com/invite/BQCxwhT5wS" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>trustless</category>
      <category>eliza</category>
      <category>agents</category>
    </item>
    <item>
      <title>Key Encumbrance: The Primitive That Makes Programmable Privacy Possible</title>
      <dc:creator>DC</dc:creator>
      <pubDate>Wed, 27 May 2026 08:34:18 +0000</pubDate>
      <link>https://dev.to/dc600/key-encumbrance-the-primitive-that-makes-programmable-privacy-possible-n04</link>
      <guid>https://dev.to/dc600/key-encumbrance-the-primitive-that-makes-programmable-privacy-possible-n04</guid>
      <description>&lt;p&gt;Over the years, blockchain technology has unlocked key primitives that drive utility and adoption. Multisigs, multi-party computation, ERC-4337 (account abstraction), smart wallets, etc., have all contributed to making it more accessible and user-friendly. &lt;/p&gt;

&lt;p&gt;But problems persist. Public blockchains mean absolute transparency and on-chain visibility, leading to constant exposure and risk of exploitation. Then there is the need to always coordinate among people to enable the "multi" aspect for security. Most of the major chains are also siloed, and interoperability is still very limited in application. Moreover, key custody is binary, making private key management both challenging and often trust-dependent. And this does not inspire user confidence or mass adoption. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Key Encumbrance&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Oasis has been at the forefront of privacy-first blockchain technology and utility, and has actively supported the development of primitives to advance this. &lt;br&gt;
Last year the protocol collaborated with researchers at IC3 and Cornell Tech to explore practical implementations of &lt;a href="https://oasis.net/blog/liquefaction-most-traded-nft-in-history" rel="noopener noreferrer"&gt;Liquefaction&lt;/a&gt; on Sapphire.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key encumbrance&lt;/strong&gt; is a core benefit of Liquefaction that proposes an elegant solution for the pain points discussed earlier. Here, the private key is generated inside a TEE enclave and can only be interacted with through &lt;strong&gt;programmable policies&lt;/strong&gt;. &lt;br&gt;
As a result, the key is completely secure and tamper-proof, with neither the end users nor the delegates nor the operators and developers ever having access to the keys.    &lt;/p&gt;

&lt;p&gt;So, when users try to sign with their keys, that is only possible when the signature request satisfies the policy conditions. Simply stated, the key never leaves the secure enclave, and the policy enforcement is end-to-end encrypted and processed only inside the enclave. Therefore, the assets linked to the key enjoy complete security and privacy, and can be moved, traded, shared, or pooled without on-chain exposure or tracking.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How It Works&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The major question now is whether this is actually implementable. Short answer, yes.&lt;/p&gt;

&lt;p&gt;The USP is adding &lt;strong&gt;programmable policies&lt;/strong&gt; that must be passed before the key inside the TEE encrypts and signs the transaction on the target chain. Interestingly, this does not need a multisig solution, and a single entity can operate under multiple policy scopes.&lt;br&gt;
As a practical application of this concept, Oasis has developed encumbrance-powered vault infrastructure for DeFi, bringing privacy, security, and ease of use together.&lt;/p&gt;

&lt;p&gt;The architecture is simple, with a user interface where the application interacts with the functionality via an SDK. Any request or intent passes into the enclave, consisting of:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A policy engine&lt;/li&gt;
&lt;li&gt;The encumbered key&lt;/li&gt;
&lt;li&gt;A transaction executor&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this setup, the request encounters the policy engine that stores the policies in a confidential smart contract. If and when the request satisfies the policy conditions, the key signs and authorizes the request. In case the policy conditions are not met, the request fails, and there is no further action. Simply put, instead of the user accessing and potentially exposing the private key, the key remains inaccessible within the enclave, and only meeting the policy criteria triggers the smart contract to sign the transaction.&lt;/p&gt;

&lt;p&gt;This system becomes particularly powerful when other chains are involved. Even though Oasis has its own network, users do not need to deposit the assets to Oasis, which simplifies interoperability. The assets are stored in a confidential container where the users can generate wallets for target chains and sign with them over programmable policies. So, the user assets stay where they are, while Oasis functions as the ultimate security layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Encumbrance? Why Not Multisig?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Multisigs have been useful for a long time, but come with limitations. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every action lives on-chain&lt;/li&gt;
&lt;li&gt;Users are locked to a single chain&lt;/li&gt;
&lt;li&gt;No action is possible without coordination and a quorum&lt;/li&gt;
&lt;li&gt;Enforcement needs a dedicated contract&lt;/li&gt;
&lt;li&gt;Delegation entails adding/removing signers, which also requires authorized signatures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key encumbrance&lt;/strong&gt; does away with these limitations.&lt;/p&gt;

&lt;p&gt;Adding or revoking access can be done by updating a policy. As the keys are never shared and truly private, the rules are enforced only through the policy engine.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;programmable policies&lt;/strong&gt; are the definitive point of difference, making encumbrance a groundbreaking and powerful primitive for future utility and user convenience. In practice, these policies come with tangible capabilities and benefits.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Non-custodial automatic execution&lt;/strong&gt;. If an asset's price threshold is breached, the enclave verifies with the policy condition, and the key signs a trade/sell. Neither manual approval is needed, nor is there a need for a bot with private key access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Composable policy chains&lt;/strong&gt;. Multi-chain functionality is in-built. So, profit from a sale or trading into a stablecoin can be routed to a different chain where it can earn passive yield - the entire process is maintained by using the policy engine without manual intervention or signing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scoped bot access&lt;/strong&gt;. By adding policies to an encumbered key - it can be anything, such as assigning a dollar value threshold, specifying transactional time windows, or assets whitelisted with pre-set criteria, bot usage can be streamlined. Here, the bot will access the signature via an API without ever having key access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Delegation without quorum&lt;/strong&gt;. Policy access can be programmed to have an expiry date of 30 days. With no key sharing, and keys managed and enforced inside TEEs, no human coordination or quorum criteria are needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Session-based gaming&lt;/strong&gt;. Application in gaming and related use cases where policy can pre-determine a threshold and time window, and handle signatures accordingly without needing to leave the game to approve transactions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Final Takeaway&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Current user experience in the blockchain and web3 space is riddled with poor key management and compromised access control. Encumbered keys make it possible for the next generation of applications to integrate programmability, privacy, and permissionless utility. &lt;br&gt;
The proof of concept is already under development by Oasis using its own tech stack and primitives - &lt;a href="https://oasis.net/solutions-defi" rel="noopener noreferrer"&gt;private DeFi with Privana&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Further reading: Primitives by Oasis&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://oasis.net/blog/storage-encryption-access-management" rel="noopener noreferrer"&gt;Decentralized Storage&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://oasis.net/blog/rofl-proxy-frontend-hosting" rel="noopener noreferrer"&gt;Proxy Support for Frontend Hosting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://oasis.net/blog/multichain-wallet-agents" rel="noopener noreferrer"&gt;Multi-chain Wallet&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://oasis.net/blog/decentralized-key-management-agents" rel="noopener noreferrer"&gt;Decentralized Key Management&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>blockchain</category>
      <category>web3</category>
      <category>privacy</category>
      <category>keymanagement</category>
    </item>
    <item>
      <title>How To Enhance Your App With Oasis ROFL: A QuickStart Tutorial</title>
      <dc:creator>DC</dc:creator>
      <pubDate>Wed, 22 Apr 2026 14:34:03 +0000</pubDate>
      <link>https://dev.to/dc600/how-to-enhance-your-app-with-oasis-rofl-a-quickstart-tutorial-3n55</link>
      <guid>https://dev.to/dc600/how-to-enhance-your-app-with-oasis-rofl-a-quickstart-tutorial-3n55</guid>
      <description>&lt;p&gt;I have mentioned the Oasis ROFL (runtime off-chain logic) framework on several occasions. For most people, this &lt;a href="https://www.youtube.com/watch?v=JFYnEyMFgRE" rel="noopener noreferrer"&gt;explainer video&lt;/a&gt; would be enough. But for developers and dApp builders, who want to try things out themselves, a deeper dive is worth it. In this guide, I will give a quick introduction to ROFL and then share a QuickStart tutorial to help build a ROFL-powered app.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;ROFL in a nutshell&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The ROFL architecture consists of these distinct components: the hardware, the application, the remote attestation, the blockchain layers, and user interaction.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw120rnzzlxnj2hwrg6iu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw120rnzzlxnj2hwrg6iu.png" alt=" " width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Further, this 5-part process lays out how ROFL works.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq3i24ftygqc2wqntg497.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq3i24ftygqc2wqntg497.jpeg" alt=" " width="680" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From a developer's perspective, ROFL-powered apps run on Oasis nodes inside a Trusted Execution Environment (TEE), managed through the protocol's unique production-ready EVM runtime - Sapphire.&lt;/p&gt;

&lt;p&gt;When you use ROFL, you get the following support:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Docker-like containers&lt;/strong&gt; or &lt;strong&gt;single executable apps&lt;/strong&gt;, based on what Trusted Compute Base (TCB) you are using, and what your threat model is&lt;/li&gt;
&lt;li&gt;Intel SGX/TDX ensures &lt;strong&gt;privacy and integrity&lt;/strong&gt;, and also provides a full update history and auditability&lt;/li&gt;
&lt;li&gt;Your app is registered, managed, and deployed on a permissionless pool of ROFL nodes, which means it is &lt;strong&gt;not censorable&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;There is a &lt;strong&gt;built-in Key Management Service&lt;/strong&gt; (KMS) that stores your app's secrets as well as secures key derivation inside the TEE&lt;/li&gt;
&lt;li&gt;Verifiable ROFL transactions originating from &lt;strong&gt;integration with Oasis Sapphire&lt;/strong&gt; that enable EVM-compatible confidential smart contracts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh3pktopc68sekzhv4ikc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh3pktopc68sekzhv4ikc.png" alt=" " width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Moreover, you don't need to build from scratch - you can just wrap your existing app into a ROFL-powered app. Let's see how.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;QuickStart&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;There are 5 steps to enhance an app with ROFL power:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Initialize&lt;/strong&gt; the ROFL manifest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create&lt;/strong&gt; a new app on blockchain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build&lt;/strong&gt; a ROFL bundle&lt;/li&gt;
&lt;li&gt;Encrypt &lt;strong&gt;secrets&lt;/strong&gt; and store them on-chain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy&lt;/strong&gt; your app on a ROFL node&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Containerized App&lt;/strong&gt;&lt;br&gt;
First thing you need is a containerized app with a downloadable Docker-like image. Any public Open Container Initiative (OCI) repository works; however, you might like to choose from &lt;a href="https://docker.io/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt; or &lt;a href="https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry" rel="noopener noreferrer"&gt;GitHub container registry&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If your app is not already running inside a container and you don't know how, follow this &lt;a href="https://docs.oasis.io/build/rofl/workflow/containerize-app/" rel="noopener noreferrer"&gt;step-by-step mini tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Oasis CLI&lt;/strong&gt;&lt;br&gt;
Next, you need the latest version of the Oasis Command Line Interface (CLI). Install it from &lt;a href="https://docs.oasis.io/build/tools/cli/setup" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tokens&lt;/strong&gt;&lt;br&gt;
Lastly, you will need about &lt;strong&gt;150 tokens&lt;/strong&gt; to cover ROFL registration, renting a machine, and paying for the gas fees. &lt;/p&gt;

&lt;p&gt;Now, you can either create a new account or import an existing one. Let's check out both processes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create a new account&lt;/strong&gt; -&amp;gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oasis wallet create my_account &lt;span class="nt"&gt;--file&lt;/span&gt;.algorithm secp256k1-bip44
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Later, you can choose to import this account to Metamask or other Ethereum-compatible tooling, e.g. Hardhat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Import an existing account&lt;/strong&gt; -&amp;gt; &lt;br&gt;
You need to export the &lt;strong&gt;secp256k1&lt;/strong&gt; private key or mnemonic from your existing wallet before running this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oasis wallet import my_account
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: If you are working in a test environment, you can get free testnet tokens from the official &lt;a href="https://faucet.testnet.oasis.io/" rel="noopener noreferrer"&gt;faucet&lt;/a&gt;. &lt;br&gt;
If you are building on the mainnet, you will need to &lt;a href="https://docs.oasis.io/general/manage-tokens/#get-rose" rel="noopener noreferrer"&gt;buy ROSE&lt;/a&gt; tokens.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Initialize&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This is the first step. You start by running &lt;strong&gt;&lt;a href="https://docs.oasis.io/build/tools/cli/rofl#init" rel="noopener noreferrer"&gt;oasis rofl init&lt;/a&gt;&lt;/strong&gt; using &lt;strong&gt;compose.yaml&lt;/strong&gt; inside your app folder. This will generate the ROFL manifest in the form of &lt;strong&gt;rofl.yaml&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oasis rofl init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, based on your requirement, you can change the &lt;strong&gt;memory&lt;/strong&gt;, specify the number of &lt;strong&gt;cpus&lt;/strong&gt;, and the root filesystem &lt;strong&gt;storage&lt;/strong&gt; section that comes under &lt;strong&gt;resources&lt;/strong&gt;.&lt;br&gt;
&lt;strong&gt;rofl.yaml&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;my-app&lt;/span&gt;
&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0.1.0&lt;/span&gt;
&lt;span class="na"&gt;tee&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tdx&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;container&lt;/span&gt;
&lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;memory&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;512&lt;/span&gt; &lt;span class="c1"&gt;# in megabytes&lt;/span&gt;
  &lt;span class="na"&gt;cpus&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
  &lt;span class="na"&gt;storage&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;disk-persistent&lt;/span&gt;
    &lt;span class="na"&gt;size&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;512&lt;/span&gt; &lt;span class="c1"&gt;# in megabytes&lt;/span&gt;
&lt;span class="na"&gt;artifacts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;firmware&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/ovmf.tdx.fd#db47100a7d6a0c1f6983be224137c3f8d7cb09b63bb1c7a5ee7829d8e994a42f&lt;/span&gt;
  &lt;span class="na"&gt;kernel&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/stage1.bin#e5d4d654ca1fa2c388bf64b23fc6e67815893fc7cb8b7cfee253d87963f54973&lt;/span&gt;
  &lt;span class="na"&gt;stage2&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/stage2-podman.tar.bz2#b2ea2a0ca769b6b2d64e3f0c577ee9c08f0bb81a6e33ed5b15b2a7e50ef9a09f&lt;/span&gt;
  &lt;span class="na"&gt;container&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runtime&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://github.com/oasisprotocol/oasis-sdk/releases/download/rofl-containers%2Fv0.8.0/rofl-containers#08eb5bbe5df26af276d9a72e9fd7353b3a90b7d27e1cf33e276a82dfd551eec6&lt;/span&gt;
    &lt;span class="na"&gt;compose&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;compose.yaml&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Create&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The next step is to create a new app on-chain. You can use the &lt;strong&gt;&lt;a href="https://docs.oasis.io/build/tools/cli/rofl#create" rel="noopener noreferrer"&gt;oasis rofl create&lt;/a&gt;&lt;/strong&gt; command for this.&lt;br&gt;
Please note that any newly created app in this process is registered by default on the Sapphire mainnet. If you are using a test environment, you will need to change the setting. So, you will be required to pass &lt;strong&gt;--network testnet&lt;/strong&gt; parameter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oasis rofl create &lt;span class="nt"&gt;--network&lt;/span&gt; testnet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The check whether this transaction was successful is to find your app on the &lt;a href="https://explorer.oasis.io/testnet/sapphire/rofl/app" rel="noopener noreferrer"&gt;Oasis Explorer&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Build&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In this step, we will build the ROFL bundle.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oasis rofl build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command results in the generation of a new .orc file inside your project folder.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Secrets&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This is the step where privacy is enforced. So, if there are environment variables that your app is using, you can store them on-chain privately using the &lt;strong&gt;&lt;a href="https://docs.oasis.io/build/tools/cli/rofl#secret" rel="noopener noreferrer"&gt;oasis rofl secret&lt;/a&gt;&lt;/strong&gt; command. It would look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"my-secret-token"&lt;/span&gt; | oasis rofl secret &lt;span class="nb"&gt;set &lt;/span&gt;TOKEN -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command populates the &lt;strong&gt;TOKEN&lt;/strong&gt; secret. You can now use it in your compose file like this:&lt;br&gt;
&lt;strong&gt;compose.yaml&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;python-telegram-bot&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ghcr.io/oasisprotocol/demo-rofl-tgbot:ollama"&lt;/span&gt;
    &lt;span class="na"&gt;platform&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;linux/amd64&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;TOKEN=${TOKEN}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to submit the secrets and the ROFL bundle information on-chain, you can do so with the &lt;strong&gt;&lt;a href="https://docs.oasis.io/build/tools/cli/rofl#update" rel="noopener noreferrer"&gt;oasis rofl update&lt;/a&gt;&lt;/strong&gt; command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oasis rofl update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Deploy&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This is the final step of the process. Here, you use the &lt;strong&gt;&lt;a href="https://docs.oasis.io/build/tools/cli/rofl#deploy" rel="noopener noreferrer"&gt;oasis rofl deploy&lt;/a&gt;&lt;/strong&gt; command so that your app gets deployed to a ROFL provider.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oasis rofl deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command triggers the bootstrapping of a new machine that fits the required resources provided by Oasis. You can check the status of the machine using the &lt;strong&gt;&lt;a href="https://docs.oasis.io/build/tools/cli/rofl#machine-show" rel="noopener noreferrer"&gt;oasis rofl machine show&lt;/a&gt;&lt;/strong&gt; command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Oasis rofl machine show
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can now also check your application logs to verify how everything works. You will need the &lt;strong&gt;&lt;a href="https://docs.oasis.io/build/tools/cli/rofl#machine-logs" rel="noopener noreferrer"&gt;oasis rofl machine logs&lt;/a&gt;&lt;/strong&gt; command for this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oasis rofl machine logs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Parting words&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you are a developer who likes the hands-on approach, I hope you had a good time trying out this tutorial and successfully deploying your first ROFL-powered app. &lt;br&gt;
You will note that in this guide, I have provided several links to the Oasis documentation instead of elaborating on them. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;containerize your app &lt;/li&gt;
&lt;li&gt;latest Oasis CLI release&lt;/li&gt;
&lt;li&gt;oasis rofl init&lt;/li&gt;
&lt;li&gt;oasis rofl create&lt;/li&gt;
&lt;li&gt;oasis rofl secret&lt;/li&gt;
&lt;li&gt;oasis rofl update&lt;/li&gt;
&lt;li&gt;oasis rofl deploy&lt;/li&gt;
&lt;li&gt;oasis rofl machine show&lt;/li&gt;
&lt;li&gt;oasis rofl machine logs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's because I wanted to focus on the topic here without going into details on these commands, which require separate attention, and I will prepare other tutorials explaining them later on. &lt;/p&gt;

&lt;p&gt;For a quick chat with the Oasis engineering team for help with specific issues, you can drop your comments in the &lt;strong&gt;dev-central channel&lt;/strong&gt; in the official &lt;a href="https://discord.com/invite/BQCxwhT5wS" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>blockchain</category>
      <category>tee</category>
      <category>devex</category>
    </item>
    <item>
      <title>Need Truly Secure Digital Storage? The Answer Is Decentralized Storage + Privacy Layer</title>
      <dc:creator>DC</dc:creator>
      <pubDate>Mon, 20 Apr 2026 10:42:08 +0000</pubDate>
      <link>https://dev.to/dc600/need-truly-secure-digital-storage-the-answer-is-decentralized-storage-privacy-layer-137a</link>
      <guid>https://dev.to/dc600/need-truly-secure-digital-storage-the-answer-is-decentralized-storage-privacy-layer-137a</guid>
      <description>&lt;p&gt;As our digital footprints expand, our data floats around the internet, unsupervised and unprotected. Cloud storage is a practical solution, but it does not focus on data security. Moreover, you no longer truly own your data. This is the pain point that decentralized storage tries to tackle. But privacy is not automatic, even in decentralized systems. An intentional architecture with privacy-by-design is the only answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Defining Decentralized Storage&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Traditional cloud storage uses location addressing. Here, the uploaded files, when they need to be accessed, can be retrieved from specific server URLs. In case of server outage or authorities implementing a takedown, the links stop working, and data becomes inaccessible, maybe lost forever. Now, some context: almost two-thirds of the global cloud infrastructure is currently handled by the Big 3 - AWS, Azure, and Google Cloud.&lt;/p&gt;

&lt;p&gt;This data concentration is what decentralized storage evolved to solve. Here, the content of the files is identified by cryptographic hash generation. This is a unique digital identifier and, being decentralized, there is no dependence on a single server. All nodes in the system will always produce the same content, thereby securing the data and its integrity. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdg4c8atyspkfcwnk5vdf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdg4c8atyspkfcwnk5vdf.png" alt=" " width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Top Decentralized Storage Protocols&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;All the protocols dealing with decentralized solutions have different approaches to digital storage. Let's take a look at the top 5 - IPFS (InterPlanetary File System), Filecoin, Arweave, Storj, and Sia.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxwki7w5wecknfta6i1nw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxwki7w5wecknfta6i1nw.png" alt=" " width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;IPFS&lt;/strong&gt; - This is the earliest solution in the form of peer-to-peer (P2P) protocol. Every uploaded file is broken into blocks, cryptographically hashed, and organized into a &lt;a href="https://docs.ipfs.tech/concepts/merkle-dag/" rel="noopener noreferrer"&gt;Merkle DAG&lt;/a&gt;. These generate a unique Content Identifier (CID) for the file, which can be accessed thanks to any of the 20k+ active peers in the IPFS public network. However, this does not guarantee data perpetuity, as none of the nodes may commit to storing the file over time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Filecoin&lt;/strong&gt; - This tries to solve the problem of persisting data by rewarding the nodes. It adds an economic incentive layer to IPFS. Two cryptographic proofs enhance the system. &lt;strong&gt;Proof-of-Replication&lt;/strong&gt; verifies the storage provider has created a unique physical copy of the data, while &lt;strong&gt;Proof-of-Spacetime&lt;/strong&gt; then continuously audits the provider to verify that they still hold the data over time. Filecoin stores almost 1,110 PiB of data, with clients that include the Smithsonian Institution and the Internet Archive.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Arweave&lt;/strong&gt; - This is the next-level solution. One-time payment funds a storage endowment that pays out to the storage providers gradually over 200 or more years, assuming a declining storage cost of at least 0.5% annually. Here, a "blockweave" structure links each new block to both the previous block and a randomly selected older block, incentivizing historical data storage. Arweave processes over 30 million transactions daily out of approximately 300 million data requests per day.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Storj&lt;/strong&gt; and &lt;strong&gt;Sia&lt;/strong&gt; - These specifically cater to privacy-oriented decentralized solutions. Storj encrypts all data with AES-256-GCM. It is then sharded into 80 pieces and distributed among independent nodes. Any 29 out of 80 pieces coming together retrieves the data. For Sia, the sharding is in 30 pieces, and reconstruction needs only 10 pieces, with on-chain smart contracts enforcing the model, and performance review maintaining host standards. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Centralized Systems Lack Privacy&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Privacy failure is a constant threat in traditional cloud solutions, as the data handled in centralized data centres is huge and unwieldy, making it vulnerable to hackers and ripe for government tracking.&lt;/p&gt;

&lt;p&gt;According to an &lt;a href="https://www.ibm.com/think/insights/cost-of-a-data-breach-2024-financial-industry" rel="noopener noreferrer"&gt;IBM report&lt;/a&gt;, the global average breach cost, especially in cloud environments, is close to the $5 million mark. It slightly improved in the 2025 report, but healthcare continues to remain the top vulnerable sector, and breaches originating in the US alone crossed the $10 million mark.&lt;/p&gt;

&lt;p&gt;Legally authorised surveillance, typically without users' knowledge, combined with the ease with which providers can censor or erase data, makes true ownership an illusion.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;5 Layers of Privacy In Current Decentralized Systems&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Decentralized storage that includes privacy mechanisms offers a solution to the problems posed by centralized systems. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Client-Side Encryption&lt;/strong&gt; - Here, the data is encrypted in the user's device before being uploaded to the network. Storj and Sia do this automatically, but users of IPFS, Filecoin, or Arweave need to do it themselves. Centralized systems like AWS also encrypt data, but they own and hold the keys. Decentralized solutions give the key to the data owner upon encryption, which translates into no key, no data. But it also eliminates data loss through backdoor access. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sharding&lt;/strong&gt; - Here, the information in the encrypted files is split and shared across nodes in multiple locations. Individual hosts can view only the encrypted fragment stored with them. The data owner has sole access to the information, which is reconstructed together with the decryption key and the minimum number of fragments. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Erasure Coding&lt;/strong&gt; - Here, the user data is secured through resilience and redundancy without storing complete copies. So, in the case of the Storj model, 51 nodes (63% of the shards) can go offline simultaneously, and still, data can be retrieved. It is more efficient than three-copy replication without adding to the storage overhead.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Encryption in Transit and at Rest&lt;/strong&gt; - Here, Transport Layer Security (TLS) is used to protect the encrypted data as it moves between user devices and storage hosts. Encryption at rest also enhances data protection, so even if the physical device is stolen, the information remains unreadable. It is often combined with client-side encryption to ensure maximum data security.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Zero-Knowledge Proofs (ZKP)&lt;/strong&gt; - ZKP enables the storage providers to prove data storage without revealing the data itself. For example, Filecoin uses Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge (zk-SNARKs) to cryptographically prove the presence of information without exposing the content.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvjs2nikppe39hv83lye4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvjs2nikppe39hv83lye4.png" alt=" " width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Privacy Gaps That Privacy-Preserving Blockchains Solve&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Decentralized storage without privacy-by-design is not truly secure, despite its advantages. &lt;/p&gt;

&lt;p&gt;For example, &lt;strong&gt;IPFS&lt;/strong&gt;, being the foundational protocol, is most at risk. Anyone who knows a CID can access the associated file. Besides, the CIDs, being deterministic, can be tracked. &lt;br&gt;
Same problem with &lt;strong&gt;Filecoin&lt;/strong&gt;, which also uses the IPFS model. In addition to the risk run by unencrypted files, it is vulnerable to traffic pattern analysis due to publicly available metadata.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arweave's&lt;/strong&gt; perpetual data storage has its own risk - immutability. Unencrypted data is exposed forever; encrypted data is only secure with current encryption standards and is breakable with future advancements in cryptography and quantum computing. &lt;/p&gt;

&lt;p&gt;The answer lies in adding a privacy layer to the decentralized storage concept. &lt;br&gt;
Result: users can enjoy cheap, persistent, censorship-resistant data hosting services, with the privacy layer managing encryption keys and authorization logic, and also providing access control in a confidential environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Oasis&lt;/strong&gt; provides a unique and substantive solution, adding programmable privacy and access control policies to traditional &lt;a href="https://oasis.net/blog/storage-encryption-access-management" rel="noopener noreferrer"&gt;decentralized storage&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Trusted Execution Environments (TEEs) ensure data is encrypted at both input and output states, and any decryption and processing happens only inside the protection of hardware-isolated secure enclaves. So, a confidential smart contract is applied to the storage and runs on Oasis Sapphire. The TEEs hold encryption keys and access policies in a private state. The decryption key is accessible only for authorized users who have been verified inside the enclave. This effectively rules out any interference from node operators, storage providers, or validators. &lt;/p&gt;

&lt;p&gt;The access issue is handled by implementing the Liquefaction primitive. It is a level up from standard access control. Anyone can thus see access being granted or denied, but they will not know why. As a result, it is impossible to game the conditions and manipulate access. &lt;/p&gt;

&lt;p&gt;Oasis is, however, not the only protocol that is working on a privacy-focused infrastructure. &lt;strong&gt;Lit Protocol&lt;/strong&gt; also provides decentralized key management through threshold multi-party computation. &lt;/p&gt;

&lt;p&gt;Here is how plugging the privacy gaps works.&lt;br&gt;
&lt;strong&gt;First&lt;/strong&gt;, implement client-side encryption using keys managed by a privacy layer.&lt;br&gt;
&lt;strong&gt;Next&lt;/strong&gt;, upload the encrypted data to a decentralized storage protocol.&lt;br&gt;
&lt;strong&gt;Then&lt;/strong&gt;, register the CID and key metadata inside a confidential smart contract with clearly defined access policies. &lt;br&gt;
&lt;strong&gt;Finally&lt;/strong&gt;, the result is a system where the privacy layer verifies and authorizes access requests inside a TEE or multi-party computation network.&lt;br&gt;
&lt;strong&gt;Bottom line&lt;/strong&gt;: Data is encrypted, on-chain but confidential, and access is controlled, so no data exposure even if anyone somehow procures the CID, thus mitigating the risk of a single point of failure.   &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Real-World Use Cases&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;NFT metadata&lt;/strong&gt; - One of the first mainstream utilities. Solved broken hosting issues common to centralized servers. Case in point, in 2025, over 12k NFTs were delisted. Now, Solana’s Metaplex framework uses Arweave as the default storage option, benefiting over 10k NFTs. Also, Yuga Labs migrated Bored Ape Yacht Club (BAYC) metadata away from centralized cloud to IPFS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI and data infrastructure&lt;/strong&gt; - The fastest growing segment. Filecoin’s Onchain Cloud launched as an official alternative to AWS for AI workloads. Also, Arweave’s AO hyper-parallel computing layer handles permanent data storage and computation of decentralized AI agents.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Healthcare&lt;/strong&gt; - One of the highest stakes for private digital data storage. Examples include projects like BurstIQ, Medicalchain, and Patientory using IPFS for encrypted patient data storage and blockchains for access and audit purposes. Also, Estonia’s national healthcare system uses blockchain-based infrastructure for record integrity. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Financial data&lt;/strong&gt; - Another high-stakes private digital data storage. Decentralized finance uses confidential computation and encrypted data for better privacy without needing a complete overhaul of existing architecture.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Final Takeaway&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;IPFS, Filecoin, and Arweave are better than traditional cloud systems in terms of censorship resistance, redundancy, and data integrity, and still, they are too public. Client-side encryption and sharding (Storj and Sia), ZKPs (Filecoin), and confidential access control (Oasis and Lit Protocol) provide viable privacy solutions for the future decentralized storage systems. &lt;/p&gt;

&lt;p&gt;Decentralized storage holds the key to secure digital storage of the future. The solution is production-ready, and awareness is the only missing piece of the puzzle. So, next time you go looking for truly secure digital storage, you know which door to knock.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>blockchain</category>
      <category>decentralizedstorage</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Agentic Economy With x402 Gets A Boost From ROFL's Verifiable, Private Compute Layer</title>
      <dc:creator>DC</dc:creator>
      <pubDate>Mon, 23 Mar 2026 06:15:16 +0000</pubDate>
      <link>https://dev.to/dc600/agentic-economy-with-x402-gets-a-boost-from-rofls-verifiable-private-compute-layer-fdf</link>
      <guid>https://dev.to/dc600/agentic-economy-with-x402-gets-a-boost-from-rofls-verifiable-private-compute-layer-fdf</guid>
      <description>&lt;p&gt;Autonomous AI agents can do a lot of things, but for a long time, internet-native payments were out of their purview. So, when I first learned about x402, I was intrigued by the possibilities. But the privacy-first blockchain, Oasis, raises an important question: Is the agentic economy adequately addressing verifiable privacy? &lt;/p&gt;

&lt;p&gt;In this piece, I will explore x402, the value added by ERC-8004 in this context, as the standard for agent discovery, and the role Oasis's expertise in offering verifiable privacy with off-chain compute and on-chain trust can play.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;x402 101&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Let's start with some context. x402 is not a recent discovery related to web3 or AI. It pre-dates even the privacy narrative, going back to those days when the internet (also known as web2 in web3 terminology) was still using "HTTP" rather than "HTTPS". The code 402 simply designated 'payment required'.&lt;/p&gt;

&lt;p&gt;The code was a stepping stone to internet-native payments, heralding a future in which servers could charge per request. But as long as online payment was not viable beyond theoretical discourse, this remained practically unused.&lt;/p&gt;

&lt;p&gt;How does web3 fit in this conversation? The answer lies in what web3 made possible. Stablecoins, sub-second settlement, no chargebacks, and scalable blockchain protocols have become quite the norm. This is when HTTP 402 can evolve into x402. This ensures an open standard, enabling web2's request-response loop and allowing any service to charge for API or content access over HTTP. &lt;br&gt;
Result: zero dependency on traditional accounts, sessions, or credentials. &lt;/p&gt;

&lt;p&gt;It is interesting to note how awareness of x402 emerged in the cryptoAI space. It was triggered as a &lt;strong&gt;&lt;a href="https://oasis.net/blog/erc-8004-trustless-agents" rel="noopener noreferrer"&gt;ERC-8004&lt;/a&gt;&lt;/strong&gt; utility. There is a close correlation between x402 and ERC-8004, enabling autonomous agents to trustlessly discover and transact. I will revisit this later.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;x402 Functionality&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;So, how does x402 work? You start with a human/agent client, a server with the desired resource, and a facilitator (infra for payments). The following steps then unfold.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A request is made to a server, which could be anything, such as an API call or a piece of content&lt;/li&gt;
&lt;li&gt;This resource needs to be paid for&lt;/li&gt;
&lt;li&gt;The server responds with an HTTP 402 code&lt;/li&gt;
&lt;li&gt;The code comes with payment instructions, specifying the token type, the amount, the network, and the destination address&lt;/li&gt;
&lt;li&gt;The client-side wallet reads the 402 response and generates a signature authorizing the payment&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The variation in this process would depend on whether the client is human or an agent.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If human, a pre-programmed policy in the wallet's smart contract can eliminate the need for manual signature steps.&lt;/li&gt;
&lt;li&gt;If an agent, a pre-programmed policy in the wallet's smart contract can ensure that pre-set limits and rules are obeyed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An overview of the process flow (source: &lt;a href="https://docs.cdp.coinbase.com/x402/core-concepts/how-it-works):" rel="noopener noreferrer"&gt;https://docs.cdp.coinbase.com/x402/core-concepts/how-it-works):&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyv2r9aaqdb0w43v6e41q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyv2r9aaqdb0w43v6e41q.png" alt=" " width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Signature uses the &lt;strong&gt;transferWithAuthorization&lt;/strong&gt; function (&lt;a href="https://eips.ethereum.org/EIPS/eip-3009" rel="noopener noreferrer"&gt;EIP-3009&lt;/a&gt;). This means the client doesn't need to manage gas and private keys. This permission transaction, combined with a facilitator, enables seamless client sign-off on the transfer. Since anyone can submit it to the blockchain, the facilitator plays that role here.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The client's signed payment goes back to the server. There are a few steps before trust is established. First, the signature is forwarded to the facilitator's &lt;strong&gt;/verify&lt;/strong&gt; endpoint. Then, the signature's legitimacy is authenticated. Next, the facilitator's &lt;strong&gt;/settle&lt;/strong&gt; endpoint executes payment transfer. Finally, with all these steps complete, the server responds to the client's resource request.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This entire sequence of events occurs within a second or less with x402, ensuring smooth, composable payments. For the client, it is a simple HTTP code; for the agent, it is another API call.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;x402 In Practice&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Universal design -&amp;gt; seamless UI/UX.&lt;/strong&gt; x402 uses HTTP's standard operating procedure (SOP). So, there is no need to add additional tools or software development kits (SDKs) when integrating with existing infrastructure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web2-native.&lt;/strong&gt; Since x402 uses HTTP's SOP, it is also compatible with every major programming language, framework, and hosting platform on the internet. The seamlessness of web2 is thus replicated in web3.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lightning-fast settlements.&lt;/strong&gt; Payment authorization only involves a single request-response and is completed in sub-seconds. The settlement is asynchronous and has instant finality, with the server trusting the facilitator for on-chain execution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Micropayments.&lt;/strong&gt; Pricing granularity and tiny charges are made possible thanks to the zero-fee protocol and extremely low-cost transactions that only comprise of gas fees for the facilitator.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Traditional solutions are closed systems, needing constant customization every time the platforms or API providers change. This is exactly the pain point x402 solves.&lt;br&gt;
Additionally, x402 enables micropayments, which were problematic earlier when everything would be bundled, by default, with subscriptions. &lt;a href="https://blog.cloudflare.com/introducing-pay-per-crawl/" rel="noopener noreferrer"&gt;Live example&lt;/a&gt; of the benefit includes pay-per-crawl APIs, where agents pay nano-payments to scrape content.&lt;/p&gt;

&lt;p&gt;Another crucial advantage of x402 is understood when we consider how this protocol can logically extend its functionality with agents on both sides of the request-response pairing.&lt;br&gt;
All this leads to setting up a new agentic future involving an autonomous agent economy. Consider this: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent 1 queries the data API, then hires Agent 2 to process the output, while paying a compute node to run simulations. &lt;/li&gt;
&lt;li&gt;Zero human intervention needed at any stage of the process.&lt;/li&gt;
&lt;li&gt;No restrictions by traditional payment rails.&lt;/li&gt;
&lt;li&gt;Result: All transactions conditional (payment only when valid response) and composable, running at thousands of fractional payments per minute/hour.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;x402 x ERC-8004 x ROFL&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The potential of x402 grows when integrated with other crypto primitives. &lt;/p&gt;

&lt;p&gt;As I mentioned earlier, x402 and ERC-8004 share a connection. X402 standardizes agentic payment, and ERC-8004 standardizes agentic discovery and introduces the need-for-trust factor. This is a critical factor we need to examine, as the data is exposed no matter what, whenever there is API access or inference.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://x.com/0xtestpilot/status/1981613172369871067" rel="noopener noreferrer"&gt;agentic trust gap&lt;/a&gt; is solvable. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbo76k06kdwkdrhejq8pl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbo76k06kdwkdrhejq8pl.png" alt=" " width="800" height="311"&gt;&lt;/a&gt;&lt;br&gt;
We know that ERC-8004 gives us the agent coordination/discovery layer, involving on-chain registries for identity, reputation, and validation, but it is neutral about establishing trust. The solution comes from the Oasis &lt;a href="https://oasis.net/ai-agents" rel="noopener noreferrer"&gt;ROFL&lt;/a&gt; (runtime off-chain logic) framework for trustless compute, providing data privacy, decentralized key management, and verifiable, tamper-proof execution.&lt;br&gt;
Together, the setup ensures code verification, key isolation, and end-to-end confidentiality.&lt;/p&gt;

&lt;p&gt;As we have seen in this x402 discussion, the facilitators play an important role. ROFL offers the opportunity to move away from highly centralized and opaque facilitators to a decentralized trustless TEE cloud for running the x402 facilitator. This can ensure that the payment layer is decentralized and verifiable even as the entire stack operates without extra, unnecessary trust assumptions.&lt;/p&gt;

&lt;p&gt;Check out this &lt;a href="https://x.com/peterus/status/1998369513444646923" rel="noopener noreferrer"&gt;example of a live public testnet deployment&lt;/a&gt; of a trustless and verifiable facilitator. There is also a sample implementation including a &lt;a href="https://github.com/oasisprotocol/rofl-x402-service" rel="noopener noreferrer"&gt;document summarization service&lt;/a&gt; that runs Ollama inference inside an ROFL container. And then there is a demo using multiple LLM models with &lt;a href="https://github.com/ptrus/verisage.xyz" rel="noopener noreferrer"&gt;cross-validation for oracle consensus&lt;/a&gt;. All of these being open-source, anyone can replicate or tweak for further developments.&lt;/p&gt;

&lt;p&gt;So, what is the final takeaway? x402, ERC-8004, and Oasis ROFL each solve a distinct layer of the agentic stack. Together, they make a trustless, private, composable agent economy not just conceivable but ready to be developed.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>http</category>
      <category>web3</category>
      <category>privacy</category>
    </item>
    <item>
      <title>The Flashback Labs Case Study On Privacy-first AI Training</title>
      <dc:creator>DC</dc:creator>
      <pubDate>Fri, 20 Mar 2026 07:27:08 +0000</pubDate>
      <link>https://dev.to/dc600/the-flashback-labs-case-study-on-privacy-first-ai-training-2gbm</link>
      <guid>https://dev.to/dc600/the-flashback-labs-case-study-on-privacy-first-ai-training-2gbm</guid>
      <description>&lt;p&gt;Our interactions with AI and our shared experiences are growing exponentially. We know AI needs extensive training for all this, but how much thought or effort is put into ensuring data privacy? &lt;/p&gt;

&lt;p&gt;Oasis, as a privacy-first blockchain, has taken essential steps in bringing confidentiality to decentralized AI (DeAI). So, no wonder that Flashback Labs &lt;a href="https://oasis.net/blog/flashback-privacy-first-ai-training" rel="noopener noreferrer"&gt;adopted&lt;/a&gt; the game-changing technology of runtime off-chain logic (&lt;a href="https://www.youtube.com/watch?v=JFYnEyMFgRE" rel="noopener noreferrer"&gt;ROFL&lt;/a&gt;) to integrate verifiable privacy into their AI training setup. The result of that collaboration is the basis of this case study.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Decoding Flashback&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Flashback Labs helps train AI to understand people through lived human experiences. On their platform, a conversational AI app, people can interact with the AI to talk about their lives and preserve memories.&lt;/p&gt;

&lt;p&gt;How this works is: say you type in a prompt with a personal piece of conversation, or run a stream-of-consciousness with a voice assistant. The chatbot, like any other conversational AI model, will pick up the cue and ask follow-up personal questions. The data that flows as a result is structured around you personally - places, emotions, and timelines.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwhzlszow1s6fq2oq2ix4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwhzlszow1s6fq2oq2ix4.png" alt=" " width="800" height="181"&gt;&lt;/a&gt;&lt;br&gt;
The Flashback app can then generate a short animated video from your inputs, using photos, text, and voice narration like a call-back memory. As you go through multiple sessions, a sort of graph forms in the AI database, and the more you use it, the more enriching your personal experience becomes. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Flashback x Oasis&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Flashback's platform deals with extremely sensitive information, from personal memories to relationships, even health-related or finance-related conversations, as a personalized experience is directly dependent on personal shares with the app. It is, therefore, critical that there is implicit trust.&lt;/p&gt;

&lt;p&gt;Opaque systems or even fully transparent decentralized solutions are ill-equipped to handle this. &lt;br&gt;
Oasis enters the equation here by becoming the encryption layer and plugging the trust gaps. &lt;/p&gt;

&lt;p&gt;The result is both elegant and crucial. Now, all the inputs ever made into the platform - photos, videos, stories, etc, are wallet-owned, processed and secured by &lt;a href="https://oasis.net/blog/verifiable-ai-with-tees" rel="noopener noreferrer"&gt;TEEs&lt;/a&gt; (trusted execution environments), and stored on-chain after being consented to by the user.&lt;/p&gt;

&lt;p&gt;Now, let's look at the AI training aspect. It entails dealing with massive datasets and processing them. Flashback uses 0G, BNB Greenfield as storage networks, but they do not offer data privacy. Oasis provides the ideal confidentiality solution to encrypt the data files before storing them. Users can verify on-chain that their encrypted data is safe and secure. &lt;br&gt;
Interestingly, Oasis has also been developing a dedicated solution for privacy-enabled &lt;a href="https://oasis.net/blog/storage-encryption-access-management" rel="noopener noreferrer"&gt;decentralized storage&lt;/a&gt; with programmable access control, which the ecosystem urgently needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Scaling Progress&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Flashback Labs has focused little on marketing hype or gimmick. Still, their initiative has struck a chord and fuelled a wide response and active participation. Some of the key milestones achieved include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;more than 1k users with close to 1k early contributions&lt;/li&gt;
&lt;li&gt;3k+ on-chain, encrypted files at the rate of almost 200 per day&lt;/li&gt;
&lt;li&gt;almost 10k on-chain transactions generated at the rate of almost 700 per day&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The metrics, growing as more users come in, tell a clear story - private AI is getting scaled.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Flash Forward: What Future Promises&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The case study of Flashback Labs and its success is a huge step forward for DeAI, as its target is the mainstream audience, and its use cases are not part of traditional crypto utility. &lt;/p&gt;

&lt;p&gt;At the moment, as &lt;a href="https://www.flashbacklabs.com/" rel="noopener noreferrer"&gt;Flashback&lt;/a&gt; goes through its roadmap for 2026, the team has multiple products underway. One is related to Alzheimer's care, while another is a product developed in collaboration with notable bereavement non-profits in the US to help people cope with the process of loss of a family member.&lt;/p&gt;

&lt;p&gt;There are also plans to develop an agentic framework that empowers Flashback's AI rendering to proactively reach out to users for memory collection and preservation. Hardware integration, like in robotic companion devices, to assist in hospice and elder care settings, is another promising development. &lt;/p&gt;

&lt;p&gt;The bottom line: personalized AI is going to be more and more an integral part of our memorable experiences, and the data confidentiality that this undertaking must assure is non-negotiable, both during training and in storing the processed data. And, Oasis is the industry expert for this solution - verifiable privacy. &lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>web3</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Do You Vibe Code? A DeAI Primer By Oasis</title>
      <dc:creator>DC</dc:creator>
      <pubDate>Wed, 18 Mar 2026 07:40:56 +0000</pubDate>
      <link>https://dev.to/dc600/do-you-vibe-code-a-deai-primer-by-oasis-3h8j</link>
      <guid>https://dev.to/dc600/do-you-vibe-code-a-deai-primer-by-oasis-3h8j</guid>
      <description>&lt;p&gt;AI integration is moving fast, and the accessibility to develop AI is becoming easier by the day. The &lt;a href="https://oasis.net/blog/oasis-building-blocks-decentralized-ai" rel="noopener noreferrer"&gt;decentralized AI (DeAI)&lt;/a&gt; space has also picked up momentum as the new-gen web3 solutions all come with an AI edge. So, if you are a web3 developer, it is no longer imperative that you be a Solidity expert or know the ins and outs of building on-chain applications. Vibe coding is your friend.&lt;/p&gt;

&lt;p&gt;In this guide, I will show you new tools and help you learn how to build with AI on Oasis, with privacy by default. We will be using an &lt;strong&gt;llms.txt&lt;/strong&gt; file, a &lt;strong&gt;Context7&lt;/strong&gt; MCP integration, for the purpose of this tutorial.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;AI context&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;AI is prone to forgetting, and its way of remembering needs some understanding. To understand AI memory and context, check out this &lt;a href="https://oasisrose.garden/lessons/ai-memory/" rel="noopener noreferrer"&gt;Oasis Academy course&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Suffice it to say, large language models (LLMs) need context to respond to any prompts, especially when you are asking them to build something. So, patchy memory or outdated context might result in a code that looks correct on a quick review but fails in practice. There are two possible solutions so that the AI tool can directly access Oasis docs to correctly consult instead of hallucinating, and I will outline them both.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;llms.txt&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model context protocol (MCP)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;llms.txt&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;For anyone familiar with AI, this is a standardized file format. It functions like a sitemap and is specifically designed for AI so that it can access a project's documentation as a structured index. It provides a brief description of the documentation and links to detailed markdown files for the AI to find and read.&lt;/p&gt;

&lt;p&gt;For our purpose, we will be referring to these files:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://docs.oasis.io/llms.txt" rel="noopener noreferrer"&gt;https://docs.oasis.io/llms.txt&lt;/a&gt; — a curated index with page titles, descriptions, and URLs&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.oasis.io/llms-full.txt" rel="noopener noreferrer"&gt;https://docs.oasis.io/llms-full.txt&lt;/a&gt; — the complete documentation content consolidated in one file&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the AI supports project context, such as Cursor's docs feature or a &lt;strong&gt;CLAUDE.md&lt;/strong&gt; file, good. Alternatively, copy-pasting the URLs in the LLM chat directly works too.&lt;/p&gt;

&lt;p&gt;The usefulness of having two versions is dictated by AI memory and context limits. &lt;strong&gt;llms.txt&lt;/strong&gt; is designed for a quick overview, and &lt;strong&gt;llms-full.txt&lt;/strong&gt; is when you need the AI to know everything, unabridged.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;MCP&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;MCP is an open standard. If you don't use MCP, then AI will only read the prompt submitted at face value. Using MCP not only gives AI structured access to all external context - documentation, codebases, tools, and runtime information- but also enables the AI to refer to them on demand and query external tools if and when needed.&lt;/p&gt;

&lt;p&gt;As mentioned earlier, Oasis documentation is indexed on &lt;strong&gt;Context7&lt;/strong&gt;, an MCP server that serves docs to AI coding assistants. The library ID is &lt;strong&gt;llmstxt/oasis_io_llms_txt&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Setting Up&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I will show here Cursor and Claude as primary tools, as they are the most popular among vibe coders.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using Cursor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first step is to add the following snippet to your .cursor/mcp.json:&lt;br&gt;
json&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"context7"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.context7.com/mcp"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will prompt Cursor to connect to Context7. So, now when you generate code, you will have full access to the Oasis documentation. &lt;br&gt;
&lt;strong&gt;Pro tip&lt;/strong&gt;: It is advisable to add a rule to your Cursor settings so that the AI always consults the Oasis docs. It can be phrased like this - Always use Context7 MCP with library ID &lt;strong&gt;llmstxt/oasis_io_llms_txt&lt;/strong&gt; for Oasis documentation reference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using Claude&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Run:&lt;br&gt;
bash&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http context7 https://mcp.context7.com/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The next step is to verify configuration is correctly done:&lt;br&gt;
bash&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you see context7 listed, you are good to go.&lt;br&gt;
&lt;strong&gt;Pro tip&lt;/strong&gt;: The same rule applies for your project's &lt;strong&gt;CLAUDE.md&lt;/strong&gt; - Always use &lt;strong&gt;Context7&lt;/strong&gt; MCP with library ID &lt;strong&gt;llmstxt/oasis_io_llms_txt&lt;/strong&gt; for Oasis documentation reference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Other AI tools&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Even though Cursor and Claude are popular choices, you may be using other AI tools such as VS Code, JetBrains, Windsurf, Zed, etc. &lt;strong&gt;Context7&lt;/strong&gt; supports 40+ clients, and you can refer to the &lt;a href="https://context7.com/docs/resources/all-clients" rel="noopener noreferrer"&gt;&lt;strong&gt;full list here&lt;/strong&gt;&lt;/a&gt; to check the setup instructions specific to your tool of choice.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Before We Start&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If you are set up, there are still a few things you will need before starting to vibe code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Node.js&lt;/strong&gt;: This is required for Hardhat. You can check if your terminal has it installed by &lt;strong&gt;running node -v&lt;/strong&gt;. It will show a version number, if it is already available. If not, download the LTS version from &lt;a href="https://nodejs.org/en" rel="noopener noreferrer"&gt;https://nodejs.org/en&lt;/a&gt;, install it, then reopen your terminal and recheck to confirm successful installation. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Wallet&lt;/strong&gt;: Since we are working with DeAI, you will need a &lt;a href="https://docs.oasis.io/general/manage-tokens/#the-wallets" rel="noopener noreferrer"&gt;wallet&lt;/a&gt; with its private key. &lt;br&gt;
If using CLI, refer to this: &lt;a href="https://docs.oasis.io/build/tools/cli/wallet" rel="noopener noreferrer"&gt;https://docs.oasis.io/build/tools/cli/wallet&lt;/a&gt;. The best approach is to create a new &lt;a href="https://metamask.io/download/" rel="noopener noreferrer"&gt;MetaMask&lt;/a&gt; wallet. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Testnet tokens&lt;/strong&gt;: You will need testnet tokens, too, in the wallet to proceed with your vibe coding. First, you need to add the Sapphire testnet to your &lt;a href="https://docs.oasis.io/general/manage-tokens/#metamask" rel="noopener noreferrer"&gt;MetaMask wallet&lt;/a&gt;. You can then request free TEST tokens from &lt;a href="https://faucet.testnet.oasis.io/" rel="noopener noreferrer"&gt;https://faucet.testnet.oasis.io/&lt;/a&gt;. Remember to select &lt;strong&gt;Sapphire&lt;/strong&gt; from the network dropdown and provide the wallet address created above.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Example: Deploying a Confidential Smart Contract&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I will use a basic example here to demonstrate how this will all work. Once you have connected your Integrated Development Environment (IDE) with the Oasis MCP, start a fresh project. Let's use this prompt:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Create a confidential smart contract on Sapphire with Hardhat. It should store a secret message that only the owner can set. Anyone can submit a guess, but the actual secret should never be visible on-chain.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Your chosen AI tool will immediately pull the documentation and perform the following steps seamlessly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identify the correct Hardhat config.&lt;/li&gt;
&lt;li&gt;Infer that the contract state on Sapphire is private by default.&lt;/li&gt;
&lt;li&gt;Generate a working contract with a full project structure, including a deploy script, interaction examples, and tests. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that Claude will ask for permission before running commands. So, you might want to select "don't ask again" if you prefer. &lt;br&gt;
There will also be a &lt;strong&gt;.env.example&lt;/strong&gt; file generated in the process. You need to copy it to &lt;strong&gt;.env&lt;/strong&gt; and add your wallet's private key.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For those developers who are new to the decentralized setup, the private key can be found on your MetaMask wallet account with these steps: click the three dots next to the account name → account details → reveal private keys → enter password. &lt;br&gt;
This private key will have to be added to the &lt;strong&gt;.env&lt;/strong&gt; file as &lt;strong&gt;PRIVATE_KEY=0x...&lt;/strong&gt;, and then deployed:&lt;br&gt;
bash&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run deploy:testnet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you see a contract address returned in your terminal, it confirms the successful deployment of a confidential smart contract live on the testnet, using just the prompt mentioned at the start of this segment.&lt;/p&gt;

&lt;p&gt;You can further test the confidentiality of the contract when you try calling &lt;strong&gt;eth_getStorageAt&lt;/strong&gt; on your contract at &lt;a href="https://explorer.oasis.io/testnet/sapphire" rel="noopener noreferrer"&gt;Oasis Explorer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As Oasis enables verifiable privacy and confidential computation, this is the gateway to developing private applications. You can start exploring the possibilities at &lt;a href="https://oasis.net/" rel="noopener noreferrer"&gt;https://oasis.net/&lt;/a&gt; and start vibe coding to build the next-gen dApps. With your AI coding tool connected to the docs, it will be the model doing all the work.&lt;/p&gt;

&lt;p&gt;Sources referred: &lt;a href="https://docs.oasis.io/build/tools/llms/" rel="noopener noreferrer"&gt;https://docs.oasis.io/build/tools/llms/&lt;/a&gt;&lt;br&gt;
Help needed? Ask the dev team: &lt;a href="https://oasis.io/discord" rel="noopener noreferrer"&gt;https://oasis.io/discord&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>ai</category>
      <category>web3</category>
      <category>privacy</category>
    </item>
    <item>
      <title>AI Has a Memory Problem. Decentralization and Privacy Might Have a Solution. Part 3</title>
      <dc:creator>DC</dc:creator>
      <pubDate>Mon, 23 Feb 2026 11:26:51 +0000</pubDate>
      <link>https://dev.to/dc600/ai-has-a-memory-problem-decentralization-and-privacy-might-have-a-solution-part-3-2288</link>
      <guid>https://dev.to/dc600/ai-has-a-memory-problem-decentralization-and-privacy-might-have-a-solution-part-3-2288</guid>
      <description>&lt;p&gt;In the &lt;a href="https://dev.to/dc600/ai-has-a-memory-problem-decentralization-and-privacy-might-have-a-solution-part-1-14ib"&gt;first part&lt;/a&gt; of this 3-part series, I covered AI memory and its classification, while in the &lt;a href="https://dev.to/dc600/ai-has-a-memory-problem-decentralization-and-privacy-might-have-a-solution-part-2-3kpk"&gt;second part&lt;/a&gt;, I discussed in detail the types of AI memory and security risks associated with the architectures.&lt;br&gt;
Here, I will refer to Oasis technology for a potential solution to AI memory pain points through the decentralization and privacy approach. I will also talk about some working use cases for portable AI memory.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Zero-Trust and DeAI Solutions&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;There are two distinct pain points of the AI memory architectures: security threats, and data silos and redundancy.&lt;/p&gt;

&lt;p&gt;As a believer in decentralized AI (DeAI), I think the solution to attack risks is best addressed by security-first architectures that adopt a Zero-Trust model. &lt;br&gt;
How does this work? Basically, all data is monitored at the ingestion stage, and any sensitive information is identified and redacted before it moves to the vector storage phase. &lt;strong&gt;Role-Based Access Control&lt;/strong&gt; (RBAC) and &lt;strong&gt;Attribute-Based Access Control&lt;/strong&gt; (ABAC) are enforced at the retrieval layer. Result: the system only considers document subsets that the specific user is authorized to see.&lt;/p&gt;

&lt;p&gt;Now, what about the other pain point - information silos and redundant work? Simple answer: it is preventable. Let's understand how, with reference to the multi-agent collaboration we discussed regarding stateful memory loops. &lt;br&gt;
DeAI ensures a shared workspace allowing different agents (for example, an Architecture Agent and an Implementation Agent) to work in tandem, querying and updating the same memory instance. This is also the seed for AI context flow, where data silos do not result in context loss.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Role of Confidential Computing and Oasis Tech&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A serious bottleneck in ensuring secure AI memory is protecting the data being computed. Traditional encryption can handle data at rest and in transit. But what about the information that is decrypted during the actual retrieval and inference processes?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hardware-Backed Privacy via TEEs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Confidential Computing is the answer to this security gap, utilizing hardware-backed Trusted Execution Environments (TEEs). The secure enclaves isolate memory as the content is made cryptographically inaccessible to any unauthorized access, even by the infrastructure operators. For the AI systems, the prompts and embeddings are only decrypted inside the enclave's black box. As a result, the vector searches and inference building can occur smoothly without exposing any raw data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftxdvalr5q9qlvfeorgy6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftxdvalr5q9qlvfeorgy6.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The reason to use Oasis technology as a reference to a potential solution for secure AI memory is how it combines and optimizes on-chain and off-chain components - the first production-ready confidential Ethereum Virtual Machine (EVM), &lt;strong&gt;&lt;a href="https://oasis.net/sapphire" rel="noopener noreferrer"&gt;Sapphire&lt;/a&gt;&lt;/strong&gt;, and the Runtime Off-chain Logic (&lt;strong&gt;&lt;a href="https://oasis.net/decentralized-ai" rel="noopener noreferrer"&gt;ROFL&lt;/a&gt;&lt;/strong&gt;) framework. By utilizing hardware isolation (Intel SGX/TDX), it is ensured that transaction inputs, return values, or the internal state of the smart contract remain confidential at all times.&lt;/p&gt;

&lt;p&gt;For complex AI memory systems requiring computation-heavy processing, Oasis utilizes the ROFL framework instead of wholesale on-chain logic. So, model training and inference can be done securely off-chain while verifiable settlement can happen on-chain. This combination is the foundation for trustless AI agents that can manage private keys and sensitive user context within a secure enclave. The personal information and sensitive data consequently become a portable, secure asset.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Industry-Specific Implementations of AI Memory&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;What AI memory architectures need vary across regulated industries needing dynamic blueprints for solutions. Let's talk about healthcare and finance as the two most highly impacted areas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Healthcare&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here, AI systems must adhere to strict standards like the Health Insurance Portability and Accountability Act (HIPAA) and Health Information Trust Alliance (HITRUST) to protect electronic Protected Health Information (ePHI). Such a memory architecture must include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Retention Architectures&lt;/strong&gt;: Data is isolated and cannot be reused for any other training purpose. A volatile memory approach is ideal where data is processed in-memory and immediately discarded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FHIR-First Data Foundations&lt;/strong&gt;:The Fast Healthcare Interoperability Resources (FHIR) standard helps create a standardized operational data layer. This eliminates schema chaos and enables AI assistants to retrieve clinical facts using a shared, consistent language. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auditability and Explainability&lt;/strong&gt;: Verifiable audit trails for agentic workflows ensure that we know which medical databases were accessed and why. This is critical for regulatory compliance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Finance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here, there needs to be a fine balance between collaborative analytics and exposure to private and proprietary data through transparency. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Secure Multi-Party Computation (SMPC)&lt;/strong&gt;: An example would be where multiple banks are analysing transaction data for fraud detection, but no single institution can access another’s private customer records.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Homomorphic Encryption&lt;/strong&gt;: Financial institutions use this to perform computations directly on encrypted data, ensuring that sensitive financial parameters are never exposed during processing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Working Use Cases&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are already a few companies that are working on solutions for AI memory problems and tackling how to implement portable memory systems.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://plurality.network/" rel="noopener noreferrer"&gt;&lt;strong&gt;Plurality&lt;/strong&gt;&lt;/a&gt; is developing the Open Context Layer. It allows users to autonomously store their data and chats in specific memory buckets for better context management, and also for sharing.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.memsync.ai/" rel="noopener noreferrer"&gt;&lt;strong&gt;MemSync&lt;/strong&gt;&lt;/a&gt; is building the Unified Memory Layer. It allows users to create a persistent “digital twin” based on personalized conversation and knowledge. This enables the AI system to know the user, track their evolving ideas, and serve as a private sounding board for reflection and decision-making.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ekailabs.xyz/" rel="noopener noreferrer"&gt;&lt;strong&gt;Ekai&lt;/strong&gt;&lt;/a&gt; is offering a developer-focused solution. It allows users to switch among various AI models via smart model routing without context loss.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Final Takeaway&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The future of AI memory? A &lt;strong&gt;portable context model&lt;/strong&gt;. This means that you, as a user, are not obligated to commit to a single model or AI assistant, or have your digital history trapped in large platforms like OpenAI or Anthropic. When you move and switch as you need and choose, the memory travels with you, encrypted and under control, working like a neutral, interoperable memory layer.&lt;/p&gt;

&lt;p&gt;Realizing this vision requires a fundamental reimagining of memory as infrastructure. We can combine stateful memory loops, DeAI, and confidential computing technologies like Oasis ROFL and Sapphire to build AI systems that are smarter and personalized while also being fundamentally secure and user-owned. &lt;strong&gt;Result: Private, portable AI memory that is a sovereign asset, free from data privacy liability.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources referred:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://oasisrose.garden/lessons/ai-memory/" rel="noopener noreferrer"&gt;Oasis Academy course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.forbes.com/sites/digital-assets/2025/12/12/why-crypto-needs-portable-ai-memory/" rel="noopener noreferrer"&gt;Forbes article by Marko Stokić&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>machinelearning</category>
      <category>ai</category>
      <category>web3</category>
      <category>privacy</category>
    </item>
    <item>
      <title>AI Has a Memory Problem. Decentralization and Privacy Might Have a Solution. Part 2</title>
      <dc:creator>DC</dc:creator>
      <pubDate>Mon, 23 Feb 2026 09:11:35 +0000</pubDate>
      <link>https://dev.to/dc600/ai-has-a-memory-problem-decentralization-and-privacy-might-have-a-solution-part-2-3kpk</link>
      <guid>https://dev.to/dc600/ai-has-a-memory-problem-decentralization-and-privacy-might-have-a-solution-part-2-3kpk</guid>
      <description>&lt;p&gt;In the &lt;a href="https://dev.to/dc600/ai-has-a-memory-problem-decentralization-and-privacy-might-have-a-solution-part-1-14ib"&gt;first part&lt;/a&gt; of this 3-part series, I covered AI memory and its classification. &lt;br&gt;
Here, I will start with a deep dive into the types of AI memory, and then discuss the pain points in AI memory architectures.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;A Deep Dive Into AI Memory Classification&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;As I mentioned in the first part, how human and AI memory work is different. The broad classification of short-term and long-term AI memory requires further analysis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Short-Term Memory: Managing Ephemeral Context&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This spans a single conversation session. The memory is preserved temporarily across a few prompts and responses. The context window, thus, encompasses the whole chat in the session, utilizing sliding windows or token-based buffers.&lt;/p&gt;

&lt;p&gt;Short-term memory can be hence defined as the system’s ability to maintain continuity within a specific session or task. Working memory is a subset of short-term memory. While working memory only deals with tokens being processed immediately, short-term memory can strategically manage continuity to a certain extent as the conversation grows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implementation Strategies&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's start by understanding why short-term memory fails. Simply because it outgrows the context window and hence cannot remember beyond the model's token limit. To counter this, the system can delete and overwrite earlier information or, because it is full, fail to add new information, leading to memory failure and possible hallucination.&lt;br&gt;
There are three techniques to manage this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Conversation Buffers&lt;/strong&gt;: These maintain a list of recent messages. There are two types of buffers - &lt;strong&gt;full&lt;/strong&gt;, which remembers everything, and &lt;strong&gt;windowed&lt;/strong&gt;, which retains the last few turns, ensuring the model works within its limits and the earlier context is not totally lost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Summarization&lt;/strong&gt;: This technique compresses the conversation history into a concise summary of essential facts by forgetting redundant details. While this can extend the session limits, nuances from earlier context might get filtered out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token Budgeting&lt;/strong&gt;: This optimization technique is a variation of summarization where only the system prompt and the latest five turns are preserved, pruning the rest. Research suggests this middle data is often ignored by models anyway, and hence discarding that portion of the context is an acceptable approach.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Key-Value (KV) cache plays a vital role in short-term memory. It preserves the exact attention patterns of recent turns and can sometimes perform better than standard Retrieval-Augmented Generation (RAG). There is, however, a trade-off between speed and memory capacity. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Long-Term Memory: Shift to Persistent and Adaptive Knowledge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This spans multiple conversation sessions. The memory is preserved for longer periods, resulting in better context. External databases (vector databases, key-value stores) help to refer to persistent data outside the model.&lt;/p&gt;

&lt;p&gt;Long-term memory can be hence defined as the system’s ability to maintain continuity across sessions and days, sometimes even weeks, months, or years. It builds relationships rather than transactions, as external databases synchronize with the model’s built-in knowledge, and RAG is the single-most critical technology to achieve this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RAG Pipeline and Role of Vector Databases&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A typical RAG architecture computes information only one-way. Documents are converted into high-dimensional vector embeddings and stored in a vector database. The advantage of the RAG system is that the data is organized based on semantic meaning instead of literal matches.&lt;/p&gt;

&lt;p&gt;So, when a user submits a prompt, the system embeds the query and retrieves a chunk of data that is most similar. This information is pulled into the context window, and the AI can generate answers based on private, proprietary, or real-time data, not necessarily part of its original training. Research suggests this can cut down factual errors and increase efficiency. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjwtaynl2zn3zsf80d3c1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjwtaynl2zn3zsf80d3c1.png" alt=" " width="800" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From Stateless RAG to Stateful Memory Loops&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An essential point to note here, if it has not been apparent, is that RAG is fundamentally stateless. What does this mean? It means that every query is independent, and its significance lies in the fact that the system does not learn anything from interacting with the user. The next logical step is, therefore, moving towards stateful AI memory architectures that can operate as a continuous loop of learning.&lt;/p&gt;

&lt;p&gt;There are 4 critical components of a truly stateful memory system.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Extraction&lt;/strong&gt;: First, the LLM evaluates user interactions to identify and filter salient facts or user preferences.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Synthesis and Learning&lt;/strong&gt;: Next, synchronization between new information and existing knowledge takes place. The system determines whether new information is a new addition entirely or an overwriting of older, redundant data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conflict Resolution&lt;/strong&gt;: Next, any contradiction arising from the new data addition is resolved by the intelligent agentic system so that consistency and continuity are maintained.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consolidation&lt;/strong&gt;: Finally, all knowledge deemed as significant is moved from the short-term context to a long-term Memory Graph or relational store.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It stands to reason that such a stateful loop needs multi-agent collaboration. &lt;/p&gt;

&lt;p&gt;Since we are discussing the various types of AI memory, there is another that deserves mention - &lt;strong&gt;User Profile Memory&lt;/strong&gt;. It is usually a subset of the long-term memory with particular emphasis on the user and their preferred language, time zone, conversational and response style, etc. These structured user profiles are stored in databases and injected into prompts, giving the appearance of personalized conversations.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Security and Privacy Risks in AI Memory Architectures&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmrlheidn68hu0og97ayw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmrlheidn68hu0og97ayw.png" alt=" " width="800" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AI memory is built over time, processing through huge and complex datasets that can encompass critical and sensitive information. As vector databases and RAG pipelines become live memory, there is an inevitable vulnerability to severe, crippling security threats.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Leakage and Unauthorized Access&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is related to the exposure of Personal Identifiable Information (PII) or proprietary content. RAG systems pull context from a vast range of documents and sources. All the data needs to be properly cleaned, classified, and scoped so that the AI models do not reveal sensitive facts by mistake. This type of context leakage is common when prompts by one user retrieve another user’s private embeddings due to misconfigured access controls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Embedding Inversion and Data Poisoning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Embedding Inversion&lt;/strong&gt; occurs when embeddings in the vectors, which are essentially high-dimensional semantic relationships, are inverted, leading to the reconstruction of the original source text, compromising anonymity. &lt;br&gt;
&lt;strong&gt;Data Poisoning&lt;/strong&gt; occurs when malicious actors inject false or adversarial data through subliminal texts hidden in documents into a knowledge base accessed by the model, leading to erroneous or harmful responses.&lt;/p&gt;

&lt;p&gt;In the &lt;a href="https://dev.to/dc600/ai-has-a-memory-problem-decentralization-and-privacy-might-have-a-solution-part-3-2288"&gt;concluding part&lt;/a&gt; of the series, I will discuss a potential solution in decentralized and privacy-first AI, along with a mention of working use cases of portable AI memory.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>ai</category>
      <category>web3</category>
      <category>privacy</category>
    </item>
  </channel>
</rss>
