Troubleshooting FAQ
Solutions to common Synapse problems — auth, network, data, deployment.
Troubleshooting FAQ
Solutions to common Synapse problems.
I can't login
Symptoms
POST /loginreturns 401- "Invalid email or password"
Solutions
- Verify email is correct — case sensitive
- Check password — minimum 6 characters
- Register first if you don't have an account:
POST /register - Reset password (if SMTP configured) via the web UI
I lost my Mind Key
Symptoms
- Cannot access memories
- Mind Key was deleted/lost
Solutions
Mind Keys cannot be recovered. You must:
- Login to get JWT:
POST /login - List minds:
GET /minds(with JWT) - Create new mind:
POST /minds - Save new Mind Key
- (Optional) Delete old mind:
DELETE /minds/:id
Data in the old mind is lost unless you can find the Mind Key.
API calls return 401
Symptoms
- All API calls return 401 Unauthorized
- "Mind Key fehlt oder ungültig"
Solutions
- Verify header format:
Authorization: Bearer mk_... - Check Mind Key starts with
mk_(noteyJwhich is JWT) - Test directly:
curl -H "Authorization: Bearer mk_YOUR_KEY" \ https://synapse.schaefer.zone/memory/recall - Mind Key may be revoked — create a new mind
See Authentication.
API calls return 404
Symptoms
- 404 Not Found
- "Route not found"
Solutions
Don't guess endpoint paths. Only paths in `GET /endpoints` exist.
- Check valid endpoints:
curl https://synapse.schaefer.zone/endpoints - Compare URL exactly — case sensitive, no trailing slashes
- Check HTTP method —
GET /memoryvsPOST /memoryare different
API calls return 429
Symptoms
- 429 Too Many Requests
- "Rate limit exceeded"
Solutions
- Switch to header auth (no rate limit):
# Don't curl ".../memory/recall?key=mk_..." # Do curl -H "Authorization: Bearer mk_..." .../memory/recall - Wait
Retry-Afterseconds if you must use?key=
See Rate Limits.
Memory search returns no results
Symptoms
GET /memory/search?q=...returns empty- Know memories exist
Solutions
- Verify memories exist:
GET /memory/recall - Check search syntax — FTS5 has specific syntax
- Try simpler query —
?q=dockerinstead of?q=docker+swarm+deployment - Use semantic search for conceptual queries:
GET /memory/semantic-search?q=...
See FTS5 Search.
Memories are not persisting
Symptoms
- POST /memory returns success
- GET /memory/recall doesn't show them
Solutions
- Verify same Mind Key — different keys = different minds
- Check response — POST returns
{ "id": "mem_...", "status": "stored" } - Try GET /memory (JSON list) instead of /memory/recall (text)
- Check filter —
?category=or?tag=may be hiding them
Tools not appearing in Claude Desktop
Symptoms
- Claude Desktop shows 0 tools
- No 🔌 icon
Solutions
- Restart Claude Desktop fully (Cmd+Q)
- Verify config file is valid JSON
- Check Node.js 18+ installed
- Run MCP manually:
npx -y synapse-mcp-api@latest - Check logs:
~/Library/Logs/Claude/mcp.log
See MCP Troubleshooting.
Synapse is offline
Symptoms
- Cannot reach synapse.schaefer.zone
- curl times out
Solutions
- Check your internet — try another site
- Check Synapse health:
curl https://synapse.schaefer.zone/health - Wait — may be temporary outage or deployment
- Check status page (if available)
For self-hosted: check Docker container status, database connection.
Database errors
Symptoms
- 500 Internal Server Error
- "Database connection failed"
Solutions
For self-hosted:
- Check PostgreSQL running:
docker ps | grep postgres - Check DATABASE_URL in env
- Check migrations:
npm run migrate:check - Check disk space:
df -h
For hosted: report to support.
Webhook not firing
Symptoms
- Registered webhook but not receiving callbacks
- No POST to your URL
Solutions
- Verify URL is reachable:
curl -X POST your-url -d '{}' - Check events filter —
memory.*matches all memory events - Test webhook:
POST /webhooks/:id/test - Check webhook is enabled:
GET /webhooks/:id - Verify SSL — Synapse requires valid HTTPS for webhook URLs
See Webhooks API.
Cron job not running
Symptoms
- Created cron job but it's not firing
next_runnot updating
Solutions
- Check schedule syntax — must be valid 5-field cron OR integer seconds
- Verify endpoint is allowed — must be http(s), no private IPs
- Check job is enabled:
GET /cron - Wait for next scheduled time — cron isn't instant
See Cron & Scheduler.
Need More Help?
- Check existing docs: https://synapse.schaefer.zone/docs
- Search docs:
GET /docs/search?q=your+question - Open issue: https://gitlab.com/schaefer-services/synapse/-/issues
- Contact: see
/supportpage