Skip to main content
Glama

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 (Authorization: Nostr <event>)

🔜 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.com

Fortschrittsprotokolle 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.key erzeugt (Modus 0600).

  • Identität pro Dienst: linkingPriv = HMAC-SHA256(master, serviceDomain). Gleiche Domain → gleiche npub; verschiedene Domains → verschiedene npubs (Privatsphäre).

  • --single-key teilt eine Identität über alle Dienste hinweg.

  • --generate überschreibt das Master-Secret. Pfad überschreiben mit --keyfile/--keyout oder der Umgebungsvariable NOSTR_AUTH_KEYFILE.

Protokoll (NIP-07-Stil)

  1. Challenge → Ereignis (standardmäßig kind 22242) mit challenge- und optionalen relay-Tags.

  2. NIP-01-ID: sha256(JSON.stringify([0, pubkey, created_at, kind, tags, content])).

  3. BIP-340-Schnorr-Signierung der rohen 32-Byte-ID → 64-Byte-Hex-sig.

  4. 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-agents

  • npm: npm i -g nostr-auth → nostr-auth nip07 ...

Selbsttest (offline, kostenlos)

npm ci
npm test

Ein 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 suite

Lizenz

MIT – siehe LICENSE. Nur Authentifizierung: Dieses Projekt verwahrt niemals Gelder, veröffentlicht niemals Notizen und verbindet sich von sich aus nie mit einem Relay.

Related MCP Connectors

Related MCP Servers