Skip to main content
Glama

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

🔜 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)

  1. Вызов → событие (по умолчанию kind 22242) с тегами challenge и опциональным relay.

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

  3. Подписать BIP-340 schnorr сырой 32-байтовый id → 64-байтовый hex sig.

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

  • npm: npm i -g nostr-authnostr-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. Только аутентификация: этот проект никогда не хранит средства, не публикует заметки и сам не подключается к реле.

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