Skip to main content

Authenticatie & Mind Keys

Hoe Synapse-authenticatie werkt: Mind Keys voor agents, JWT's voor mensen, ?key= standaard uitgeschakeld (alleen Bearer, AUTH_QUERY_KEY_MODE=deny).


Authenticatie & Mind Keys

Synapse gebruikt twee authenticatiemethoden, elk geoptimaliseerd voor een ander doel. Het verschil begrijpen is essentieel voor het bouwen van betrouwbare integraties.

Twee auth-methoden

Methode Gebruik Ratelimit Verval
Mind Key LLM-agents, geautomatiseerde tools 120/min (externe Bearer); ?key= standaard uitgeschakeld (deny) Nooit
JWT Mensgerichte UI, account-operaties 120/min (externe IP's) 7 dagen

Mind Key (voor agents)

Een Mind Key is een tenant-scoped API-token. Het authenticeert de data van één mind (herinneringen, taken, chat, scripts, enz.). Gebruik het voor:

  • LLM-agents die de API aanroepen
  • Achtergrond-automatiseringsscripts
  • MCP-server-configuratie
  • Elke langlevende integratie

Header-authenticatie (aanbevolen)

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

Queryparameter (standaard uitgeschakeld)

curl https://synapse.schaefer.zone/memory/recall?key=mk_yourMindKeyHere
De `?key=`-queryparameter is **uitgeschakeld** door de geharde standaardwaarde `AUTH_QUERY_KEY_MODE=deny`: de server antwoordt op `?key=` met 401 en de hint "Query-param auth (?key=) is disabled". Alleen Bearer is de veilige standaard (SSOT: `src/lib/auth.ts`). Alleen als een operator expliciet `AUTH_QUERY_KEY_MODE=allow` instelt, werkt `?key=` als overgangsklep met 60 req/min (per IP). Externe Bearer-clients krijgen 120 req/min per identiteit; vertrouwde interne netwerken zijn onbeperkt.

Een Mind Key aanmaken

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

De respons bevat mind_key — sla deze onmiddellijk op, deze wordt slechts één keer getoond.

Uw minds tonen

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

Een mind verwijderen (onomkeerbaar!)

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

JWT (voor mensen)

JWT's authenticeren het gebruikersaccount, niet een specifieke mind. Gebruik ze voor:

  • Accountregistratie en login
  • Minds aanmaken/tonen/verwijderen
  • Minds delen met andere gebruikers
  • Web Push-abonnementsbeheer

Registreren

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

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

Inloggen

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

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

JWT-verval

JWT's vervallen na 7 dagen. Wanneer een JWT vervalt, roept u gewoon opnieuw /login aan om een verse te krijgen. De Mind Key vervalt nooit, dus bestaande agent-integraties blijven werken.

Beveiligings-best-practices

Omgevingsvariabele-patroon

# .env (NOOIT dit bestand committen)
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-server-config

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

Multi-mind-patroon

Elke gebruiker kan meerdere minds hebben. Veelvoorkomende patronen:

Mind-naam Doel
work Werkgerelateerde herinneringen
personal Persoonlijke voorkeuren, familie
project-synapse Specifieke projectcontext
learning-german Leervoortgang
assistant-default Algemene fallback

Gebruik verschillende Mind Keys voor verschillende LLM-sessies om contexten gescheiden te houden.

Ratelimits

Auth-methode Limiet Bereik
Mind Key (header) 120/min vanaf externe IP's (per identiteit); onbeperkt voor vertrouwde interne netwerken Per-mind
Mind Key (?key=, alleen met allow) 60/min Per-IP
JWT (header) 120 req/min (externe IP's; onbeperkt voor vertrouwde interne netwerken) Per-gebruiker
Openbare eindpunten Geen Globaal

Ratelimit-headers (X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After) worden in responsen opgenomen waar van toepassing.

Volgende stappen