Nostr
Status: Opcjonalny plugin (domyslnie wylaczony).
Nostr to zdecentralizowany protokol do sieci spolecznosciowych. Ten kanal umozliwia OpenClaw odbieranie i odpowiadanie na zaszyfrowane wiadomosci bezposrednie (DM) przez NIP-04.
Instalacja (na zadanie)
Onboarding (zalecany)
- Kreator onboardingu (
openclaw onboard) iopenclaw channels addwyswietlaja opcjonalne pluginy kanalow. - Wybranie Nostr powoduje monit o instalacje pluginu na zadanie.
Domyslne instalacji:
- Kanal dev + dostepny checkout git: uzywa lokalnej sciezki pluginu.
- Stable/Beta: pobiera z npm.
Mozesz zawsze nadpisac wybor w monicie.
Instalacja reczna
openclaw plugins install @openclaw/nostr
Uzyj lokalnego checkoutu (workflow dev):
openclaw plugins install --link <path-to-openclaw>/extensions/nostr
Zrestartuj Gateway po zainstalowaniu lub wlaczeniu pluginow.
Szybka konfiguracja
- Wygeneruj pare kluczy Nostr (jesli potrzeba):
# Uzywajac nak
nak key generate
- Dodaj do konfiguracji:
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}
- Eksportuj klucz:
export NOSTR_PRIVATE_KEY="nsec1..."
- Zrestartuj Gateway.
Referencja konfiguracji
| Klucz | Typ | Domyslnie | Opis |
|---|---|---|---|
privateKey | string | wymagany | Klucz prywatny w formacie nsec lub hex |
relays | string[] | ['wss://relay.damus.io', 'wss://nos.lol'] | Adresy URL przekaznikow (WebSocket) |
dmPolicy | string | pairing | Polityka dostepu DM |
allowFrom | string[] | [] | Dozwolone klucze publiczne nadawcow |
enabled | boolean | true | Wlacz/wylacz kanal |
name | string | - | Nazwa wyswietlana |
profile | object | - | Metadane profilu NIP-01 |
Metadane profilu
Dane profilu sa publikowane jako zdarzenie NIP-01 kind:0. Mozesz nimi zarzadzac z interfejsu sterowania (Channels -> Nostr -> Profile) lub ustawic bezposrednio w konfiguracji.
Przyklad:
{
"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": "[email protected]",
"lud16": "[email protected]"
}
}
}
}
Uwagi:
- Adresy URL profilu musza uzywac
https://. - Importowanie z przekaznikow laczy pola i zachowuje lokalne nadpisania.
Kontrola dostepu
Polityki DM
- pairing (domyslnie): nieznani nadawcy otrzymuja kod parowania.
- allowlist: tylko klucze publiczne w
allowFrommoga pisac DM. - open: publiczne przychodzace DM (wymaga
allowFrom: ["*"]). - disabled: ignoruj przychodzace DM.
Przyklad listy dozwolonych
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"dmPolicy": "allowlist",
"allowFrom": ["npub1abc...", "npub1xyz..."]
}
}
}
Formaty kluczy
Akceptowane formaty:
- Klucz prywatny:
nsec...lub 64-znakowy hex - Klucze publiczne (
allowFrom):npub...lub hex
Przekazniki
Domyslne: relay.damus.io i nos.lol.
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": ["wss://relay.damus.io", "wss://relay.primal.net", "wss://nostr.wine"]
}
}
}
Wskazowki:
- Uzyj 2-3 przekaznikow dla redundancji.
- Unikaj zbyt wielu przekaznikow (opoznienie, duplikacja).
- Platne przekazniki moga poprawic niezawodnosc.
- Lokalne przekazniki sa odpowiednie do testow (
ws://localhost:7777).
Obsluga protokolu
| NIP | Status | Opis |
|---|---|---|
| NIP-01 | Obslugiwany | Podstawowy format zdarzen + metadane profilu |
| NIP-04 | Obslugiwany | Zaszyfrowane DM (kind:4) |
| NIP-17 | Planowany | DM w opakowaniu prezentowym |
| NIP-44 | Planowany | Wersjonowane szyfrowanie |
Testowanie
Lokalny przekaznik
# Uruchom strfry
docker run -p 7777:7777 ghcr.io/hoytech/strfry
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": ["ws://localhost:7777"]
}
}
}
Test reczny
- Zanotuj klucz publiczny bota (npub) z logow.
- Otworz klienta Nostr (Damus, Amethyst itp.).
- Wyslij DM na klucz publiczny bota.
- Zweryfikuj odpowiedz.
Rozwiazywanie problemow
Brak odbierania wiadomosci
- Zweryfikuj, czy klucz prywatny jest prawidlowy.
- Upewnij sie, ze adresy URL przekaznikow sa osiagalne i uzywaja
wss://(lubws://dla lokalnych). - Potwierdz, ze
enablednie jest ustawione nafalse. - Sprawdz logi Gateway pod katem bledow polaczenia z przekaznikiem.
Brak wysylania odpowiedzi
- Sprawdz, czy przekaznik akceptuje zapisy.
- Zweryfikuj lacznosc wychodzaca.
- Obserwuj limity szybkosci przekaznikow.
Zduplikowane odpowiedzi
- Oczekiwane przy uzywaniu wielu przekaznikow.
- Wiadomosci sa deduplikowane wedlug ID zdarzenia; tylko pierwsze dostarczenie wyzwala odpowiedz.
Bezpieczenstwo
- Nigdy nie commituj kluczy prywatnych.
- Uzywaj zmiennych srodowiskowych dla kluczy.
- Rozważ
allowlistdla botow produkcyjnych.
Ograniczenia (MVP)
- Tylko wiadomosci bezposrednie (brak czatow grupowych).
- Brak zalacznikow mediow.
- Tylko NIP-04 (NIP-17 gift-wrap planowany).