Synapse Mimarisi
Synapse nasıl inşa edilmiştir — Fastify, PostgreSQL, FTS5, gömmeler, MCP sunucusu.
Synapse Mimarisi
Synapse, Fastify, FTS5 ile PostgreSQL ve anlamsal arama için isteğe bağlı bir gömme hizmeti üzerine inşa edilmiş çok kiracılı bir bellek API'sidir.
Üst Düzey Mimari
┌──────────────────────────────────────────────────────────┐
│ Clients │
├──────────────┬──────────────┬──────────────┬─────────────┤
│ LLM Agents │ Web Browsers│ MCP Clients │ Webhooks │
│ (curl/SDK) │ (humans) │ (Claude/etc) │ (external) │
└──────┬───────┴──────┬───────┴──────┬───────┴──────┬──────┘
│ │ │ │
└──────────────┴──────────────┴──────────────┘
│
▼
┌───────────────────────────────┐
│ Synapse API (Fastify) │
│ port 12800 │
│ - REST endpoints │
│ - Auth (Mind Key / JWT) │
│ - Rate limiting │
│ - Static file serving │
└───────────────┬───────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ PostgreSQL │ │ Embeddings │ │ MCP Server │
│ + FTS5 │ │ Service │ │ (separate) │
│ │ │ (optional) │ │ port 13100 │
│ - memories │ │ │ │ │
│ - tasks │ │ - generate │ │ - 79 tools │
│ - chat │ │ embeddings│ │ - stdio/SSE │
│ - scripts │ │ │ │ - WebSocket │
└─────────────┘ └─────────────┘ └─────────────┘Çekirdek Bileşenler
1. Synapse API (Fastify)
Ana HTTP sunucusu. Şunları ele alır:
- REST uç noktaları (
/memory,/chat,/mind/tasksvb.) - Kimlik doğrulama (ajanlar için Mind Key, insanlar için JWT)
- Hız sınırlaması (yalnızca
?key=kimlik doğrulaması) - Statik dosya sunumu (
/human,/docsvb. web arayüzü) - Webhook dağıtımı
Performans için Fastify 5 ile inşa edilmiştir. Üretimde 12800 portunda çalışır.
2. FTS5 ile PostgreSQL
Birincil veri deposu. Tam metin arama için FTS5 uzantısına sahip PostgreSQL kullanır.
Önemli tablolar:
| Tablo | Amaç |
|---|---|
users |
Kullanıcı hesapları |
minds |
Mind kapsamları (her birinin bir Mind Key'i vardır) |
memories |
FTS5 sanal tablosuyla bellek kayıtları |
tasks |
Görev yönetimi |
chat_messages |
Sohbet geçmişi |
scripts |
Kalıcı betikler |
webhooks |
Webhook kayıtları |
cron_jobs |
Zamanlanmış görevler |
variables |
Anahtar-değer deposu |
audit_log |
Denetim izi |
FTS5, tüm bellek içeriğinde milisaniyenin altında tam metin arama sağlar. Detaylar için bkz. FTS5 Arama.
3. Gömme Hizmeti (İsteğe Bağlı)
Anlamsal arama için Synapse, bellek içeriğinin vektör gömmelerini üretir. Bunlar belleklerle birlikte saklanır ve benzerlik araması için kullanılır.
- Sağlayıcı: yapılandırılabilir (OpenAI, yerel model vb.)
memoriestablosundavectorsütunu olarak saklanır/memory/semantic-searchuç noktası tarafından kullanılır- Bkz. Anlamsal Arama
4. MCP Sunucusu (Ayrı Hizmet)
Synapse MCP sunucusu ayrı bir süreç (port 13100) olarak çalışır. Şunları yapar:
- Model Context Protocol üzerinden 79 araç sunar
- stdio, HTTP/SSE ve WebSocket taşıyıcılarını destekler
- MCP araç çağrılarını Synapse API çağrılarına çevirir
- Çok kiracılı: oturum başına bir Mind Key
5. Browser Proxy (Ayrı Hizmet)
Tarayıcı otomasyonu için, 13000 portunda Playwright tabanlı ayrı bir hizmet çalışır. MCP sunucusu bunu browser_* araçları için çağırabilir.
6. SSH Proxy (Ayrı Hizmet)
SSH tabanlı uzak komutlar için, 12900 portunda ayrı bir hizmet çalışır.
Çok Kiracılılık Modeli
User Account (email + password)
│
├── Mind 1 (Mind Key 1)
│ ├── Memories
│ ├── Tasks
│ ├── Chat
│ └── Scripts
│
├── Mind 2 (Mind Key 2)
│ └── ... (isolated from Mind 1)
│
└── Mind 3 (Mind Key 3)
└── ...Her mind tamamen izoledir. Mind Key'ler tam olarak bir mind'e erişim sağlar. JWT'ler kullanıcı hesabına erişim sağlar (mind'leri yönetmek için).
Detaylar için bkz. Çok Kiracılılık.
İstek Akışı
Bellek Saklama İsteği
1. Client sends POST /memory with Authorization: Bearer mk_xxx
2. Fastify receives request
3. Auth middleware validates Mind Key, attaches mind_id to request
4. Memory route handler:
a. Validate JSON body (zod schema)
b. Insert into memories table
c. Update FTS5 index
d. (Async) Generate embedding if embeddings enabled
e. Trigger webhooks for memory.store event
5. Return { id, status: "stored" }Bellek Arama İsteği
1. Client sends GET /memory/search?q=docker
2. Auth middleware validates Mind Key
3. Memory route handler:
a. Parse query (FTS5 syntax)
b. Execute FTS5 MATCH against memories table
c. Filter by mind_id (tenant isolation)
d. Rank by relevance
e. Return resultsDağıtım
Synapse bir Docker konteyneri olarak dağıtılır. Bkz. docker-compose.yml:
services:
synapse:
image: registry.gitlab.com/schaefer-services/synapse:latest
ports:
- "12800:12800"
environment:
- DATABASE_URL=postgres://...
- JWT_SECRET=...
- SYNAPSE_HOST=0.0.0.0
- SYNAPSE_PORT=12800
depends_on:
- postgres
postgres:
image: postgres:16
volumes:
- pgdata:/var/lib/postgresql/data
environment:
- POSTGRES_DB=synapse
- POSTGRES_PASSWORD=...Performans Karakteristikleri
| İşlem | Gecikme | Verim |
|---|---|---|
| Bellek saklama | ~5ms | 1000+ istek/sn |
| Bellek geri çağırma | ~20ms | 500 istek/sn |
| FTS5 arama | ~10ms | 800 istek/sn |
| Anlamsal arama | ~50ms | 200 istek/sn |
| Sohbet poll | ~5ms | 2000 istek/sn |