भूमिकाएं
Gateway WebSocket क्लाइंट एक भूमिका के साथ कनेक्ट करते हैं:operator: control-plane क्लाइंट जैसे CLI, Control UI, automation, और विश्वसनीय helper processes.node: capability hosts जैसे macOS, iOS, Android, या headless nodes जोnode.invokeके माध्यम से commands उजागर करते हैं।
operator भूमिका आवश्यक है। Node-originated methods के लिए
node भूमिका आवश्यक है।
स्कोप स्तर
| स्कोप | अर्थ |
|---|---|
operator.read | केवल-पठन status, lists, catalog, logs, session reads, और अन्य non-mutating control-plane calls. |
operator.write | सामान्य mutating operator actions जैसे messages भेजना, tools invoke करना, talk/voice settings अपडेट करना, और node command relay. operator.read को भी संतुष्ट करता है। |
operator.admin | प्रशासनिक control-plane access. हर operator.* scope को संतुष्ट करता है। config mutation, updates, native hooks, sensitive reserved namespaces, और high-risk approvals के लिए आवश्यक। |
operator.pairing | Device और node pairing management, जिसमें pairing records या device tokens को list करना, approve करना, reject करना, remove करना, rotate करना, और revoke करना शामिल है। |
operator.approvals | Exec और plugin approval APIs. |
operator.talk.secrets | secrets सहित Talk configuration पढ़ना। |
operator.* scopes के लिए exact match आवश्यक है, जब तक caller के पास
operator.admin न हो।
Method scope केवल पहला gate है
हर Gateway RPC का एक least-privilege method scope होता है। वह method scope तय करता है कि request handler तक पहुंच सकती है या नहीं। कुछ handlers फिर approve या mutate की जा रही ठोस चीज़ के आधार पर अधिक कठोर approval-time checks लागू करते हैं। उदाहरण:device.pair.approveoperator.pairingके साथ reachable है, लेकिन किसी operator device को approve करना केवल वही scopes mint या preserve कर सकता है जो caller के पास पहले से हैं।node.pair.approveoperator.pairingके साथ reachable है, फिर pending node command list से अतिरिक्त approval scopes derive करता है।chat.sendसामान्यतः write-scoped method है, लेकिन persistent/config setऔर/config unsetके लिए command level परoperator.adminआवश्यक है।
Device pairing approvals
Device pairing records approved roles और scopes का durable source हैं। पहले से paired devices को चुपचाप व्यापक access नहीं मिलता: reconnects जो broader role या broader scopes मांगते हैं, एक नई pending upgrade request बनाते हैं। Device request approve करते समय:- बिना operator role वाली request को operator token scope approval की आवश्यकता नहीं होती।
- किसी non-operator device role, जैसे
node, के लिए request कोoperator.adminचाहिए, भले हीdevice.pair.approveoperator.pairingके साथ reachable हो। operator.read,operator.write,operator.approvals,operator.pairing, याoperator.talk.secretsके लिए request में caller के पास वे scopes, याoperator.admin, होना आवश्यक है।operator.adminके लिए request कोoperator.adminचाहिए।- बिना explicit scopes वाली repair request मौजूदा operator
token scopes inherit कर सकती है। यदि वह मौजूदा token admin-scoped है, तो approval के लिए फिर भी
operator.adminआवश्यक है।
operator.pairing का उपयोग कर सकते हों।
Paired-device token sessions के लिए, management भी self-scoped है जब तक
caller के पास operator.admin न हो: non-admin callers केवल अपनी pairing
entries देखते हैं, केवल अपनी pending request approve या reject कर सकते हैं, और केवल अपनी device entry
rotate, revoke, या remove कर सकते हैं।
Node pairing approvals
Legacynode.pair.* एक अलग Gateway-owned node pairing store का उपयोग करता है। WS nodes
role: node के साथ device pairing का उपयोग करते हैं, लेकिन वही approval-level vocabulary
लागू होती है।
node.pair.approve pending request command list का उपयोग करके अतिरिक्त
required scopes derive करता है:
- Commandless request:
operator.pairing - Non-exec node commands:
operator.pairing+operator.write system.run,system.run.prepare, याsystem.which:operator.pairing+operator.admin
system.run exec approval policy को replace नहीं करता।
Shared-secret auth
Shared gateway token/password auth को उस Gateway के लिए trusted operator access माना जाता है। OpenAI-compatible HTTP surfaces,/tools/invoke, और HTTP session
history endpoints shared-secret bearer auth के लिए सामान्य full operator default scope set को restore करते हैं,
भले ही caller narrower declared scopes भेजे।
Identity-bearing modes, जैसे trusted proxy auth या private-ingress none,
फिर भी explicit declared scopes का सम्मान कर सकते हैं। वास्तविक trust
boundary separation के लिए अलग Gateways का उपयोग करें।