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

A
license - permissive license
-
quality - not tested
-
maintenance - not tested

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dyegolara/nostr-auth-agents'

If you have feedback or need assistance with the MCP directory API, please join our Discord server