Langsung ke konten utama

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

Status: Plugin bawaan opsional (dinonaktifkan secara default hingga dikonfigurasi). Nostr adalah protokol terdesentralisasi untuk jejaring sosial. Channel ini memungkinkan OpenClaw menerima dan merespons pesan langsung (DM) terenkripsi melalui NIP-04.

Plugin bawaan

Rilis OpenClaw saat ini menyertakan Nostr sebagai Plugin bawaan, sehingga build paket normal tidak memerlukan instalasi terpisah.

Instalasi lama/kustom

  • Onboarding (openclaw onboard) dan openclaw channels add tetap menampilkan Nostr dari katalog channel bersama.
  • Jika build Anda mengecualikan Nostr bawaan, instal paket npm secara langsung.
openclaw plugins install @openclaw/nostr
Gunakan paket polos untuk mengikuti tag rilis resmi saat ini. Sematkan versi persis hanya saat Anda memerlukan instalasi yang dapat direproduksi. Gunakan checkout lokal (alur kerja dev):
openclaw plugins install --link <path-to-local-nostr-plugin>
Mulai ulang Gateway setelah menginstal atau mengaktifkan plugin.

Penyiapan noninteraktif

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"
Gunakan --use-env untuk menyimpan NOSTR_PRIVATE_KEY di environment alih-alih menyimpan kunci dalam config.

Penyiapan cepat

  1. Buat keypair Nostr (jika diperlukan):
# Using nak
nak key generate
  1. Tambahkan ke config:
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
    },
  },
}
  1. Ekspor kunci:
export NOSTR_PRIVATE_KEY="nsec1..."
  1. Mulai ulang Gateway.

Referensi konfigurasi

KunciTipeDefaultDeskripsi
privateKeystringwajibKunci privat dalam format nsec atau hex
relaysstring[]['wss://relay.damus.io', 'wss://nos.lol']URL relay (WebSocket)
dmPolicystringpairingKebijakan akses DM
allowFromstring[][]Pubkey pengirim yang diizinkan
enabledbooleantrueAktifkan/nonaktifkan channel
namestring-Nama tampilan
profileobject-Metadata profil NIP-01

Metadata profil

Data profil diterbitkan sebagai event NIP-01 kind:0. Anda dapat mengelolanya dari Control UI (Channels -> Nostr -> Profile) atau mengaturnya langsung di config. Contoh:
{
  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",
      },
    },
  },
}
Catatan:
  • URL profil harus menggunakan https://.
  • Mengimpor dari relay menggabungkan field dan mempertahankan override lokal.

Kontrol akses

Kebijakan DM

  • pairing (default): pengirim tidak dikenal menerima kode pairing.
  • allowlist: hanya pubkey di allowFrom yang dapat mengirim DM.
  • open: DM masuk publik (memerlukan allowFrom: ["*"]).
  • disabled: abaikan DM masuk.
Catatan penegakan:
  • Tanda tangan event masuk diverifikasi sebelum kebijakan pengirim dan dekripsi NIP-04, sehingga event palsu ditolak sejak awal.
  • Balasan pairing dikirim tanpa memproses isi DM asli.
  • DM masuk dibatasi lajunya dan payload terlalu besar dibuang sebelum dekripsi.

Contoh allowlist

{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
      dmPolicy: "allowlist",
      allowFrom: ["npub1abc...", "npub1xyz..."],
    },
  },
}

Format kunci

Format yang diterima:
  • Kunci privat: nsec... atau hex 64 karakter
  • Pubkey (allowFrom): npub... atau hex

Relay

Default: relay.damus.io dan nos.lol.
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
      relays: ["wss://relay.damus.io", "wss://relay.primal.net", "wss://nostr.wine"],
    },
  },
}
Tips:
  • Gunakan 2-3 relay untuk redundansi.
  • Hindari terlalu banyak relay (latensi, duplikasi).
  • Relay berbayar dapat meningkatkan keandalan.
  • Relay lokal cocok untuk pengujian (ws://localhost:7777).

Dukungan protokol

NIPStatusDeskripsi
NIP-01DidukungFormat event dasar + metadata profil
NIP-04DidukungDM terenkripsi (kind:4)
NIP-17DirencanakanDM berbungkus hadiah
NIP-44DirencanakanEnkripsi berversi

Pengujian

Relay lokal

# Start strfry
docker run -p 7777:7777 ghcr.io/hoytech/strfry
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
      relays: ["ws://localhost:7777"],
    },
  },
}

Pengujian manual

  1. Catat pubkey bot (npub) dari log.
  2. Buka klien Nostr (Damus, Amethyst, dll.).
  3. Kirim DM ke pubkey bot.
  4. Verifikasi responsnya.

Pemecahan masalah

Tidak menerima pesan

  • Verifikasi kunci privat valid.
  • Pastikan URL relay dapat dijangkau dan menggunakan wss:// (atau ws:// untuk lokal).
  • Pastikan enabled bukan false.
  • Periksa log Gateway untuk error koneksi relay.

Tidak mengirim respons

  • Periksa apakah relay menerima penulisan.
  • Verifikasi konektivitas keluar.
  • Perhatikan batas laju relay.

Respons duplikat

  • Wajar saat menggunakan beberapa relay.
  • Pesan dideduplikasi berdasarkan ID event; hanya pengiriman pertama yang memicu respons.

Keamanan

  • Jangan pernah commit kunci privat.
  • Gunakan variabel environment untuk kunci.
  • Pertimbangkan allowlist untuk bot produksi.
  • Tanda tangan diverifikasi sebelum kebijakan pengirim, dan kebijakan pengirim ditegakkan sebelum dekripsi, sehingga event palsu ditolak sejak awal dan pengirim tidak dikenal tidak dapat memaksa kerja kripto penuh.

Keterbatasan (MVP)

  • Hanya pesan langsung (tanpa obrolan grup).
  • Tidak ada lampiran media.
  • Hanya NIP-04 (gift-wrap NIP-17 direncanakan).

Terkait