nostr-auth
nostr-auth-agents
Вход через Nostr для LLM-кодинг-агентов — только аутентификация, без кошелька, без расширения браузера, без аккаунта на реле.
Агенту (Claude Code, OpenCode, OpenClaw, Codex, Cursor, ...) передаётся шаблон вызова или события "Sign in with Nostr". Этот репозиторий подписывает его ключом secp256k1 (BIP-340 schnorr), полученным из локального мастер-секрета, и при необходимости отправляет подпись в колбэк сервиса.
Ноль зависимостей npm в рантайме: чистый BigInt secp256k1/schnorr + node:crypto. Запускается из чистого клона.
Методы
Метод | Статус | Примечания |
NIP-07 вход (подписание события-вызова) | ✅ v1.0.0 | Повторяет UX LNURL-auth |
NIP-98 HTTP Auth ( | 🔜 planned | следующий |
NIP-42 relay AUTH (websocket) | 🔜 planned | |
NIP-05 разрешение идентификаторов | 🔜 planned |
Related MCP server: Alby Bitcoin Payments MCP Server
Использование
# 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Журналы выполнения идут в stderr; результаты (JSON) — в stdout. Коды выхода: 0 — принято, 1 — ошибка клиента, 2 — неправильное использование, 3 — сервер ERROR, 4 — ответ колбэка не в JSON.
Управление ключами
При первом запуске создаётся 32-байтовый мастер-секрет в
~/.config/nostr-auth/master.key(режим0600).Идентичность для каждого сервиса:
linkingPriv = HMAC-SHA256(master, serviceDomain). Один и тот же домен → один и тот же npub; разные домены → разные npub (конфиденциальность).--single-keyиспользует одну идентичность во всех сервисах.--generateперезаписывает мастер-секрет. Путь можно переопределить с помощью--keyfile/--keyoutили переменной окруженияNOSTR_AUTH_KEYFILE.
Протокол (в стиле NIP-07)
Вызов → событие (по умолчанию kind
22242) с тегамиchallengeи опциональнымrelay.NIP-01 id:
sha256(JSON.stringify([0, pubkey, created_at, kind, tags, content])).Подписать BIP-340 schnorr сырой 32-байтовый id → 64-байтовый hex
sig.POST
{"event": {...}}в колбэк →{"status":"OK"}/{"status":"ERROR","reason":"..."}.
Полная документация для агентов — в SKILL.md.
MCP-сервер
MCP-сервер stdio без зависимостей (mcp/server.js), предоставляющий инструменты nostr_nip07_sign / nostr_nip07_pubkey:
{
"mcpServers": {
"nostr-auth": { "command": "node", "args": ["mcp/server.js"] }
}
}Включены манифесты плагинов для Claude Code (.claude-plugin/), Codex, Cursor и для обнаружения в skills.sh (skills.sh.json). Статус распространения по платформам — в PUBLISHING.md.
Установка как навык агента (по платформам)
Claude Code / любой MCP-клиент: поместите репозиторий в каталог навыков, используйте
SKILL.md+.mcp.json.OpenClaw / ClawHub:
skills/nostr-auth/— автономный пакет (SKILL.md+scripts/nostr_auth.js, без npm-зависимостей).skills.sh (Vercel):
npx skills add dyegolara/nostr-auth-agentsnpm:
npm i -g nostr-auth→nostr-auth nip07 ...
Самотест (офлайн, бесплатно)
npm ci
npm testЛокальный mock-сервис "Sign in with Nostr" (mock_server.js) проверяет полный цикл вызов → подпись → отправка → проверка, отклонение повторов, безопасность dry-run, стабильность идентичности для каждого домена и переносимый пакет навыка.
Структура проекта
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Лицензия
MIT — см. LICENSE. Только аутентификация: этот проект никогда не хранит средства, не публикует заметки и сам не подключается к реле.
This server cannot be installed
Maintenance
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
- AlicenseBqualityFmaintenanceConnects a Bitcoin Lightning wallet to your LLM using Nostr Wallet Connect, enabling payment functionalities within language models like Claude.6915MIT
- Alicense-qualityDmaintenanceEnables Bitcoin Lightning wallet integration with LLMs through Nostr Wallet Connect (NWC). Supports lightning payments, LNURL operations, and L402 authentication for AI-powered bitcoin transactions.28Apache 2.0
- AlicenseCqualityCmaintenance23 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 graph23201MIT
- AlicenseAqualityCmaintenancePersistent 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
Related MCP Connectors
Agent registry with Nostr identity, reputation, escrow, observability, and Lightning payments.
Keyless non-custodial crypto payments for AI agents: payment links and tip jars, no API key.
Helps AI coding agents integrate MetaMask Embedded Wallets (Web3Auth) SDKs.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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