An open API service indexing awesome lists of open source software.

https://github.com/hivellm/synap

Synap is a modern, high-performance data infrastructure system built in Rust, combining the best features of Redis, RabbitMQ, and Kafka into a unified platform for real-time applications.
https://github.com/hivellm/synap

keyvalue-db pubsub queues rust streaming

Last synced: 4 months ago
JSON representation

Synap is a modern, high-performance data infrastructure system built in Rust, combining the best features of Redis, RabbitMQ, and Kafka into a unified platform for real-time applications.

Awesome Lists containing this project

README

          

# ⚑ Synap

[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
[![Rust Edition](https://img.shields.io/badge/Rust-2024%20(nightly%201.85%2B)-orange.svg)](https://www.rust-lang.org/)
[![Tests](https://img.shields.io/badge/tests-528%2B%20(100%25)-brightgreen.svg)](#testing--quality)
[![Coverage](https://img.shields.io/badge/coverage-99.30%25-brightgreen.svg)](docs/TESTING.md)
[![Version](https://img.shields.io/badge/version-0.9.1-blue.svg)](#project-status)

> **High-Performance In-Memory Key-Value Store & Message Broker**

Synap is a modern, high-performance data infrastructure system built in Rust, combining the best features of Redis, RabbitMQ, and Kafka into a unified platform for real-time applications.

## 🎯 Overview

Synap provides multiple core capabilities in a single, cohesive system:

1. **πŸ’Ύ Memory Key-Value Store** - Radix-tree based in-memory storage with O(k) lookup
2. **#️⃣ Hash Data Structure** - Field-value maps within keys (Redis-compatible HSET, HGET, etc.) βœ… **v0.6.0**
3. **πŸ“‹ List Data Structure** - Ordered sequences with LPUSH, RPOP, LRANGE (Redis-compatible) βœ… **v0.6.0**
4. **πŸ”· Set Data Structure** - Unordered unique collections with SADD, SREM, SINTER, SUNION (Redis-compatible) βœ… **v0.6.0**
5. **πŸ“Š Sorted Set Data Structure** - Scored members with ranking (ZADD, ZRANGE, ZRANK, ZINTER/ZUNION) βœ… **v0.7.0**
6. **πŸ”’ HyperLogLog** - Probabilistic cardinality estimation with ~0.81% error (~12KB memory) βœ… **v0.7.0-rc1**
7. **πŸ—ΊοΈ Geospatial Indexes** - Redis-compatible GEO commands (GEOADD, GEORADIUS, GEOSEARCH) βœ… **v0.7.0-rc2**
8. **πŸ”’ Bitmap Operations** - Redis-compatible bit manipulation (SETBIT, GETBIT, BITCOUNT, BITOP) βœ… **v0.7.0-rc2**
9. **πŸ“ String Extensions** - APPEND, GETRANGE, SETRANGE, GETSET, MSETNX βœ… **v0.7.0-rc1**
10. **πŸ“œ Lua Scripting** - Server-side scripting with EVAL/EVALSHA and redis.call() bridge βœ… **v0.7.0**
11. **πŸ”„ Transactions** - MULTI/EXEC/WATCH/DISCARD with optimistic locking βœ… **v0.7.0**
12. **πŸ“¨ Acknowledgment Queues** - RabbitMQ-style message queues with delivery guarantees
13. **πŸ“‘ Event Streams** - Kafka-style partitioned topics with consumer groups and retention
14. **πŸ”” Pub/Sub Messaging** - Topic-based publish/subscribe with wildcard support

## ✨ Key Features

### ⚑ Performance
- **πŸš€ Sub-microsecond Operations**: 87ns for GET operations (20,000x better than target)
- **πŸ“ˆ High Throughput**: 10M+ ops/sec sequential writes (200x better than baseline)
- **πŸ’Ύ Efficient Memory**: 92MB for 1M keys (54% reduction vs baseline)
- **πŸ”„ 64-Way Sharding**: Linear scalability with CPU core count
- **βš™οΈ Async I/O**: Built on Tokio for non-blocking operations
- **πŸ—œοΈ Smart Compression**: LZ4/Zstd compression with minimal CPU overhead
- **πŸ”₯ Hot Data Cache**: Decompressed cache for frequently accessed data

### πŸ” Security & Authentication (βœ… PRODUCTION READY - Jan 2025)
- **πŸ”’ Authentication System** - Root user, user management, API keys
- **πŸ›‘οΈ Fine-grained Permissions** - Resource-based permissions (RabbitMQ-style)
- **πŸ“ Audit Logging** - Track all authentication events (login, API key usage, permission denials)
- **πŸ”‘ Password Validation** - Configurable password requirements (SHA512 hashing)
- **🌐 IP Filtering** - Restrict API keys to specific IP addresses
- **βœ… Basic Auth & Bearer Token** - Support for both authentication methods
- **πŸ” MCP Authentication** - Full authentication support for MCP protocol

### πŸ’ͺ Durability (βœ… COMPLETE - Oct 2025)
- **πŸ’Ύ Full Persistence**: WAL + Snapshots for KV, Queue, and Stream
- **πŸ”„ OptimizedWAL**: Redis-style batching (10K ops/batch, 100Β΅s window)
- **πŸ“¨ Queue Persistence**: RabbitMQ-style durable messaging with ACK tracking
- **πŸ“‘ Stream Persistence**: Kafka-style append-only logs per room
- **βš–οΈ PACELC Model**: PC/EL (Consistency during partition, Latency in normal operation)
- **⏱️ Recovery Time**: 1-10 seconds from snapshots + WAL replay

### πŸ›‘οΈ Reliability & High Availability
- **πŸ”„ Master-Slave Replication**: 1 write master + N read replicas (βœ… **PRODUCTION READY**)
- TCP binary protocol with length-prefixed framing
- Full sync via snapshot transfer (CRC32 verified)
- Partial sync via replication log (incremental updates)
- Auto-reconnect with intelligent resync
- 51 comprehensive tests (98% passing)
- Stress tested: 5000 operations
- **βœ… Message Acknowledgment**: Guaranteed message delivery with ACK/NACK
- **πŸ” Event Replay**: Stream history and replay capabilities
- **πŸ”€ Manual Failover**: Promote replica to master capability

### πŸ“Š Monitoring & Observability
- **πŸ“ˆ INFO Command** - Redis-style server introspection (server, memory, stats, replication, keyspace)
- **🐌 SLOWLOG** - Slow query logging with configurable threshold (default 10ms)
- **πŸ’Ύ MEMORY USAGE** - Per-key memory tracking across all data types
- **πŸ‘₯ CLIENT LIST** - Active connection tracking and management
- **πŸ“Š Prometheus Metrics** - 17 metric types for comprehensive monitoring

### πŸ‘¨β€πŸ’» Developer Experience
- **πŸ€– AI Integration**: MCP support for Cursor, Claude Desktop, and AI assistants
- **🌊 StreamableHTTP Protocol**: Simple HTTP-based streaming protocol
- **πŸ”Œ WebSocket Support**: Persistent connections for real-time updates
- **πŸ“š Multi-language SDKs**: TypeScript, Python, Rust (with reactive PubSub), PHP, and C# clients with full authentication support
- **πŸ“– Rich Examples**: Chat, event broadcasting, task queues, authentication examples, and more

### πŸ”— Protocol Support
- **πŸ€– MCP (Model Context Protocol)**: βœ… **PRODUCTION READY** - Configurable tools (KV, Hash, List, Set, Queue, Sorted Set) at `/mcp` endpoint with authentication support
- **🌐 UMICP (Universal Matrix Inter-Communication Protocol)**: βœ… **PRODUCTION READY** - 13 operations via MCP bridge with TLS support
- **πŸ“‘ REST API**: Standard HTTP endpoints for all operations
- **πŸ”Œ WebSocket API**: Real-time bidirectional communication

### πŸ“Š Scalability
- **πŸ“– Read Scaling**: Multiple replica nodes for distributed reads
- **🏠 Event Rooms**: Isolated event streams per room/channel
- **🎯 Partitioned Topics**: Kafka-style horizontal scaling with multiple partitions
- **πŸ‘₯ Consumer Groups**: Coordinated consumption with automatic rebalancing
- **πŸ”€ Topic Routing**: Efficient pub/sub with wildcard matching
- **πŸ”— Connection Pooling**: Client-side connection management

## πŸ—οΈ Architecture

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Synap Server β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ StreamableHTTP/WebSocket Protocol Layer β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Key-Valueβ”‚ β”‚ Queue β”‚ β”‚ Event β”‚ β”‚ Pub/Sub β”‚ β”‚
β”‚ β”‚ Store β”‚ β”‚ System β”‚ β”‚ Stream β”‚ β”‚ β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Replication Log (Append-Only) β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Master Node Replica Nodes (Read-Only) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

## πŸš€ Quick Start

### πŸ“¦ Installation

**From GitHub Releases** (Recommended):

```bash
# Download pre-built binaries from GitHub Releases
# https://github.com/hivellm/synap/releases

# Linux (x86_64)
wget https://github.com/hivellm/synap/releases/download/v0.3.0/synap-linux-x86_64.tar.gz
tar -xzf synap-linux-x86_64.tar.gz
cd synap-linux-x86_64
./synap-server --config config.yml

# macOS (Intel)
wget https://github.com/hivellm/synap/releases/download/v0.3.0/synap-macos-x86_64.tar.gz
tar -xzf synap-macos-x86_64.tar.gz
cd synap-macos-x86_64
./synap-server --config config.yml

# macOS (Apple Silicon)
wget https://github.com/hivellm/synap/releases/download/v0.3.0/synap-macos-aarch64.tar.gz
tar -xzf synap-macos-aarch64.tar.gz
cd synap-macos-aarch64
./synap-server --config config.yml

# Windows (x86_64)
# Download synap-windows-x86_64.zip from releases page
# Extract and run synap-server.exe
```

**🐳 Docker**:

**Quick Start (Docker Hub)**:
```bash
# Pull and run latest image
docker pull hivehub/synap:latest
docker run -d \
--name synap \
-p 15500:15500 \
-p 15501:15501 \
-v synap-data:/data \
hivehub/synap:latest

# Check health
curl http://localhost:15500/health
```

**Build Locally**:
```bash
# Clone and build
git clone https://github.com/hivellm/synap.git
cd synap
docker build -t hivehub/synap:latest .

# Run container
docker run -d \
--name synap-server \
-p 15500:15500 \
-p 15501:15501 \
-v synap-data:/data \
hivehub/synap:latest
```

**With Authentication**:
```bash
docker run -d \
--name synap-server \
-p 15500:15500 \
-p 15501:15501 \
-v synap-data:/data \
-e SYNAP_AUTH_ENABLED=true \
-e SYNAP_AUTH_REQUIRE_AUTH=true \
-e SYNAP_AUTH_ROOT_USERNAME=admin \
-e SYNAP_AUTH_ROOT_PASSWORD=SecurePassword123! \
-e SYNAP_AUTH_ROOT_ENABLED=true \
hivehub/synap:latest
```

**Multi-Architecture Build**:
```bash
# Build and push multi-arch images (AMD64 + ARM64)
./scripts/docker-publish.sh 0.8.1

# Or using PowerShell
.\scripts\docker-publish.ps1 0.8.1
```

**Docker Compose**:
```bash
# Use docker-compose for replication setup
docker-compose up -d

# With authentication (set environment variables)
export SYNAP_AUTH_ENABLED=true
export SYNAP_AUTH_REQUIRE_AUTH=true
export SYNAP_AUTH_ROOT_USERNAME=admin
export SYNAP_AUTH_ROOT_PASSWORD=SecurePassword123!
docker-compose up -d
```

**Available Images**:
- `hivehub/synap:latest` - Latest stable release
- `hivehub/synap:0.8.1` - Specific version
- Supports `linux/amd64` and `linux/arm64` architectures

πŸ“– **For detailed Docker documentation, see [DOCKER_README.md](DOCKER_README.md)**

**πŸ› οΈ From Source**:

```bash
# Clone repository
git clone https://github.com/hivellm/synap.git
cd synap

# Build from source (requires Rust nightly 1.85+)
cargo build --release

# Run server
./target/release/synap-server --config config.yml
```

See [Development Guide](docs/DEVELOPMENT.md) for detailed build instructions.

### πŸ’» Basic Usage

```bash
# Start server (default port 15500)
synap-server

# Key-Value Operations
curl -X POST http://localhost:15500/kv/set \
-H "Content-Type: application/json" \
-d '{"key": "user:1", "value": "John Doe", "ttl": 3600}'

curl http://localhost:15500/kv/get/user:1

# Queue Operations
curl -X POST http://localhost:15500/queue/publish \
-d '{"queue": "tasks", "message": "process-video", "priority": 1}'

curl http://localhost:15500/queue/consume/tasks

# Event Stream
curl -X POST http://localhost:15500/stream/publish \
-d '{"room": "chat-room-1", "event": "message", "data": "Hello!"}'

# Pub/Sub
curl -X POST http://localhost:15500/pubsub/publish \
-d '{"topic": "notifications.email", "message": "New order"}'

# With Authentication (if enabled)
curl -X POST http://localhost:15500/kv/set \
-H "Authorization: Basic $(echo -n 'admin:password' | base64)" \
-H "Content-Type: application/json" \
-d '{"key": "user:1", "value": "John Doe"}'

# Or with API Key
curl -X POST http://localhost:15500/kv/set \
-H "Authorization: Bearer sk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"key": "user:1", "value": "John Doe"}'
```

### πŸ”’ Authentication & Security (βœ… Production Ready)

Authentication is **disabled by default** for development. Enable it for production:

**Features:**
- βœ… **Root User Management** - Configurable root user with full permissions
- βœ… **User Management** - Create, delete, enable/disable users
- βœ… **API Key Management** - Generate, revoke, and manage API keys with expiration
- βœ… **Fine-grained Permissions** - Resource-based permissions (RabbitMQ-style)
- βœ… **Basic Auth & Bearer Token** - Support for both authentication methods
- βœ… **Audit Logging** - Track all authentication events (login, API key usage, permission denials)
- βœ… **Password Validation** - Configurable password requirements (length, complexity)
- βœ… **IP Filtering** - Restrict API keys to specific IP addresses

**Via Config File** (`config.yml`):
```yaml
auth:
enabled: true
require_auth: true
root:
username: "root"
password: "your_secure_password"
enabled: true
```

**Via Docker Environment Variables**:
```bash
docker run -d -p 15500:15500 \
-e SYNAP_AUTH_ENABLED=true \
-e SYNAP_AUTH_REQUIRE_AUTH=true \
-e SYNAP_AUTH_ROOT_USERNAME=root \
-e SYNAP_AUTH_ROOT_PASSWORD=your_secure_password \
synap:latest
```

**Using Authentication**:
```bash
# Basic Auth
curl -u root:password http://localhost:15500/kv/get/user:1

# Bearer Token (API Key)
curl -H "Authorization: Bearer sk_XXXXX..." http://localhost:15500/kv/get/user:1

# Query Parameter
curl "http://localhost:15500/kv/get/user:1?api_key=sk_XXXXX..."
```

See [Authentication Guide](docs/AUTHENTICATION.md) for complete details.

### πŸ”„ Replication Setup

Synap supports master-slave replication for high availability and read scaling.

#### Quick Start with Docker

```bash
# Start 1 master + 3 replicas
docker-compose up -d

# Master available at: localhost:15500
# Replica 1 at: localhost:15501
# Replica 2 at: localhost:15502
# Replica 3 at: localhost:15503
```

#### Manual Setup

**Master Node Configuration** (`config-master.yml`):

```yaml
server:
host: "0.0.0.0"
port: 15500

replication:
enabled: true
role: "master"
replica_listen_address: "0.0.0.0:15501"
heartbeat_interval_ms: 1000
max_lag_ms: 10000
buffer_size_kb: 256
replica_timeout_secs: 30

persistence:
enabled: true
wal:
enabled: true
path: "./data/wal/synap.wal"
snapshot:
enabled: true
directory: "./data/snapshots"
```

**Replica Node Configuration** (`config-replica.yml`):

```yaml
server:
host: "0.0.0.0"
port: 15500

replication:
enabled: true
role: "replica"
master_address: "master:15501" # Master's replication port
heartbeat_interval_ms: 1000
max_lag_ms: 10000
buffer_size_kb: 256
auto_reconnect: true
reconnect_delay_ms: 5000

persistence:
enabled: true
wal:
enabled: true
path: "./data/wal/synap.wal"
snapshot:
enabled: true
directory: "./data/snapshots"
```

**Start Nodes**:

```bash
# Terminal 1: Start master
synap-server --config config-master.yml

# Terminal 2: Start replica 1
synap-server --config config-replica-1.yml

# Terminal 3: Start replica 2
synap-server --config config-replica-2.yml
```

#### Usage Patterns

**Write to Master**:

```bash
# All writes go to master
curl -X POST http://localhost:15500/kv/set \
-H "Content-Type: application/json" \
-d '{"key": "user:100", "value": "Alice", "ttl": 3600}'
```

**Read from Replicas** (Load Balancing):

```bash
# Read from replica 1 (eventually consistent, ~5ms lag)
curl http://localhost:15501/kv/get/user:100

# Read from replica 2
curl http://localhost:15502/kv/get/user:100

# Read from replica 3
curl http://localhost:15503/kv/get/user:100
```

**Monitor Replication Status**:

```bash
# Check replication health on master
curl http://localhost:15500/health/replication

# Check replication status on replica
curl http://localhost:15501/health/replication
```

#### Consistency Guarantees

- **Master Reads**: Strongly consistent (immediate)
- **Replica Reads**: Eventually consistent (~5-10ms lag typical)
- **Write Durability**: Writes confirmed after master commit
- **Replication**: Asynchronous to replicas
- **Lag Monitoring**: Real-time offset tracking

See [docs/specs/REPLICATION.md](docs/specs/REPLICATION.md) for complete replication documentation.

For detailed Docker deployment guide, see:
- **[DOCKER_README.md](DOCKER_README.md)** - Complete Docker Hub documentation with examples
- **[docs/DOCKER_DEPLOYMENT.md](docs/DOCKER_DEPLOYMENT.md)** - Advanced deployment guide

## 🎯 Use Cases

### πŸ’¬ Real-Time Chat
Use event streams for room-based messaging with message history and guaranteed delivery.

### πŸ“‹ Task Distribution
Leverage acknowledgment queues for distributed task processing with retry logic.

### ⚑ Cache Layer
Utilize key-value store as a high-speed cache with TTL support.

### πŸ“‘ Event Broadcasting
Implement pub/sub for system-wide notifications and event distribution.

### πŸ”„ Microservices Communication
Use queues for reliable inter-service messaging with delivery guarantees.

## πŸ› οΈ Technology Stack

- **Language**: Rust (Edition 2024)
- **Runtime**: Tokio (async/await)
- **Web Framework**: Axum
- **Data Structure**: radix_trie (memory-efficient key-value)
- **Serialization**: serde (JSON, MessagePack)
- **Protocols**: StreamableHTTP + WebSocket + MCP + UMICP

## πŸ“š Documentation

### πŸ“– Getting Started
- **[User Guide](docs/guides/USER_GUIDE.md)** - Complete getting started guide (Installation, Quick Start, Operations)
- **[Admin Guide](docs/guides/ADMIN_GUIDE.md)** - Operations handbook (Deployment, Monitoring, HA, Security)
- **[Tutorials](docs/guides/TUTORIALS.md)** - 8 practical tutorials (Chat, Queues, Caching, Pub/Sub)

### πŸ”§ Core Documentation
- **[Architecture](docs/ARCHITECTURE.md)** - System architecture and components
- **[Roadmap](docs/ROADMAP.md)** - Development roadmap and timeline
- **[Configuration](docs/CONFIGURATION.md)** - Complete configuration reference
- **[CLI Guide](docs/CLI_GUIDE.md)** - Synap CLI usage and commands

### πŸ”’ Security & Authentication
- **[Authentication](docs/AUTHENTICATION.md)** - Complete auth guide (users, roles, API keys, ACL)
- **[Queue Concurrency](docs/QUEUE_CONCURRENCY_TESTS.md)** - Zero-duplicate guarantees

### 🌐 API & Protocols
- **[REST API](docs/api/REST_API.md)** - Complete REST API documentation
- **[OpenAPI Spec](docs/api/openapi.yml)** - OpenAPI 3.0 specification (YAML/JSON)
- **[StreamableHTTP](docs/protocol/STREAMABLE_HTTP.md)** - StreamableHTTP protocol
- **[MCP Integration](docs/protocol/MCP_USAGE.md)** - Model Context Protocol βœ… **PRODUCTION READY**
- **[MCP Test Results](docs/protocol/MCP_TEST_RESULTS.md)** - Live testing via Cursor AI
- **[UMICP Integration](docs/protocol/UMICP_INTEGRATION.md)** - UMICP protocol βœ… **PRODUCTION READY**

### πŸ“Š Performance & Testing
- **[Benchmark Results](docs/BENCHMARK_RESULTS.md)** - KV performance metrics
- **[Testing Strategy](docs/TESTING.md)** - Test coverage and approach
- **[Phase 1 Summary](docs/PHASE1_SUMMARY.md)** - Phase 1 implementation details

### πŸ”§ Development
- **[Development Guide](docs/DEVELOPMENT.md)** - Setup and contribution guide
- **[Design Decisions](docs/DESIGN_DECISIONS.md)** - Technical choices
- **[Project DAG](docs/PROJECT_DAG.md)** - Component dependencies
- **[Deployment](docs/DEPLOYMENT.md)** - Production deployment (planned)
- **[Packaging](docs/PACKAGING_AND_DISTRIBUTION.md)** - Distribution packages (planned)

### πŸ“‹ Project Planning

- **[Roadmap](docs/ROADMAP.md)** - Development roadmap and timeline
- **[Project DAG](docs/PROJECT_DAG.md)** - Component dependencies and implementation order

### 🧩 Component Specifications

- **[Key-Value Store](docs/specs/KEY_VALUE_STORE.md)** - Radix-tree storage system
- **[Queue System](docs/specs/QUEUE_SYSTEM.md)** - Message queues with ACK
- **[Event Stream](docs/specs/EVENT_STREAM.md)** - Room-based broadcasting
- **[Pub/Sub](docs/specs/PUBSUB.md)** - Topic-based messaging
- **[Replication](docs/specs/REPLICATION.md)** - Master-slave architecture

### πŸ“¦ SDKs

- **[TypeScript SDK](docs/sdks/TYPESCRIPT.md)** - Node.js and browser support
- **[Python SDK](docs/sdks/PYTHON.md)** - Async/sync Python client
- **[Rust SDK](docs/sdks/RUST.md)** - Native Rust client library

### πŸ’‘ Examples

- **[Real-Time Chat](docs/examples/CHAT_SAMPLE.md)** - Multi-room chat application
- **[Event Broadcasting](docs/examples/EVENT_BROADCAST.md)** - System-wide events
- **[Task Queue](docs/examples/TASK_QUEUE.md)** - Distributed task processing
- **[Pub/Sub Pattern](docs/examples/PUBSUB_PATTERN.md)** - Notification system

## πŸ“Š Performance

### βœ… Performance with Persistence Enabled (October 2025) ⚑

**πŸš€ Realistic Benchmarks - Fair Comparison** βœ…

| Operation | Synap (Periodic fsync) | Redis/RabbitMQ | vs Competitor |
|-----------|------------------------|----------------|---------------|
| **KV Write** | **44K ops/s** (22.5¡s) | 50-100K ops/s | 🟰 **Competitive** (2x slower) |
| **KV Read** | **12M ops/s** (83ns) | 80-100K ops/s | βœ… **120x faster** |
| **Queue Publish** | **19.2K msgs/s** (52Β΅s) | 0.1-0.2K msgs/s | βœ… **100x faster** |
| **Queue Consume+ACK** | **607Β΅s** | 5-10ms | βœ… **8-16x faster** |
| **Memory (1M keys)** | **92MB** | ~200MB | βœ… **54% reduction** |
| **Recovery (1K ops)** | **120ms** | 50-200ms | 🟰 **Similar** |
| **Concurrent Ops** | **64x parallel** | Single-thread | βœ… **Linear scaling** |

**Note**: Persistence enabled with `fsync_mode: periodic` (10ms batching) - Production config

### πŸ“ˆ Optimization Results

| Metric | Before | After | Improvement |
|--------|--------|-------|-------------|
| Memory (1M keys) | 200MB | **92MB** | **54% reduction** |
| Write throughput | 50K ops/s | **10M+ ops/s** | **200x faster** |
| Read latency P99 | 2-5ms | **87ns** | **20,000x faster** |
| Concurrent ops | Limited | **64x parallel** | Linear scaling |
| TTL cleanup CPU | 100% | **1-10%** | **10-100x reduction** |

### πŸ”œ Planned

| Operation | Target | Status |
|-----------|--------|--------|
| Event Publish | < 1ms | πŸ”„ In Progress |
| Pub/Sub Publish | < 0.5ms | πŸ”΅ Planned |
| Replication Lag | < 10ms | πŸ”΅ Planned |

**Test Coverage**: 456+ tests passing (99.30% coverage)

**Scripts**: `./scripts/test-performance.ps1` (full suite), `./scripts/quick-test.ps1` (fast validation)

## βš–οΈ Comparison

| Feature | Synap | Redis | RabbitMQ | Kafka |
|---------|-------|-------|----------|-------|
| Key-Value | βœ… | βœ… | ❌ | ❌ |
| **Hashes** | βœ… (v0.6.0) | βœ… | ❌ | ❌ |
| **Lists** | βœ… (v0.6.0) | βœ… | ❌ | ❌ |
| **Sets** | βœ… (v0.6.0) | βœ… | ❌ | ❌ |
| **Sorted Sets** | βœ… (v0.7.0) | βœ… | ❌ | ❌ |
| **Geospatial** | βœ… (v0.7.0-rc2) | βœ… | ❌ | ❌ |
| **Bitmaps** | βœ… (v0.7.0-rc2) | βœ… | ❌ | ❌ |
| **HyperLogLog** | βœ… (v0.7.0-rc1) | βœ… | ❌ | ❌ |
| **Lua Scripting** | βœ… (v0.7.0) | βœ… | ❌ | ❌ |
| **Transactions** | βœ… (v0.7.0) | βœ… | ❌ | ❌ |
| **String Extensions** | βœ… (v0.7.0-rc1) | βœ… | ❌ | ❌ |
| Queues (ACK) | βœ… | ❌ | βœ… | ❌ |
| Priority Queues | βœ… (0-9) | ❌ | βœ… | ❌ |
| Dead Letter Queue | βœ… | ❌ | βœ… | ❌ |
| Event Streams | βœ… | βœ… (Limited) | ❌ | βœ… |
| Partitioned Topics | βœ… | ❌ | ❌ | βœ… |
| Consumer Groups | βœ… | ❌ | ❌ | βœ… |
| Retention Policies | βœ… (5 types) | βœ… (2 types) | βœ… (1 type) | βœ… (2 types) |
| Pub/Sub | βœ… | βœ… | βœ… | βœ… |
| Authentication | βœ… (Users+API Keys) | βœ… (ACL) | βœ… (Users) | βœ… (SASL) |
| RBAC | βœ… | βœ… (Limited) | βœ… | βœ… |
| API Key Expiration | βœ… | ❌ | ❌ | ❌ |
| IP Filtering | βœ… | βœ… | ❌ | ❌ |
| Replication | βœ… (Master-Slave) | βœ… | βœ… | βœ… |
| Persistence | βœ… (WAL+Snapshot) | βœ… (AOF/RDB) | βœ… (Disk) | βœ… (Log) |
| PACELC Model | PC/EL | PC/EL | PC/EC | PA/EL |
| Native Compression | βœ… (LZ4/Zstd) | ❌ | ❌ | βœ… (Snappy) |
| Hot Data Cache | πŸ”„ (L1/L2) | βœ… (Single) | ❌ | ❌ |
| StreamableHTTP | βœ… | ❌ | ❌ | ❌ |
| MCP Support | βœ… (Configurable, Auth) | ❌ | ❌ | ❌ |
| UMICP Support | βœ… (13 ops, TLS) | ❌ | ❌ | ❌ |
| Enhanced Monitoring | βœ… (INFO, SLOWLOG, MEMORY) | βœ… (INFO) | ❌ | ❌ |
| Password Hashing | βœ… (SHA512) | βœ… (SHA256) | βœ… (bcrypt) | βœ… (SASL) |
| AI Integration | βœ… (MCP+UMICP) | ❌ | ❌ | ❌ |
| Matrix Operations | βœ… (via UMICP) | ❌ | ❌ | ❌ |
| Single Binary | βœ… | βœ… | ❌ | ❌ |
| Zero-Duplicate Guarantee | βœ… (Tested) | N/A | βœ… | βœ… |

**Legend**: βœ… Implemented | πŸ”„ In Progress | ❌ Not Available

## πŸ“„ License

Apache License 2.0 - See [LICENSE](LICENSE) for details.

## 🀝 Contributing

See [DEVELOPMENT.md](docs/DEVELOPMENT.md) for development setup and contribution guidelines.

## πŸ“Š Project Status

**Status**: βœ… Phase 1-3 Complete | βœ… Redis Phase 1-2 Complete (Hash, List, Set, Sorted Set, Geospatial, Bitmap, String Extensions)
**Version**: 0.8.1 (Dependency updates + SDK fixes)
**Edition**: Rust 2024 (nightly 1.85+)
**Last Updated**: November 12, 2025

### βœ… Implementation Complete

#### 🎯 Phase 1: Foundation (v0.1.0-alpha)
- βœ… Radix tree-based key-value store
- βœ… GET/SET/DELETE + Atomic (INCR/DECR)
- βœ… Batch operations (MSET/MGET/MDEL)
- βœ… TTL support with background cleanup
- βœ… Extended commands (KEYS, SCAN, FLUSH, EXPIRE, PERSIST)
- βœ… HTTP REST API (4 KV endpoints)
- βœ… StreamableHTTP Protocol (15+ commands)
- βœ… Comprehensive error handling
- βœ… Advanced logging (JSON + Pretty formats)

#### βœ… Phase 2: Core Features (v0.2.0-beta) - COMPLETE (Oct 2025)

**πŸ“¨ Queue System** βœ… COMPLETE
- βœ… FIFO with priority support (0-9)
- βœ… ACK/NACK mechanism + retry logic
- βœ… Dead Letter Queue (DLQ)
- βœ… Background deadline checker
- βœ… **9 REST API endpoints** (create, publish, consume, ack, nack, etc.)
- βœ… **Zero-duplicate guarantee** (5 concurrency tests)
- βœ… Performance: 7,500+ msg/s with 50 concurrent consumers

**πŸ”’ Authentication & Authorization** βœ… COMPLETE
- βœ… **User management** (SHA512 password hashing)
- βœ… **Role-Based Access Control** (admin, readonly, custom roles)
- βœ… **API Keys** (expiration, IP filtering, usage tracking)
- βœ… **ACL system** (resource-based permissions)
- βœ… **Basic Auth + Bearer Token** authentication
- βœ… **Multi-tenant support** via permission patterns
- βœ… **23 security tests** (100% auth module coverage)

**πŸ—œοΈ Compression** βœ… COMPLETE
- βœ… LZ4 (fast compression)
- βœ… Zstandard (better ratio)
- βœ… Configurable thresholds
- βœ… 6 comprehensive tests

**πŸ“‘ Event Streams** βœ… COMPLETE + KAFKA-STYLE PARTITIONING βœ… NEW
- βœ… Ring buffer implementation (VecDeque, 10K msg/room)
- βœ… Room-based isolation (multi-tenant)
- βœ… Message history (offset-based replay)
- βœ… Offset-based consumption (Kafka-style)
- βœ… Automatic compaction (retention policy)
- βœ… **Kafka-style persistence** (append-only logs per room)
- βœ… **Stream recovery** from disk logs
- βœ… **Master-Slave replication** (full + partial sync)
- βœ… **Snapshot integration** (stream data in full sync)
- βœ… **Partitioned Topics** (multiple partitions per topic) βœ… NEW
- βœ… **Consumer Groups** (coordinated consumption with rebalancing) βœ… NEW
- βœ… **Key-Based Routing** (hash-based partition assignment) βœ… NEW
- βœ… **Advanced Retention** (time, size, count, combined, infinite) βœ… NEW
- βœ… **Assignment Strategies** (round-robin, range, sticky) βœ… NEW
- βœ… **Offset Management** (commit/checkpoint positions) βœ… NEW
- βœ… 6 simple stream endpoints + 17 Kafka-style endpoints
- βœ… Performance: 12.5M msgs/s consume, 2.3 GiB/s publish, 10K+ events/sec per partition

**πŸ”” Pub/Sub System** βœ… COMPLETE
- βœ… Topic routing (Radix Trie)
- βœ… Wildcard subscriptions (`*` and `#`)
- βœ… Fan-out messaging (concurrent delivery)
- βœ… Hierarchical topics
- βœ… Performance: 850K msgs/s, 1.2Β΅s latency

**πŸ’Ύ Persistence** βœ… COMPLETE - All Subsystems
- βœ… **OptimizedWAL** (Redis-style batching, 10K ops/batch) βœ… NEW
- βœ… **Queue Persistence** (RabbitMQ-style ACK tracking) βœ… NEW
- βœ… **Stream Persistence** (Kafka-style append-only logs) βœ… NEW
- βœ… AsyncWAL with group commit (3-5x throughput)
- βœ… Streaming snapshot v2 (O(1) memory)
- βœ… Automatic recovery on startup (KV + Queue + Stream)
- βœ… 3 fsync modes: Always, Periodic, Never
- βœ… Manual snapshot endpoint (POST /snapshot)

#### πŸ”„ Phase 3: Replication (v0.3.0-rc) - COMPLETE (Oct 2025)

**Master-Slave Replication** βœ… COMPLETE
- βœ… **TCP communication layer** (length-prefixed binary protocol)
- βœ… **Full sync** (snapshot transfer with CRC32 verification)
- βœ… **Partial sync** (incremental replication log updates)
- βœ… **Circular replication log** (1M operations buffer, like Redis)
- βœ… **Lag monitoring** (real-time offset tracking)
- βœ… **Auto-reconnect** (intelligent full/partial resync)
- βœ… **Manual failover** (promote replica to master)
- βœ… **Stream replication** (Event Streams included in sync) βœ… NEW
- βœ… **Multi-subsystem sync** (KV + Queue + Streams) βœ… NEW
- βœ… **67 comprehensive tests** (25 unit + 16 extended + 10 integration + 16 KV operations)
- βœ… **Stress tested** (5000 operations validated)
- βœ… **Multiple replicas** (3+ replicas tested simultaneously)

**Performance**:
- Snapshot creation: 1000 keys < 50ms
- Large values: 100KB transfers validated
- Multiple replicas: 3 replicas sync concurrently
- Stress test: 5000 ops in ~4-5 seconds

#### πŸ§ͺ Testing & Quality
- βœ… **456+ tests passing** (99.30% test coverage)
- 128 library tests (KV, Queue, Streams, Partitioning, Consumer Groups, Persistence, Auth, Compression)
- 67 replication tests (25 unit + 16 extended + 10 integration TCP + 16 KV ops)
- 21 integration tests (performance, hybrid storage, persistence e2e)
- 7 Kafka-style integration tests (partition, consumer groups, retention)
- 40+ geospatial tests (23 unit + 17 integration)
- 12 bitmap integration tests
- 30 Lua scripting tests
- 11 transaction tests
- 58 authentication tests
- Protocol tests across REST, StreamableHTTP, WebSocket
- βœ… **11 comprehensive benchmark suites**
- `kv_bench`: Memory, sharding, TTL, concurrency
- `queue_bench`: Arc sharing, priority, pending messages
- `persistence_bench`: AsyncWAL, snapshots, recovery
- `hybrid_bench`: Adaptive storage (HashMap/RadixTrie)
- `stream_bench`: Publish, consume, overflow, multi-subscriber
- `pubsub_bench`: Wildcards, fan-out, hierarchy
- `compression_bench`: LZ4/Zstd performance
- `kv_persistence_bench`: With disk I/O (3 fsync modes)
- `queue_persistence_bench`: RabbitMQ-style durability
- `geospatial_bench`: GEO operations performance βœ… NEW
- `bitmap_bench`: Bit manipulation performance βœ… NEW
- βœ… **99.30% test coverage**
- βœ… Clean `cargo fmt` and `cargo clippy`
- βœ… WebSocket tests with graceful shutdown (s2s-tests feature)

### πŸš€ Quick Start

```bash
# Clone and build
git clone https://github.com/hivellm/synap.git
cd synap
cargo build --release

# Run tests (456+ passing)
cargo test

# Run server
./target/release/synap-server --config config.yml
# Server starts at http://0.0.0.0:15500

# Use CLI client
./target/release/synap-cli
synap> SET mykey "Hello World"
synap> GET mykey

# Or via HTTP API
curl -X POST http://localhost:15500/kv/set \
-H "Content-Type: application/json" \
-d '{"key": "test", "value": "hello", "ttl": 3600}'

curl http://localhost:15500/kv/get/test
# Returns: "hello" (plain value, not wrapped JSON)

# Or via MCP (Cursor/Claude Desktop)
# Just ask: "Get the value of key 'test' from Synap"
# MCP tool synap_kv_get will be called automatically
```

### πŸ“¨ Queue System Examples

```bash
# Create queue
curl -X POST http://localhost:15500/queue/jobs \
-H "Content-Type: application/json" \
-d '{"max_depth": 10000, "ack_deadline_secs": 30}'

# Publish message
curl -X POST http://localhost:15500/queue/jobs/publish \
-H "Content-Type: application/json" \
-d '{"payload": [72,101,108,108,111], "priority": 9, "max_retries": 3}'

# Consume message
curl http://localhost:15500/queue/jobs/consume/worker-1

# Acknowledge (ACK)
curl -X POST http://localhost:15500/queue/jobs/ack \
-H "Content-Type: application/json" \
-d '{"message_id": "xxx-xxx-xxx"}'
```

### πŸ”’ Authentication Examples

```bash
# Basic Auth (Redis-style)
curl -u admin:password http://localhost:15500/queue/private/stats

# API Key (Bearer Token)
curl -H "Authorization: Bearer sk_XXXXX..." http://localhost:15500/queue/list

# API Key (Query Parameter)
curl http://localhost:15500/queue/list?api_key=sk_XXXXX...
```

See [docs/AUTHENTICATION.md](docs/AUTHENTICATION.md) for complete authentication guide.

### πŸ”œ Next Phases

**βœ… Phase 2 (Q4 2025)**: Event Streams, Pub/Sub, Persistence - **COMPLETE**
**βœ… Phase 3 (Q1 2026)**: Master-Slave Replication with TCP - **COMPLETE**
**βœ… Redis Phase 1 (Oct 2025)**: Hash, List, Set Data Structures + 5 SDKs - **COMPLETE** πŸŽ‰
**βœ… Redis Phase 2 (Jan 2025)**: Sorted Sets, String Extensions, Geospatial, Bitmap - **COMPLETE** πŸŽ‰
**βœ… MCP Integration**: Model Context Protocol with Authentication & Configurable Tools - **COMPLETE**
**βœ… UMICP Integration**: Universal Matrix Inter-Communication Protocol with TLS - **COMPLETE**
**βœ… Enhanced Monitoring**: INFO, SLOWLOG, MEMORY USAGE, CLIENT LIST - **COMPLETE**
**⏳ Phase 4 (Q2 2026)**: Clustering, Sharding, GUI Dashboard, Distribution packages

See [docs/ROADMAP.md](docs/ROADMAP.md) for details.