{"title":"मल्टी-टैनेंसी और आइसोलेशन","slug":"multi-tenancy","category":"concepts","summary":"Synapse उपयोगकर्ताओं और minds के बीच डेटा को कैसे अलग करता है — सुरक्षा सीमाओं की व्याख्या।","audience":["human","llm"],"tags":["concept","multi-tenancy","security","isolation"],"difficulty":"intermediate","updated":"2026-06-27","word_count":640,"read_minutes":3,"lang":"hi","translated":true,"requested_lang":"hi","content_markdown":"\n# मल्टी-टैनेंसी और आइसोलेशन\n\nSynapse मल्टी-टैनेंट है: कई उपयोगकर्ता, प्रत्येक के पास कई minds, जो एक-दूसरे से पूरी तरह अलग हैं। यह पृष्ठ आइसोलेशन मॉडल की व्याख्या करता है।\n\n## टैनेंट पदानुक्रम\n\n```\nSynapse Instance\n  │\n  ├── User Account 1 (email: alice@example.com)\n  │   ├── Mind A (Mind Key mk_aaa...)\n  │   │   ├── Memories (only accessible via mk_aaa...)\n  │   │   ├── Tasks\n  │   │   └── Chat\n  │   └── Mind B (Mind Key mk_bbb...)\n  │       └── ... (isolated from Mind A)\n  │\n  ├── User Account 2 (email: bob@example.com)\n  │   └── Mind C (Mind Key mk_ccc...)\n  │       └── ... (isolated from Alice's minds)\n  │\n  └── ... (more users)\n```\n\n## आइसोलेशन स्तर\n\n### स्तर 1: उपयोगकर्ता आइसोलेशन\n\nप्रत्येक उपयोगकर्ता खाता अलग है। Alice नहीं कर सकती:\n\n- Bob के minds देख सकती है\n- Bob की मेमोरीज़ एक्सेस कर सकती है (अपने JWT के साथ भी)\n- Bob की खाता जानकारी सूचीबद्ध कर सकती है\n\nलागू द्वारा: सभी तालिकाओं पर `user_id` कॉलम, JWT में `user_id` शामिल, सभी क्वेरीज़ `user_id` द्वारा फ़िल्टर करती हैं।\n\n### स्तर 2: Mind आइसोलेशन\n\nकिसी उपयोगकर्ता के भीतर, प्रत्येक mind अलग है। Mind A नहीं कर सकता:\n\n- Mind B की मेमोरीज़ देख सकता है\n- Mind B के कार्य, चैट, स्क्रिप्ट्स एक्सेस कर सकता है\n\nलागू द्वारा: सभी डेटा तालिकाओं पर `mind_id` कॉलम, Mind Key में `mind_id` शामिल, सभी क्वेरीज़ `mind_id` द्वारा फ़िल्टर करती हैं।\n\n> [!CRITICAL]\n> Mind Key आइसोलेशन प्राथमिक सुरक्षा सीमा है। लीक हुई Mind Key उस mind के डेटा तक पूर्ण पहुँच प्रदान करती है — लेकिन केवल उसी mind तक।\n\n## प्रमाणीकरण टोकन\n\n| टोकन | दायरा | क्या एक्सेस कर सकता है |\n|-------|-------|-------------------|\n| Mind Key | एकल mind | केवल उस mind का डेटा |\n| JWT | उपयोगकर्ता खाता | खाता प्रबंधन (minds बनाएँ/सूचीबद्ध करें/हटाएँ) |\n| Computer Token | एकल कंप्यूटर | उस कंप्यूटर के कमांड्स |\n\n## क्रॉस-Mind एक्सेस\n\n### उसी उपयोगकर्ता के भीतर\n\nउपयोगकर्ता JWT के माध्यम से अपने सभी minds एक्सेस कर सकता है (जैसे `GET /minds` सभी को सूचीबद्ध करता है)।\nलेकिन मेमोरी डेटा पढ़ने/लिखने के लिए, उन्हें विशिष्ट Mind Key की आवश्यकता है।\n\n### उपयोगकर्ताओं के बीच\n\nउपयोगकर्ता एक-दूसरे के डेटा को एक्सेस नहीं कर सकते — जब तक वे Sharing API के माध्यम से स्पष्ट रूप से कोई mind साझा न करें:\n\n```bash\n# Alice shares Mind A with Bob\ncurl -X POST https://synapse.schaefer.zone/sharing \\\n  -H \"Authorization: Bearer ALICE_JWT\" \\\n  -d '{\"mind_id\": \"m_aaa\", \"email\": \"bob@example.com\", \"role\": \"read\"}'\n```\n\nसाझाकरण के बाद, Bob अपने JWT के माध्यम से Mind A एक्सेस कर सकता है (केवल पढ़ने के लिए यदि `role=read`)।\n\n## सुरक्षा सीमाएँ\n\n```\n┌─────────────────────────────────────────────────┐\n│              Synapse Instance                    │\n│  ┌─────────────────────────────────────────┐    │\n│  │         User Account Boundary           │    │\n│  │  ┌──────────────┐  ┌──────────────┐    │    │\n│  │  │  Mind Bound. │  │  Mind Bound. │    │    │\n│  │  │  (Mind Key)  │  │  (Mind Key)  │    │    │\n│  │  │              │  │              │    │    │\n│  │  │  Memories    │  │  Memories    │    │    │\n│  │  │  Tasks       │  │  Tasks       │    │    │\n│  │  │  Chat        │  │  Chat        │    │    │\n│  │  │  Scripts     │  │  Scripts     │    │    │\n│  │  └──────────────┘  └──────────────┘    │    │\n│  └─────────────────────────────────────────┘    │\n└─────────────────────────────────────────────────┘\n```\n\n## सामान्य मल्टी-टैनेंसी पैटर्न\n\n### पैटर्न 1: एकल उपयोगकर्ता, एकल Mind\n\nव्यक्तिगत LLM एजेंट उपयोगकर्ताओं के लिए सबसे सामान्य।\n\n- 1 उपयोगकर्ता खाता\n- 1 mind\n- 1 Mind Key\n- सभी मेमोरीज़ एक दायरे में\n\n### पैटर्न 2: एकल उपयोगकर्ता, कई Minds\n\nकई संदर्भों (कार्य, व्यक्तिगत, परियोजनाएँ) वाले उपयोगकर्ताओं के लिए।\n\n- 1 उपयोगकर्ता खाता\n- N minds (जैसे \"work\", \"personal\", \"project-x\")\n- N Mind Keys\n- प्रत्येक LLM सत्र एक Mind Key का उपयोग करता है\n\n### पैटर्न 3: टीम साझा Mind\n\nकिसी परियोजना पर सहयोग करने वाली टीमों के लिए।\n\n- 1 उपयोगकर्ता mind बनाता है (Mind Key प्राप्त करता है)\n- निर्माता JWT के माध्यम से टीम के सदस्यों के साथ साझा करता है\n- सभी टीम के सदस्य JWT (या साझा Mind Key) के माध्यम से एक्सेस करते हैं\n\n> [!WARNING]\n> Mind Key साझा करना पूर्ण पढ़ने/लिखने का एक्सेस देता है। टीम सहयोग के लिए, सीधे Mind Keys साझा करने के बजाय Sharing API (JWT-आधारित) को प्राथमिकता दें।\n\n### पैटर्न 4: SaaS प्रदाता\n\nउन ऐप्स के लिए जो Synapse को अपनी मेमोरी परत के रूप में एम्बेड करते हैं।\n\n- प्रत्येक ग्राहक = 1 उपयोगकर्ता खाता\n- प्रत्येक ग्राहक परियोजना = 1 mind\n- ऐप प्रति ग्राहक/परियोजना Mind Keys स्टोर करता है\n- ग्राहकों के बीच पूर्ण आइसोलेशन\n\n## आइसोलेशन सत्यापन\n\n### परीक्षण: Mind Key अन्य minds एक्सेस नहीं कर सकता\n\n```bash\n# Mind A's key cannot read Mind B's memories\ncurl -H \"Authorization: Bearer mk_aaa...\" \\\n     \"https://synapse.schaefer.zone/memory/search?q=test\"\n# Returns only Mind A's memories\n\ncurl -H \"Authorization: Bearer mk_bbb...\" \\\n     \"https://synapse.schaefer.zone/memory/search?q=test\"\n# Returns only Mind B's memories (different results)\n```\n\n### परीक्षण: JWT सीधे मेमोरी डेटा नहीं पढ़ सकता\n\n```bash\n# JWT can list minds\ncurl -H \"Authorization: Bearer YOUR_JWT\" \\\n     https://synapse.schaefer.zone/minds\n# Returns: list of minds\n\n# JWT CANNOT read memories (need Mind Key)\ncurl -H \"Authorization: Bearer YOUR_JWT\" \\\n     https://synapse.schaefer.zone/memory/recall\n# Returns: 401 Unauthorized\n```\n\n## सर्वोत्तम प्रथाएँ\n\n> [!TIP]\n> - **प्रति परियोजना/संदर्भ एक mind का उपयोग करें** — आइसोलेशन आपका मित्र है\n> - **Mind Keys कभी साझा न करें** — इसके बजाय Sharing API का उपयोग करें\n> - **समझौता होने पर Mind Keys रोटेट करें** (mind हटाएँ, नया बनाएँ)\n> - **साझा minds का ऑडिट करें** — समय-समय पर `GET /sharing` समीक्षा करें\n> - **मानव UI के लिए JWT का उपयोग करें** — अंतिम उपयोगकर्ताओं को Mind Keys कभी एक्सपोज़ न करें\n\n## अगले कदम\n\n- [प्रमाणीकरण](/docs/getting-started/authentication)\n- [Mind Key vs JWT](/docs/getting-started/mind-key-vs-jwt)\n- [आर्किटेक्चर](/docs/concepts/architecture)\n","content_html":"<h1>मल्टी-टैनेंसी और आइसोलेशन</h1>\n<p>Synapse मल्टी-टैनेंट है: कई उपयोगकर्ता, प्रत्येक के पास कई minds, जो एक-दूसरे से पूरी तरह अलग हैं। यह पृष्ठ आइसोलेशन मॉडल की व्याख्या करता है।</p>\n<h2>टैनेंट पदानुक्रम</h2>\n<pre><code class=\"hljs language-plaintext\">Synapse Instance\n  │\n  ├── User Account 1 (email: alice@example.com)\n  │   ├── Mind A (Mind Key mk_aaa...)\n  │   │   ├── Memories (only accessible via mk_aaa...)\n  │   │   ├── Tasks\n  │   │   └── Chat\n  │   └── Mind B (Mind Key mk_bbb...)\n  │       └── ... (isolated from Mind A)\n  │\n  ├── User Account 2 (email: bob@example.com)\n  │   └── Mind C (Mind Key mk_ccc...)\n  │       └── ... (isolated from Alice&#x27;s minds)\n  │\n  └── ... (more users)</code></pre><h2>आइसोलेशन स्तर</h2>\n<h3>स्तर 1: उपयोगकर्ता आइसोलेशन</h3>\n<p>प्रत्येक उपयोगकर्ता खाता अलग है। Alice नहीं कर सकती:</p>\n<ul>\n<li>Bob के minds देख सकती है</li>\n<li>Bob की मेमोरीज़ एक्सेस कर सकती है (अपने JWT के साथ भी)</li>\n<li>Bob की खाता जानकारी सूचीबद्ध कर सकती है</li>\n</ul>\n<p>लागू द्वारा: सभी तालिकाओं पर <code>user_id</code> कॉलम, JWT में <code>user_id</code> शामिल, सभी क्वेरीज़ <code>user_id</code> द्वारा फ़िल्टर करती हैं।</p>\n<h3>स्तर 2: Mind आइसोलेशन</h3>\n<p>किसी उपयोगकर्ता के भीतर, प्रत्येक mind अलग है। Mind A नहीं कर सकता:</p>\n<ul>\n<li>Mind B की मेमोरीज़ देख सकता है</li>\n<li>Mind B के कार्य, चैट, स्क्रिप्ट्स एक्सेस कर सकता है</li>\n</ul>\n<p>लागू द्वारा: सभी डेटा तालिकाओं पर <code>mind_id</code> कॉलम, Mind Key में <code>mind_id</code> शामिल, सभी क्वेरीज़ <code>mind_id</code> द्वारा फ़िल्टर करती हैं।</p>\n<div class=\"callout callout-critical\">Mind Key आइसोलेशन प्राथमिक सुरक्षा सीमा है। लीक हुई Mind Key उस mind के डेटा तक पूर्ण पहुँच प्रदान करती है — लेकिन केवल उसी mind तक।</div><h2>प्रमाणीकरण टोकन</h2>\n<table>\n<thead>\n<tr>\n<th>टोकन</th>\n<th>दायरा</th>\n<th>क्या एक्सेस कर सकता है</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Mind Key</td>\n<td>एकल mind</td>\n<td>केवल उस mind का डेटा</td>\n</tr>\n<tr>\n<td>JWT</td>\n<td>उपयोगकर्ता खाता</td>\n<td>खाता प्रबंधन (minds बनाएँ/सूचीबद्ध करें/हटाएँ)</td>\n</tr>\n<tr>\n<td>Computer Token</td>\n<td>एकल कंप्यूटर</td>\n<td>उस कंप्यूटर के कमांड्स</td>\n</tr>\n</tbody></table>\n<h2>क्रॉस-Mind एक्सेस</h2>\n<h3>उसी उपयोगकर्ता के भीतर</h3>\n<p>उपयोगकर्ता JWT के माध्यम से अपने सभी minds एक्सेस कर सकता है (जैसे <code>GET /minds</code> सभी को सूचीबद्ध करता है)।\nलेकिन मेमोरी डेटा पढ़ने/लिखने के लिए, उन्हें विशिष्ट Mind Key की आवश्यकता है।</p>\n<h3>उपयोगकर्ताओं के बीच</h3>\n<p>उपयोगकर्ता एक-दूसरे के डेटा को एक्सेस नहीं कर सकते — जब तक वे Sharing API के माध्यम से स्पष्ट रूप से कोई mind साझा न करें:</p>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Alice shares Mind A with Bob</span>\ncurl -X POST https://synapse.schaefer.zone/sharing \\\n  -H <span class=\"hljs-string\">&quot;Authorization: Bearer ALICE_JWT&quot;</span> \\\n  -d <span class=\"hljs-string\">&#x27;{&quot;mind_id&quot;: &quot;m_aaa&quot;, &quot;email&quot;: &quot;bob@example.com&quot;, &quot;role&quot;: &quot;read&quot;}&#x27;</span></code></pre><p>साझाकरण के बाद, Bob अपने JWT के माध्यम से Mind A एक्सेस कर सकता है (केवल पढ़ने के लिए यदि <code>role=read</code>)।</p>\n<h2>सुरक्षा सीमाएँ</h2>\n<pre><code class=\"hljs language-plaintext\">┌─────────────────────────────────────────────────┐\n│              Synapse Instance                    │\n│  ┌─────────────────────────────────────────┐    │\n│  │         User Account Boundary           │    │\n│  │  ┌──────────────┐  ┌──────────────┐    │    │\n│  │  │  Mind Bound. │  │  Mind Bound. │    │    │\n│  │  │  (Mind Key)  │  │  (Mind Key)  │    │    │\n│  │  │              │  │              │    │    │\n│  │  │  Memories    │  │  Memories    │    │    │\n│  │  │  Tasks       │  │  Tasks       │    │    │\n│  │  │  Chat        │  │  Chat        │    │    │\n│  │  │  Scripts     │  │  Scripts     │    │    │\n│  │  └──────────────┘  └──────────────┘    │    │\n│  └─────────────────────────────────────────┘    │\n└─────────────────────────────────────────────────┘</code></pre><h2>सामान्य मल्टी-टैनेंसी पैटर्न</h2>\n<h3>पैटर्न 1: एकल उपयोगकर्ता, एकल Mind</h3>\n<p>व्यक्तिगत LLM एजेंट उपयोगकर्ताओं के लिए सबसे सामान्य।</p>\n<ul>\n<li>1 उपयोगकर्ता खाता</li>\n<li>1 mind</li>\n<li>1 Mind Key</li>\n<li>सभी मेमोरीज़ एक दायरे में</li>\n</ul>\n<h3>पैटर्न 2: एकल उपयोगकर्ता, कई Minds</h3>\n<p>कई संदर्भों (कार्य, व्यक्तिगत, परियोजनाएँ) वाले उपयोगकर्ताओं के लिए।</p>\n<ul>\n<li>1 उपयोगकर्ता खाता</li>\n<li>N minds (जैसे &quot;work&quot;, &quot;personal&quot;, &quot;project-x&quot;)</li>\n<li>N Mind Keys</li>\n<li>प्रत्येक LLM सत्र एक Mind Key का उपयोग करता है</li>\n</ul>\n<h3>पैटर्न 3: टीम साझा Mind</h3>\n<p>किसी परियोजना पर सहयोग करने वाली टीमों के लिए।</p>\n<ul>\n<li>1 उपयोगकर्ता mind बनाता है (Mind Key प्राप्त करता है)</li>\n<li>निर्माता JWT के माध्यम से टीम के सदस्यों के साथ साझा करता है</li>\n<li>सभी टीम के सदस्य JWT (या साझा Mind Key) के माध्यम से एक्सेस करते हैं</li>\n</ul>\n<div class=\"callout callout-warn\">Mind Key साझा करना पूर्ण पढ़ने/लिखने का एक्सेस देता है। टीम सहयोग के लिए, सीधे Mind Keys साझा करने के बजाय Sharing API (JWT-आधारित) को प्राथमिकता दें।</div><h3>पैटर्न 4: SaaS प्रदाता</h3>\n<p>उन ऐप्स के लिए जो Synapse को अपनी मेमोरी परत के रूप में एम्बेड करते हैं।</p>\n<ul>\n<li>प्रत्येक ग्राहक = 1 उपयोगकर्ता खाता</li>\n<li>प्रत्येक ग्राहक परियोजना = 1 mind</li>\n<li>ऐप प्रति ग्राहक/परियोजना Mind Keys स्टोर करता है</li>\n<li>ग्राहकों के बीच पूर्ण आइसोलेशन</li>\n</ul>\n<h2>आइसोलेशन सत्यापन</h2>\n<h3>परीक्षण: Mind Key अन्य minds एक्सेस नहीं कर सकता</h3>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Mind A&#x27;s key cannot read Mind B&#x27;s memories</span>\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer mk_aaa...&quot;</span> \\\n     <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone/memory/search?q=test&quot;</span>\n<span class=\"hljs-comment\"># Returns only Mind A&#x27;s memories</span>\n\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer mk_bbb...&quot;</span> \\\n     <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone/memory/search?q=test&quot;</span>\n<span class=\"hljs-comment\"># Returns only Mind B&#x27;s memories (different results)</span></code></pre><h3>परीक्षण: JWT सीधे मेमोरी डेटा नहीं पढ़ सकता</h3>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># JWT can list minds</span>\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_JWT&quot;</span> \\\n     https://synapse.schaefer.zone/minds\n<span class=\"hljs-comment\"># Returns: list of minds</span>\n\n<span class=\"hljs-comment\"># JWT CANNOT read memories (need Mind Key)</span>\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_JWT&quot;</span> \\\n     https://synapse.schaefer.zone/memory/recall\n<span class=\"hljs-comment\"># Returns: 401 Unauthorized</span></code></pre><h2>सर्वोत्तम प्रथाएँ</h2>\n<div class=\"callout callout-ok\"></div><h2>अगले कदम</h2>\n<ul>\n<li><a href=\"/docs/getting-started/authentication\">प्रमाणीकरण</a></li>\n<li><a href=\"/docs/getting-started/mind-key-vs-jwt\">Mind Key vs JWT</a></li>\n<li><a href=\"/docs/concepts/architecture\">आर्किटेक्चर</a></li>\n</ul>\n","urls":{"html":"/docs/concepts/multi-tenancy","text":"/docs/concepts/multi-tenancy?format=text","json":"/docs/concepts/multi-tenancy?format=json","llm":"/docs/concepts/multi-tenancy?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}