Skip to main content

Аутентификация и Mind Key

Как работает аутентификация в Synapse: Mind Key для агентов, JWT для людей, ?key= отключён по умолчанию (только Bearer, AUTH_QUERY_KEY_MODE=deny).


Аутентификация и Mind Key

Synapse использует два способа аутентификации, каждый оптимизирован под свой сценарий. Понимание различий необходимо для создания надёжных интеграций.

Два способа аутентификации

Способ Сценарий Лимит запросов Срок действия
Mind Key LLM-агенты, автоматизированные инструменты 120/мин (внешний Bearer); ?key= отключён по умолчанию (deny) Бессрочно
JWT Человеко-ориентированный UI, операции с аккаунтом 120/мин (внешние IP) 7 дней

Mind Key (для агентов)

Mind Key — это токен API с областью действия на арендатора. Он аутентифицирует данные одного mind (воспоминания, задачи, чат, скрипты и т. д.). Используйте его для:

  • LLM-агентов, вызывающих API
  • Фоновых скриптов автоматизации
  • Конфигурации MCP-сервера
  • Любой долгоживущей интеграции

Аутентификация через заголовок (рекомендуется)

curl -H "Authorization: Bearer mk_yourMindKeyHere" \
     https://synapse.schaefer.zone/memory/recall

Через query-параметр (отключён по умолчанию)

curl https://synapse.schaefer.zone/memory/recall?key=mk_yourMindKeyHere
Query-параметр `?key=` **отключён** усиленным значением по умолчанию `AUTH_QUERY_KEY_MODE=deny`: сервер отвечает на `?key=` ошибкой 401 и подсказкой "Query-param auth (?key=) is disabled". Только Bearer — безопасное значение по умолчанию (SSOT: `src/lib/auth.ts`). Только если оператор явно установит `AUTH_QUERY_KEY_MODE=allow`, `?key=` работает как переходный клапан с 60 req/min (на IP). Внешние Bearer-клиенты получают 120 req/min на идентичность; доверенные внутренние сети — без ограничений.

Создание Mind Key

curl -X POST https://synapse.schaefer.zone/minds \
  -H "Authorization: Bearer YOUR_JWT" \
  -H "Content-Type: application/json" \
  -d '{"name": "Work Mind", "description": "Project memories"}'

Ответ включает mind_key — сохраните его немедленно, он показывается только один раз.

Получение списка своих mind

curl -H "Authorization: Bearer YOUR_JWT" \
     https://synapse.schaefer.zone/minds

Удаление mind (необратимо!)

curl -X DELETE -H "Authorization: Bearer YOUR_JWT" \
     https://synapse.schaefer.zone/minds/m_xyz789

JWT (для людей)

JWT аутентифицирует аккаунт пользователя, а не конкретный mind. Используйте их для:

  • Регистрации и входа в аккаунт
  • Создания / получения списка / удаления mind
  • Передачи mind другим пользователям
  • Управления подписками Web Push

Регистрация

curl -X POST https://synapse.schaefer.zone/register \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com", "password": "secret"}'

Возвращает: { "jwt": "eyJ...", "user": {...} }

Вход

curl -X POST https://synapse.schaefer.zone/login \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com", "password": "secret"}'

Возвращает: { "jwt": "eyJ...", "user": {...} }

Срок действия JWT

JWT истекает через 7 дней. После истечения просто вызовите /login снова, чтобы получить новый. Mind Key не истекает, поэтому существующие интеграции агентов продолжают работать.

Лучшие практики безопасности

Паттерн переменных окружения

# .env (NEVER commit this file)
SYNAPSE_MIND_KEY=mk_yourMindKeyHere
SYNAPSE_URL=https://synapse.schaefer.zone
// Node.js
const mindKey = process.env.SYNAPSE_MIND_KEY;
const url = process.env.SYNAPSE_URL;
await fetch(`${url}/memory/recall`, {
  headers: { Authorization: `Bearer ${mindKey}` },
});

Конфигурация MCP-сервера

{
  "mcpServers": {
    "synapse": {
      "command": "npx",
      "args": ["-y", "synapse-mcp-api@latest"],
      "env": {
        "SYNAPSE_MIND_KEY": "mk_yourMindKeyHere",
        "SYNAPSE_URL": "https://synapse.schaefer.zone"
      }
    }
  }
}

Паттерн нескольких mind

У каждого пользователя может быть несколько mind. Типовые паттерны:

Имя mind Назначение
work Рабочие воспоминания
personal Личные предпочтения, семья
project-synapse Контекст конкретного проекта
learning-german Прогресс обучения
assistant-default Универсальный fallback

Используйте разные Mind Key в разных LLM-сессиях, чтобы контексты были изолированы.

Лимиты запросов

Способ аутентификации Лимит Область
Mind Key (заголовок) 120/мин с внешних IP (на одну идентичность); без ограничений для доверенных внутренних сетей На mind
Mind Key (?key=, только при allow) 60/мин На IP
JWT (заголовок) 120 запр./мин (внешние IP; без ограничений для доверенных внутренних сетей) На пользователя
Публичные эндпоинты Нет Глобально

Заголовки лимитов (X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After) включаются в ответы при применимости.

Следующие шаги