> ## 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.

# Nostr

**स्थिति:** वैकल्पिक बंडल किया गया Plugin (कॉन्फ़िगर होने तक डिफ़ॉल्ट रूप से अक्षम)।

Nostr सोशल नेटवर्किंग के लिए एक विकेंद्रीकृत प्रोटोकॉल है। यह चैनल OpenClaw को NIP-04 के ज़रिए एन्क्रिप्टेड डायरेक्ट मैसेज (DMs) प्राप्त करने और उनका जवाब देने में सक्षम बनाता है।

## बंडल किया गया Plugin

वर्तमान OpenClaw रिलीज़ Nostr को बंडल किए गए Plugin के रूप में शिप करती हैं, इसलिए सामान्य पैकेज्ड
बिल्ड को अलग इंस्टॉल की ज़रूरत नहीं होती।

### पुराने/कस्टम इंस्टॉल

* ऑनबोर्डिंग (`openclaw onboard`) और `openclaw channels add` अब भी साझा चैनल कैटलॉग से
  Nostr दिखाते हैं।
* अगर आपका बिल्ड बंडल किए गए Nostr को बाहर रखता है, तो npm पैकेज सीधे इंस्टॉल करें।

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw plugins install @openclaw/nostr
```

वर्तमान आधिकारिक रिलीज़ टैग का अनुसरण करने के लिए बिना संस्करण वाला पैकेज इस्तेमाल करें। सटीक
संस्करण केवल तब पिन करें जब आपको पुनरुत्पादनीय इंस्टॉल चाहिए।

लोकल चेकआउट इस्तेमाल करें (डेव वर्कफ़्लो):

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw plugins install --link <path-to-local-nostr-plugin>
```

Plugin इंस्टॉल या सक्षम करने के बाद Gateway रीस्टार्ट करें।

### गैर-इंटरैक्टिव सेटअप

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw channels add --channel nostr --private-key "$NOSTR_PRIVATE_KEY"
openclaw channels add --channel nostr --private-key "$NOSTR_PRIVATE_KEY" --relay-urls "wss://relay.damus.io,wss://relay.primal.net"
```

कुंजी को कॉन्फ़िग में स्टोर करने के बजाय `NOSTR_PRIVATE_KEY` को एनवायरनमेंट में रखने के लिए `--use-env` इस्तेमाल करें।

## त्वरित सेटअप

1. Nostr कीपेयर जनरेट करें (यदि ज़रूरत हो):

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
# Using nak
nak key generate
```

2. कॉन्फ़िग में जोड़ें:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
    },
  },
}
```

3. कुंजी एक्सपोर्ट करें:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
export NOSTR_PRIVATE_KEY="nsec1..."
```

4. Gateway रीस्टार्ट करें।

## कॉन्फ़िगरेशन संदर्भ

| कुंजी        | प्रकार    | डिफ़ॉल्ट                                    | विवरण                                 |
| ------------ | --------- | ------------------------------------------- | ------------------------------------- |
| `privateKey` | string    | आवश्यक                                      | `nsec` या hex फ़ॉर्मैट में निजी कुंजी |
| `relays`     | string\[] | `['wss://relay.damus.io', 'wss://nos.lol']` | रिले URL (WebSocket)                  |
| `dmPolicy`   | string    | `pairing`                                   | DM एक्सेस नीति                        |
| `allowFrom`  | string\[] | `[]`                                        | अनुमत भेजने वाले pubkeys              |
| `enabled`    | boolean   | `true`                                      | चैनल सक्षम/अक्षम करें                 |
| `name`       | string    | -                                           | प्रदर्शित नाम                         |
| `profile`    | object    | -                                           | NIP-01 प्रोफ़ाइल मेटाडेटा             |

## प्रोफ़ाइल मेटाडेटा

प्रोफ़ाइल डेटा NIP-01 `kind:0` इवेंट के रूप में प्रकाशित होता है। आप इसे Control UI (चैनल -> Nostr -> प्रोफ़ाइल) से प्रबंधित कर सकते हैं या सीधे कॉन्फ़िग में सेट कर सकते हैं।

उदाहरण:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
      profile: {
        name: "openclaw",
        displayName: "OpenClaw",
        about: "Personal assistant DM bot",
        picture: "https://example.com/avatar.png",
        banner: "https://example.com/banner.png",
        website: "https://example.com",
        nip05: "openclaw@example.com",
        lud16: "openclaw@example.com",
      },
    },
  },
}
```

नोट्स:

* प्रोफ़ाइल URL में `https://` इस्तेमाल होना चाहिए।
* रिले से इम्पोर्ट करने पर फ़ील्ड मर्ज होते हैं और लोकल ओवरराइड सुरक्षित रहते हैं।

## एक्सेस नियंत्रण

### DM नीतियां

* **pairing** (डिफ़ॉल्ट): अज्ञात भेजने वालों को पेयरिंग कोड मिलता है।
* **allowlist**: केवल `allowFrom` में मौजूद pubkeys DM कर सकते हैं।
* **open**: सार्वजनिक इनबाउंड DMs (`allowFrom: ["*"]` आवश्यक)।
* **disabled**: इनबाउंड DMs अनदेखा करें।

लागू करने के नोट्स:

* इनबाउंड इवेंट हस्ताक्षर भेजने वाले की नीति और NIP-04 डिक्रिप्शन से पहले सत्यापित किए जाते हैं, इसलिए जाली इवेंट जल्दी अस्वीकार हो जाते हैं।
* पेयरिंग जवाब मूल DM बॉडी को प्रोसेस किए बिना भेजे जाते हैं।
* इनबाउंड DMs पर रेट लिमिट लगती है और बहुत बड़े पेलोड डिक्रिप्ट से पहले ड्रॉप कर दिए जाते हैं।

### Allowlist उदाहरण

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
      dmPolicy: "allowlist",
      allowFrom: ["npub1abc...", "npub1xyz..."],
    },
  },
}
```

## कुंजी फ़ॉर्मैट

स्वीकृत फ़ॉर्मैट:

* **निजी कुंजी:** `nsec...` या 64-अक्षर hex
* **Pubkeys (`allowFrom`):** `npub...` या hex

## रिले

डिफ़ॉल्ट: `relay.damus.io` और `nos.lol`।

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
      relays: ["wss://relay.damus.io", "wss://relay.primal.net", "wss://nostr.wine"],
    },
  },
}
```

सुझाव:

* अतिरिक्त भरोसेमंदी के लिए 2-3 रिले इस्तेमाल करें।
* बहुत अधिक रिले से बचें (लेटेंसी, डुप्लिकेशन)।
* पेड रिले विश्वसनीयता बेहतर कर सकते हैं।
* लोकल रिले टेस्टिंग के लिए ठीक हैं (`ws://localhost:7777`)।

## प्रोटोकॉल समर्थन

| NIP    | स्थिति    | विवरण                                     |
| ------ | --------- | ----------------------------------------- |
| NIP-01 | समर्थित   | बेसिक इवेंट फ़ॉर्मैट + प्रोफ़ाइल मेटाडेटा |
| NIP-04 | समर्थित   | एन्क्रिप्टेड DMs (`kind:4`)               |
| NIP-17 | योजनाबद्ध | गिफ़्ट-रैप्ड DMs                          |
| NIP-44 | योजनाबद्ध | संस्करणयुक्त एन्क्रिप्शन                  |

## टेस्टिंग

### लोकल रिले

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
# Start strfry
docker run -p 7777:7777 ghcr.io/hoytech/strfry
```

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
      relays: ["ws://localhost:7777"],
    },
  },
}
```

### मैनुअल टेस्ट

1. लॉग से बॉट pubkey (npub) नोट करें।
2. कोई Nostr क्लाइंट खोलें (Damus, Amethyst, आदि)।
3. बॉट pubkey को DM करें।
4. प्रतिक्रिया सत्यापित करें।

## समस्या निवारण

### संदेश प्राप्त नहीं हो रहे

* सत्यापित करें कि निजी कुंजी मान्य है।
* सुनिश्चित करें कि रिले URL पहुंच योग्य हैं और `wss://` इस्तेमाल करते हैं (या लोकल के लिए `ws://`)।
* पुष्टि करें कि `enabled` `false` नहीं है।
* रिले कनेक्शन त्रुटियों के लिए Gateway लॉग देखें।

### प्रतिक्रियाएं नहीं भेजी जा रहीं

* जांचें कि रिले राइट स्वीकार करता है।
* आउटबाउंड कनेक्टिविटी सत्यापित करें।
* रिले रेट लिमिट पर नज़र रखें।

### डुप्लिकेट प्रतिक्रियाएं

* कई रिले इस्तेमाल करते समय यह अपेक्षित है।
* संदेशों को इवेंट ID से डीडुप्लिकेट किया जाता है; केवल पहली डिलीवरी प्रतिक्रिया ट्रिगर करती है।

## सुरक्षा

* निजी कुंजियां कभी कमिट न करें।
* कुंजियों के लिए एनवायरनमेंट वैरिएबल इस्तेमाल करें।
* प्रोडक्शन बॉट्स के लिए `allowlist` पर विचार करें।
* हस्ताक्षर भेजने वाले की नीति से पहले सत्यापित किए जाते हैं, और भेजने वाले की नीति डिक्रिप्ट से पहले लागू होती है, इसलिए जाली इवेंट जल्दी अस्वीकार हो जाते हैं और अज्ञात भेजने वाले पूरा क्रिप्टो काम मजबूर नहीं कर सकते।

## सीमाएं (MVP)

* केवल डायरेक्ट मैसेज (ग्रुप चैट नहीं)।
* कोई मीडिया अटैचमेंट नहीं।
* केवल NIP-04 (NIP-17 गिफ़्ट-रैप योजनाबद्ध)।

## संबंधित

* [चैनल अवलोकन](/hi/channels) — सभी समर्थित चैनल
* [पेयरिंग](/hi/channels/pairing) — DM प्रमाणीकरण और पेयरिंग फ़्लो
* [ग्रुप](/hi/channels/groups) — ग्रुप चैट व्यवहार और मेंशन गेटिंग
* [चैनल रूटिंग](/hi/channels/channel-routing) — संदेशों के लिए सेशन रूटिंग
* [सुरक्षा](/hi/gateway/security) — एक्सेस मॉडल और हार्डनिंग
