Implement a simple in-memory cache using a dictionary with TTL support to reduce database load for repeated queries. The cache is integrated into the data retrieval functions, with configurable expiration times and automatic cleanup of stale entries.
Tikker - Enterprise Keystroke Analytics
Keystroke analytics system providing pattern detection, statistical analysis, and behavioral profiling through distributed microservices architecture.
System Requirements
- Docker 20.10 or later
- Docker Compose 2.0 or later
- 2GB minimum RAM
- 500MB minimum disk space
Deployment
docker-compose up --build
Services become available at:
- Main API: http://localhost:8000
- AI Service: http://localhost:8001
- Visualization Service: http://localhost:8002
- ML Analytics: http://localhost:8003
- Database Viewer: http://localhost:8080 (development profile only)
Services
| Service | Port | Function |
|---|---|---|
| Main API | 8000 | Keystroke statistics and analysis via C backend |
| AI Service | 8001 | Text analysis powered by OpenAI |
| Visualization | 8002 | Chart and graph generation |
| ML Analytics | 8003 | Pattern detection and behavioral analysis |
| SQLite Database | - | Data persistence |
Core Endpoints
Statistics API
GET /api/stats/daily Daily keystroke statistics
GET /api/stats/hourly Hourly breakdown by date
GET /api/stats/weekly Weekly aggregation
GET /api/stats/weekday Day-of-week comparison
Word Analysis API
GET /api/words/top Top N frequent words
GET /api/words/find Statistics for specific word
Operations API
POST /api/index Build word index from directory
POST /api/decode Decode keystroke token files
POST /api/report Generate HTML activity report
ML Analytics API
POST /patterns/detect Identify typing patterns
POST /anomalies/detect Detect behavior deviations
POST /profile/build Create behavioral profile
POST /authenticity/check Verify user identity
POST /temporal/analyze Analyze behavior trends
POST /model/train Train predictive models
POST /behavior/predict Classify behavior category
Command-Line Tools
Direct execution of C tools:
./build/bin/tikker-decoder input.bin output.txt
./build/bin/tikker-indexer --index --database tikker.db
./build/bin/tikker-aggregator --daily --database tikker.db
./build/bin/tikker-report --input logs_plain --output report.html
Testing
pytest tests/ -v # All tests
pytest tests/test_services.py -v # Integration tests
pytest tests/test_performance.py -v # Performance tests
pytest tests/test_ml_service.py -v # ML service tests
python scripts/benchmark.py # Performance benchmarks
Configuration
Environment variables:
TOOLS_DIR=./build/bin C tools binary directory
DB_PATH=./tikker.db SQLite database path
LOG_LEVEL=INFO Logging verbosity
OPENAI_API_KEY= OpenAI API key for AI service
AI_SERVICE_URL=http://ai_service:8001
VIZ_SERVICE_URL=http://viz_service:8002
ML_SERVICE_URL=http://ml_service:8003
Development
Build C library:
cd src/libtikker && make clean && make
Build CLI tools:
cd src/tools && make clean && make
Run services locally without Docker:
python -m uvicorn src.api.api_c_integration:app --reload
python -m uvicorn src.api.ai_service:app --port 8001 --reload
python -m uvicorn src.api.viz_service:app --port 8002 --reload
python -m uvicorn src.api.ml_service:app --port 8003 --reload
Architecture
Component stack:
Client Applications
│
├─ REST API (port 8000)
├─ AI Service (port 8001)
├─ Visualization (port 8002)
└─ ML Analytics (port 8003)
│
└─ C Tools Backend (libtikker)
│
└─ SQLite Database
Documentation
- API Reference - Complete endpoint specifications and examples
- ML Analytics Guide - Pattern detection and behavioral analysis
- Deployment Guide - Production setup and scaling
- Performance Tuning - Optimization and benchmarking
- CLI Usage - Command-line tool reference
Implementation Status
- Phase 1: Foundation (Complete)
- Phase 2: Core Converters (Complete)
- Phase 3: CLI Tools (Complete)
- Phase 4: API Integration (Complete)
Details: MIGRATION_COMPLETE.md
Performance Characteristics
Typical latencies (2 CPU, 2GB RAM):
| Operation | Latency |
|---|---|
| Health check | 15ms |
| Daily statistics | 80ms |
| Word frequency | 120ms |
| Pattern detection | 50-100ms |
| Anomaly detection | 80-150ms |
| Behavior profiling | 150-300ms |
| Authenticity verification | 100-200ms |
Throughput: 40-60 requests/second per service.
Troubleshooting
Services fail to start:
Check logs with docker-compose logs. Verify port availability with netstat -tulpn | grep 800. Rebuild with docker-compose build --no-cache.
Database locked:
Stop services with docker-compose down. Remove database with rm tikker.db. Restart services.
AI service timeouts: Verify OpenAI API key is set. Check connectivity to api.openai.com.
Performance degradation:
Run benchmarks with python scripts/benchmark.py. Check resource usage with docker stats. Consult PERFORMANCE.md.
Technology Stack
- C (libtikker library, 2,500+ lines)
- Python 3.11 (FastAPI framework)
- SQLite (data persistence)
- Docker (containerization)
- Pytest (testing framework)
- Matplotlib (visualization)
Test Coverage
- 17 ML service tests: 100% pass rate
- 45+ integration tests: Comprehensive endpoint coverage
- 20+ performance tests: Latency and throughput validation
See ML_BUILD_TEST_RESULTS.md for detailed test report.
Build Status
All modules compile successfully. All 17 ML analytics tests pass. Docker configuration validated. Production ready.