> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# उपस्थिति

OpenClaw "उपस्थिति" इनका एक हल्का, सर्वोत्तम-प्रयास दृश्य है:

* स्वयं **Gateway**, और
* **Gateway से जुड़े क्लाइंट** (mac ऐप, WebChat, CLI, आदि)

उपस्थिति का उपयोग मुख्य रूप से macOS ऐप के **इंस्टेंस** टैब को रेंडर करने और
ऑपरेटर को त्वरित दृश्यता देने के लिए किया जाता है।

## उपस्थिति फ़ील्ड (क्या दिखाई देता है)

उपस्थिति प्रविष्टियां ऐसे संरचित ऑब्जेक्ट होती हैं जिनमें इस तरह के फ़ील्ड होते हैं:

* `instanceId` (वैकल्पिक लेकिन दृढ़ता से अनुशंसित): स्थिर क्लाइंट पहचान (आमतौर पर `connect.client.instanceId`)
* `host`: मनुष्य-पठनीय होस्ट नाम
* `ip`: सर्वोत्तम-प्रयास IP पता
* `version`: क्लाइंट संस्करण स्ट्रिंग
* `deviceFamily` / `modelIdentifier`: हार्डवेयर संकेत
* `mode`: `ui`, `webchat`, `cli`, `backend`, `probe`, `test`, `node`, ...
* `lastInputSeconds`: "अंतिम उपयोगकर्ता इनपुट के बाद से सेकंड" (यदि ज्ञात हो)
* `reason`: `self`, `connect`, `node-connected`, `periodic`, ...
* `ts`: अंतिम अपडेट टाइमस्टैम्प (epoch के बाद से ms)

## प्रोड्यूसर (उपस्थिति कहां से आती है)

उपस्थिति प्रविष्टियां कई स्रोतों द्वारा बनाई जाती हैं और **मर्ज** की जाती हैं।

### 1) Gateway स्वयं प्रविष्टि

Gateway हमेशा स्टार्टअप पर एक "स्वयं" प्रविष्टि सीड करता है ताकि UI किसी भी
क्लाइंट के जुड़ने से पहले भी gateway होस्ट दिखाएं।

### 2) WebSocket कनेक्ट

हर WS क्लाइंट एक `connect` अनुरोध से शुरू होता है। सफल हैंडशेक पर
Gateway उस कनेक्शन के लिए एक उपस्थिति प्रविष्टि upsert करता है।

#### एकबारगी CLI कमांड क्यों दिखाई नहीं देते

CLI अक्सर छोटे, एकबारगी कमांड के लिए जुड़ता है। इंस्टेंस सूची को स्पैम होने से
बचाने के लिए, `client.mode === "cli"` को उपस्थिति प्रविष्टि में **नहीं** बदला जाता।

### 3) `system-event` बीकन

क्लाइंट `system-event` विधि के माध्यम से अधिक समृद्ध आवधिक बीकन भेज सकते हैं। mac
ऐप इसका उपयोग होस्ट नाम, IP, और `lastInputSeconds` रिपोर्ट करने के लिए करता है।

### 4) Node कनेक्ट (भूमिका: node)

जब कोई node Gateway WebSocket पर `role: node` के साथ जुड़ता है, तो Gateway
उस node के लिए एक उपस्थिति प्रविष्टि upsert करता है (अन्य WS क्लाइंट जैसी ही प्रक्रिया)।

## मर्ज + डीडुप नियम (`instanceId` क्यों महत्वपूर्ण है)

उपस्थिति प्रविष्टियां एक एकल इन-मेमोरी मैप में संग्रहीत होती हैं:

* प्रविष्टियां एक **उपस्थिति कुंजी** द्वारा keyed होती हैं।
* सबसे अच्छी कुंजी एक स्थिर `instanceId` है (`connect.client.instanceId` से) जो पुनरारंभों के बाद भी बनी रहती है।
* कुंजियां केस-असंवेदनशील होती हैं।

यदि कोई क्लाइंट स्थिर `instanceId` के बिना फिर से जुड़ता है, तो वह
**डुप्लिकेट** पंक्ति के रूप में दिखाई दे सकता है।

## TTL और सीमित आकार

उपस्थिति जानबूझकर अस्थायी है:

* **TTL:** 5 मिनट से पुरानी प्रविष्टियां हटाई जाती हैं
* **अधिकतम प्रविष्टियां:** 200 (सबसे पुरानी पहले हटाई जाती हैं)

यह सूची को ताजा रखता है और असीमित मेमोरी वृद्धि से बचाता है।

## रिमोट/टनल सावधानी (loopback IP)

जब कोई क्लाइंट SSH टनल / local पोर्ट फ़ॉरवर्ड के माध्यम से जुड़ता है, तो Gateway
रिमोट पते को `127.0.0.1` के रूप में देख सकता है। किसी अच्छे क्लाइंट-रिपोर्ट किए गए
IP को ओवरराइट करने से बचाने के लिए, loopback रिमोट पतों को अनदेखा किया जाता है।

## उपभोक्ता

### macOS इंस्टेंस टैब

macOS ऐप `system-presence` के आउटपुट को रेंडर करता है और अंतिम अपडेट की उम्र के आधार पर
एक छोटा स्थिति संकेतक (सक्रिय/निष्क्रिय/बासी) लागू करता है।

## डीबगिंग सुझाव

* कच्ची सूची देखने के लिए, Gateway के विरुद्ध `system-presence` कॉल करें।
* यदि आपको डुप्लिकेट दिखाई दें:
  * पुष्टि करें कि क्लाइंट हैंडशेक में एक स्थिर `client.instanceId` भेजते हैं
  * पुष्टि करें कि आवधिक बीकन वही `instanceId` उपयोग करते हैं
  * जांचें कि क्या कनेक्शन-व्युत्पन्न प्रविष्टि में `instanceId` नहीं है (डुप्लिकेट अपेक्षित हैं)

## संबंधित

<CardGroup cols={2}>
  <Card title="Typing indicators" href="/hi/concepts/typing-indicators" icon="ellipsis">
    टाइपिंग संकेतक कब भेजे जाते हैं और उन्हें कैसे ट्यून करें।
  </Card>

  <Card title="Streaming and chunking" href="/hi/concepts/streaming" icon="bars-staggered">
    आउटबाउंड स्ट्रीमिंग, चंकिंग, और प्रति-चैनल फ़ॉर्मैटिंग।
  </Card>

  <Card title="Gateway architecture" href="/hi/concepts/architecture" icon="diagram-project">
    Gateway घटक और WebSocket प्रोटोकॉल जो उपस्थिति अपडेट चलाता है।
  </Card>

  <Card title="Gateway protocol" href="/hi/gateway/protocol" icon="plug">
    `connect`, `system-event`, और `system-presence` के लिए वायर प्रोटोकॉल।
  </Card>
</CardGroup>
