Real numbers from Kronvex's pgvector infrastructure — latency, precision, and throughput at scale.
Measured on a public dataset of 200 query/memory pairs across 4 types. Methodology & dataset →
Last run: 2026-04-06 · Dataset: 200 pairs · Open source methodology
Measured from HTTP request received at Railway (EU West) to response sent. Includes Supabase query round-trip and embedding lookup where applicable. p50 / p95 / p99 over rolling 7-day window.
| Operation | p50 (median) | p95 | p99 | Notes |
|---|---|---|---|---|
|
POST /recall
Top-5 memories, cosine similarity
|
HNSW index scan + confidence scoring | |||
|
POST /inject-context
Recall + prompt assembly
|
Includes system prompt injection overhead | |||
|
POST /remember
Write + embed + store
|
OpenAI embedding call is the dominant cost | |||
|
GET /agents
List all agents for API key
|
Simple indexed lookup, no embedding |
Raw cosine similarity misses two signals that matter for agents: how recent a memory is, and how often it's been accessed. Kronvex combines all three into a single composite score.
Memory #1 wins even though #2 might have slightly higher semantic match — because it is recent and frequently accessed.
Most memory APIs store a single type of fact. Kronvex handles semantic, episodic, and procedural memory with the same three endpoints.
| Memory type | Examples | Kronvex | Mem0 | Zep |
|---|---|---|---|---|
| Semantic | Facts, preferences, entity attributes | ✓ Native | ✓ Native | ✓ Native |
| Episodic | Past events, sessions, conversation history | ✓ Native | ~ Via SDK | ✓ Native |
| Procedural | Workflows, rules, operating instructions | ✓ Native | ✗ Not supported | ~ Manual tagging |
| Conflict handling | Detect and resolve contradictory memories | ✓ Confidence-based | ~ Graph dedup | ✗ Manual |
| GDPR erasure | DELETE /agents/{id} — wipes all memories | ✓ One API call | ~ Enterprise tier | ~ Enterprise tier |
Factual comparison based on publicly available documentation (April 2026). Always verify current pricing directly with each vendor.
| Feature | Kronvex | Mem0 | Zep |
|---|---|---|---|
| Recall latency (p50) | <45ms | ~50–100ms | ~40–120ms |
| Memory types | ✓ Semantic + Episodic + Procedural | Semantic + Episodic | Semantic + Episodic |
| EU data hosting | ✓ Frankfurt (default, always) | ✗ US by default | ~ Self-host or Enterprise |
| API surface | REST API + Python & Node SDK | ~12 SDK methods | REST + GraphQL |
| Pricing model | Flat monthly plans from €29 | Usage tiers + overages | Usage-based + self-host |
| Conflict handling | ✓ Confidence-based ranking | ~ Graph deduplication | ✗ Manual resolution |
| GDPR erasure API | ✓ DELETE /agents/{id} | ~ Enterprise tier | ~ Enterprise / self-host |
| SDK required | ✓ No — plain HTTP | ✗ SDK strongly recommended | ~ SDK or REST |
| Embedding model | text-embedding-3-small (1536d) | Configurable | Configurable |
Every architectural decision was made with latency and data sovereignty in mind.
PostgreSQL 15 hosted in Frankfurt, Germany. All memory data never leaves the EU. Async connection pool with asyncpg for maximum throughput.
Hierarchical Navigable Small World indexing over 1536-dimensional embeddings. Approximate nearest-neighbor search with sub-50ms recall at production scale.
1536-dimensional dense embeddings via OpenAI's most cost-efficient embedding model. Semantic search quality that outperforms keyword matching for agent memory.
Async Python with uvicorn, deployed on Railway's EU West region. SQLAlchemy async sessions with connection pooling. Cold starts under 2s on container wake.
Frontend and static assets served via Cloudflare's global edge network. API responses are not cached — every recall is live from the database, ensuring freshness.
API keys are SHA-256 hashed at rest — only the hash is stored in the database. Keys are verified in constant time to prevent timing attacks. Supabase handles user auth JWTs.
Get a free demo key and measure recall latency yourself with curl. First memory in under 5 minutes.
# 1. Store a memory curl -X POST https://api.kronvex.io/api/v1/agents/YOUR_AGENT_ID/remember \ -H "X-API-Key: kv-YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"content": "User prefers dark mode and pays by credit card."}' # 2. Recall — measure latency with curl's built-in timer curl -X POST https://api.kronvex.io/api/v1/agents/YOUR_AGENT_ID/recall \ -H "X-API-Key: kv-YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"query": "payment preferences", "top_k": 5}' \ -w "\n\nTotal: %{time_total}s — Connect: %{time_connect}s\n" # 3. inject_context — returns ready-to-use system prompt curl -X POST https://api.kronvex.io/api/v1/agents/YOUR_AGENT_ID/inject-context \ -H "X-API-Key: kv-YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"query": "payment preferences", "top_k": 5}'
Recall and inject-context typically return in 20–60ms from EU networks. The first /remember call will be slower (~120ms median) because it calls the OpenAI embedding API. Subsequent writes use the same latency profile. Results vary with network proximity to Frankfurt.
Free demo key — no credit card, no SDK required. 1 agent, 100 memories, full API access.
Questions? hello@kronvex.io · EU-hosted by default · GDPR-native
100 free memories. No credit card required.
Already have an account? Sign in →