Skip to main content

Autenticação e Mind Keys

Como funciona a autenticação do Synapse: Mind Keys para agentes, JWTs para humanos, ?key= desabilitado por padrão (somente Bearer, AUTH_QUERY_KEY_MODE=deny).


Autenticação e Mind Keys

O Synapse usa dois métodos de autenticação, cada um otimizado para um caso de uso diferente. Entender a diferença é essencial para construir integrações confiáveis.

Dois métodos de auth

Método Caso de uso Limite de taxa Expiração
Mind Key Agentes LLM, ferramentas automatizadas 120/min (Bearer externo); ?key= desabilitado por padrão (deny) Nunca
JWT Interface humana, operações de conta 120/min (IPs externos) 7 dias

Mind Key (para agentes)

Uma Mind Key é um token de API com escopo de tenant. Ele autentica os dados de um único mind (memórias, tarefas, chat, scripts, etc.). Use para:

  • Agentes LLM chamando a API
  • Scripts de automação em background
  • Configuração do servidor MCP
  • Qualquer integração de longa duração

Autenticação por cabeçalho (recomendada)

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

Parâmetro de consulta (desabilitado por padrão)

curl https://synapse.schaefer.zone/memory/recall?key=mk_yourMindKeyHere
O parâmetro de consulta `?key=` está **desabilitado** pelo padrão endurecido `AUTH_QUERY_KEY_MODE=deny`: o servidor responde a `?key=` com 401 e a dica "Query-param auth (?key=) is disabled". Somente Bearer é o padrão seguro (SSOT: `src/lib/auth.ts`). Somente se um operador definir explicitamente `AUTH_QUERY_KEY_MODE=allow`, `?key=` funciona como válvula de transição com 60 req/min (por IP). Clientes Bearer externos obtêm 120 req/min por identidade; redes internas confiáveis são ilimitadas.

Criando uma 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"}'

A resposta inclui mind_key — salve-a imediatamente, ela é exibida apenas uma vez.

Listando seus minds

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

Excluindo um mind (irreversível!)

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

JWT (para humanos)

JWTs autenticam a conta do usuário, não um mind específico. Use-os para:

  • Registro e login de conta
  • Criar / listar / excluir minds
  • Compartilhar minds com outros usuários
  • Gerenciamento de assinaturas Web Push

Registrar

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

Retorna: { "jwt": "eyJ...", "user": {...} }

Login

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

Retorna: { "jwt": "eyJ...", "user": {...} }

Expiração do JWT

JWTs expiram após 7 dias. Quando um JWT expira, basta chamar /login novamente para obter um novo. A Mind Key nunca expira, então integrações de agentes existentes continuam funcionando.

Melhores práticas de segurança

Padrão de variável de ambiente

# .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}` },
});

Configuração do servidor MCP

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

Padrão multi-mind

Cada usuário pode ter múltiplos minds. Padrões comuns:

Nome do mind Finalidade
work Memórias relacionadas ao trabalho
personal Preferências pessoais, família
project-synapse Contexto de projeto específico
learning-german Progresso de aprendizado
assistant-default Fallback de propósito geral

Use Mind Keys diferentes para sessões LLM diferentes para manter contextos isolados.

Limites de taxa

Método de auth Limite Escopo
Mind Key (header) 120/min de IPs externos (por identidade); ilimitado para redes internas confiáveis Por mind
Mind Key (?key=, somente com allow) 60/min Por IP
JWT (header) 120 req/min (IPs externos; ilimitado para redes internas confiáveis) Por usuário
Endpoints públicos Nenhum Global

Cabeçalhos de limite de taxa (X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After) são incluídos nas respostas quando aplicável.

Próximos passos