Initial commit: Vera-AI v2 with async Qdrant, singleton pattern, monthly curation, and configurable UID/GID/TZ

Features:
- AsyncQdrantClient for non-blocking Qdrant operations
- Singleton pattern for QdrantService
- Monthly full curation (day 1 at 03:00)
- Configurable UID/GID for Docker
- Timezone support via TZ env var
- Configurable log directory (VERA_LOG_DIR)
- Volume mounts for config/, prompts/, logs/
- Standard Docker format with .env file

Fixes:
- Removed unused system_token_budget
- Added semantic_score_threshold config
- Fixed streaming response handling
- Python-based healthcheck (no curl dependency)
This commit is contained in:
Vera-AI
2026-03-26 12:37:25 -05:00
commit 50593e200d
21 changed files with 1916 additions and 0 deletions

51
docker-compose.yml Normal file
View File

@@ -0,0 +1,51 @@
# Vera-AI Docker Compose Configuration
# Ollama: http://10.0.0.10:11434
# Qdrant: http://10.0.0.22:6333
#
# Usage:
# 1. Copy .env.example to .env and customize
# 2. Build: docker compose build
# 3. Run: docker compose up -d
#
# Volume mappings:
# - config.toml: Configuration file (read-only)
# - prompts/: Curator and system prompts (read-write for curator rules)
# - logs/: Debug logs (read-write)
services:
vera-ai:
build:
context: .
dockerfile: Dockerfile
args:
APP_UID: ${APP_UID:-999}
APP_GID: ${APP_GID:-999}
image: vera-ai:latest
container_name: vera-ai
env_file:
- .env
environment:
# Override defaults from .env file
- APP_UID=${APP_UID:-999}
- APP_GID=${APP_GID:-999}
- TZ=${TZ:-UTC}
volumes:
# Configuration file (read-only)
- ./config/config.toml:/app/config/config.toml:ro
# Prompts directory (read-write for curator to append rules)
- ./prompts:/app/prompts:rw
# Debug logs directory (read-write)
- ./logs:/app/logs:rw
network_mode: "host"
restart: unless-stopped
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:11434/')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"