nostr-auth
nostr-auth-agents
Nostr-Anmeldung für LLM-Coding-Agenten – nur Authentifizierung, keine Wallet, keine Browser-Erweiterung, kein Relay-Konto.
Ein Agent (Claude Code, OpenCode, OpenClaw, Codex, Cursor, ...) erhält eine „Sign in with Nostr“-Challenge oder Ereignisvorlage. Dieses Repository signiert sie mit einem secp256k1- (BIP-340-Schnorr-) Schlüssel, der aus einem lokalen Master-Secret abgeleitet wird, und übermittelt die Signatur optional an den Service-Callback.
Null npm-Laufzeitabhängigkeiten: reines BigInt-secp256k1/schnorr + node:crypto. Startet aus einem sauberen Klon.
Methoden
Methode | Status | Hinweise |
NIP-07-Anmeldung (Signieren von Challenge-Ereignissen) | ✅ v1.0.0 | Spiegelt die LNURL-auth-UX wider |
NIP-98 HTTP-Auth ( | 🔜 geplant | als Nächstes |
NIP-42-Relay-AUTH (Websocket) | 🔜 geplant | |
NIP-05-Identifikatorauflösung | 🔜 geplant |
Related MCP server: Alby Bitcoin Payments MCP Server
Verwendung
# Sign a classic kind-22242 sign-in challenge and submit it
node nostr_auth.js nip07 --challenge "<hex>" \
--relay "wss://relay.example.com" \
--domain example.com \
--callback "https://site.example.com/verify"
# Dry-run: sign but don't submit (inspect first)
node nostr_auth.js nip07 --challenge "<hex>" --dry-run --json
# Sign an arbitrary event template (what window.nostr.signEvent would do)
node nostr_auth.js nip07 '{"kind":22242,"tags":[["challenge","<hex>"]],"content":""}'
# Print the derived identity (hex pubkey + npub)
node nostr_auth.js nip07 pubkey --domain example.comFortschrittsprotokolle gehen an stderr; Ergebnisse (JSON) an stdout. Exit-Codes: 0 akzeptiert, 1 Client-Fehler, 2 Verwendung, 3 Server-ERROR, 4 Nicht-JSON-Callback-Antwort.
Schlüsselverwaltung
Beim ersten Lauf wird ein 32-Byte-Master-Secret unter
~/.config/nostr-auth/master.keyerzeugt (Modus0600).Identität pro Dienst:
linkingPriv = HMAC-SHA256(master, serviceDomain). Gleiche Domain → gleiche npub; verschiedene Domains → verschiedene npubs (Privatsphäre).--single-keyteilt eine Identität über alle Dienste hinweg.--generateüberschreibt das Master-Secret. Pfad überschreiben mit--keyfile/--keyoutoder der UmgebungsvariableNOSTR_AUTH_KEYFILE.
Protokoll (NIP-07-Stil)
Challenge → Ereignis (standardmäßig kind
22242) mitchallenge- und optionalenrelay-Tags.NIP-01-ID:
sha256(JSON.stringify([0, pubkey, created_at, kind, tags, content])).BIP-340-Schnorr-Signierung der rohen 32-Byte-ID → 64-Byte-Hex-
sig.POST
{"event": {...}}an den Callback →{"status":"OK"}/{"status":"ERROR","reason":"..."}.
Siehe SKILL.md für die vollständige Dokumentation für Agenten.
MCP-Server
MCP-Server mit Null-Abhängigkeiten über stdio (mcp/server.js), der die Tools nostr_nip07_sign / nostr_nip07_pubkey bereitstellt:
{
"mcpServers": {
"nostr-auth": { "command": "node", "args": ["mcp/server.js"] }
}
}Plugin-Manifeste für Claude Code (.claude-plugin/), Codex, Cursor und die Auffindbarkeit über skills.sh (skills.sh.json) sind enthalten. Siehe PUBLISHING.md für den Veröffentlichungsstatus pro Plattform.
Als Agent-Skill installieren (pro Plattform)
Claude Code / jeder MCP-Client: Lege das Repository in dein Skills-Verzeichnis und verwende
SKILL.md+.mcp.json.OpenClaw / ClawHub:
skills/nostr-auth/ist ein autonomes Paket (SKILL.md+scripts/nostr_auth.js, null npm-Abhängigkeiten).skills.sh (Vercel):
npx skills add dyegolara/nostr-auth-agentsnpm:
npm i -g nostr-auth→nostr-auth nip07 ...
Selbsttest (offline, kostenlos)
npm ci
npm testEin lokaler Mock-Dienst „Sign in with Nostr“ (mock_server.js) validiert den Challenge→Signieren→Senden→Verifizieren-Roundtrip, die Ablehnung von Replays, die Sicherheit des Dry-Run, die Identitätsstabilität pro Domain und das portable Skill-Paket.
Projektstruktur
nostr_auth.js CLI (bin "nostr-auth")
lib/ key mgmt, BIP-340 schnorr, NIP-01 events, NIP-07 flow
mcp/server.js zero-dep MCP server (stdio)
mock_server.js local sign-in mock for tests
skills/nostr-auth/ portable OpenClaw/ClawHub skill bundle
contrib/anthropics/ educational skill variant for anthropics/skills
test/ vitest suiteLizenz
MIT – siehe LICENSE. Nur Authentifizierung: Dieses Projekt verwahrt niemals Gelder, veröffentlicht niemals Notizen und verbindet sich von sich aus nie mit einem Relay.
This server cannot be deployed
Maintenance
Related MCP Connectors
Agent registry with Nostr identity, reputation, escrow, observability, and Lightning payments.
Secure durable memory and bounded context for AI agents, with hosted OAuth and local Lite support.
Keyless non-custodial crypto payments for AI agents: payment links and tip jars, no API key.
Hosted backend for AI agents: create projects with persistent collections and keys, no signup.
Related MCP Servers
- AlicenseBqualityFmaintenanceConnects a Bitcoin Lightning wallet to your LLM using Nostr Wallet Connect, enabling payment functionalities within language models like Claude.64 npm15MIT
- AlicenseNot gradedqualityDmaintenanceEnables Bitcoin Lightning wallet integration with LLMs through Nostr Wallet Connect (NWC). Supports lightning payments, LNURL operations, and L402 authentication for AI-powered bitcoin transactions.82 npmApache 2.0
- AlicenseCqualityDmaintenance23 tools for AI agents working with Nostr Open source. No API key. No account. NIP-46 remote signing Publish notes, reply, react, repost Encrypted DMs (NIP-04 + NIP-44) Fetch events, profiles, social graph239 npm1MIT
- AlicenseAqualityDmaintenancePersistent memory and payment safety for AI agents on Lightning. Enables agents to remember purchases, track vendor reputations, enforce budgets, and share trust signals via Nostr.229MIT