---
read_when:
    - Instances टैब को डीबग करना
    - डुप्लिकेट या पुरानी इंस्टेंस पंक्तियों की जांच की जा रही है
    - Gateway WS कनेक्ट या system-event बीकन बदलना
summary: OpenClaw उपस्थिति प्रविष्टियां कैसे बनाई, मर्ज की, और प्रदर्शित की जाती हैं
title: उपस्थिति
x-i18n:
    generated_at: "2026-06-28T23:01:34Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 6ab76e81fc1842c747b0a33da8cf9874e3537c5ab023450ee1a6a314453e7263
    source_path: concepts/presence.md
    workflow: 16
---

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>
