A GDPR-Compliant, 100% Offline AI Command Center for German Enterprises
ARES is an enterprise-grade AI Command Center designed specifically for German enterprises that require absolute data sovereignty and GDPR compliance. Built with privacy-first principles, ARES enables organizations to index, search, and analyze sensitive documents using advanced AI capabilities—all while ensuring data never leaves your infrastructure.
- 🔒 100% Offline Operation: All processing happens locally—no cloud dependencies
- 🛡️ GDPR-Compliant: Automated PII detection and masking using Microsoft Presidio
- 🧠 Agentic Reasoning: PLAN/SEARCH/AUDIT workflow for accurate, fact-checked responses
- 🔍 Hybrid Search: Combines vector search (ChromaDB) with keyword search (BM25) for optimal retrieval
- 📊 Enterprise UI: Professional Streamlit interface with real-time streaming and source citations
- 🇩🇪 German Language Support: Full support for German text, including Umlauts
- Backend (FastAPI): Asynchronous REST API with comprehensive Swagger documentation
- RAG Engine: Hybrid search combining:
- Vector search via ChromaDB with
mxbai-embed-largeembeddings - Keyword search via BM25
- Parent-Document-Retriever pattern for context preservation
- Cross-Encoder re-ranking for relevance optimization
- Vector search via ChromaDB with
- Reasoning Agent: LangGraph-based agent with:
- PLAN: Determines if query requires document search
- SEARCH: Executes hybrid RAG retrieval
- AUDIT: Fact-checks answers against retrieved context
- Privacy Shield: Microsoft Presidio integration for:
- Names, Addresses, IBANs, Email detection
- Automated masking before processing
- Compliance auditing
- Frontend (Streamlit): Cyber-enterprise dark theme UI with:
- Real-time token streaming
- Source citations with file names/page numbers
- Privacy status indicators
- Python 3.12+: Modern Python with type hints
- FastAPI: High-performance async web framework
- Ollama: Local LLM inference (Llama-3-8B & mxbai-embed-large)
- ChromaDB: Vector database for embeddings
- LangChain/LangGraph: Agent orchestration
- Microsoft Presidio: PII detection and anonymization
- Streamlit: Interactive web interface
New to ARES? Check out the Quick Start Guide for a step-by-step walkthrough!
- Python 3.12 or higher
- Docker and Docker Compose (for containerized deployment)
- Ollama installed and running (see Ollama Setup)
-
Clone the repository
git clone <repository-url> cd "Sentinel-Local-BI Ares"
-
Install dependencies
pip install -r requirements.txt
-
Download German spaCy model for Presidio
python -m spacy download de_core_news_sm
-
Configure environment
cp .env.example .env # Edit .env with your settings -
Start Ollama and pull models
# Start Ollama service ollama serve # Pull required models (in another terminal) ollama pull llama3:8b ollama pull mxbai-embed-large
-
Start the backend
uvicorn src.api.main:app --reload --port 8000
-
Start the frontend (in another terminal)
streamlit run src/ui/app.py
-
Access the application
- Frontend: http://localhost:8501
- API Docs: http://localhost:8000/docs
# Start all services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down- Navigate to the sidebar in the Streamlit UI
- Click "Upload Documents"
- Select a file (PDF, DOCX, TXT, MD, or XLSX)
- Click "Upload & Index"
- The document will be:
- Scanned for PII
- Chunked and indexed
- Ready for querying
- Enter your question in the chat interface
- ARES will:
- Plan the query strategy
- Search relevant documents
- Generate an answer
- Audit for accuracy
- View citations and confidence scores
- Check PII masking status
curl -X POST "http://localhost:8000/api/v1/query" \
-H "Content-Type: application/json" \
-d '{
"query": "What is the main topic of the document?",
"mask_pii": true
}'curl -X POST "http://localhost:8000/api/v1/upload" \
-F "file=@document.pdf"python scripts/batch_upload.py ./documents --api-url http://localhost:8000curl -X POST "http://localhost:8000/api/v1/pii/detect" \
-H "Content-Type: application/json" \
-d '{"text": "Contact Max Mustermann at max@example.com"}'curl http://localhost:8000/health
# Or use the health check script
python scripts/health_check.py --api-url http://localhost:8000curl http://localhost:8000/api/v1/metrics- 100% Local Processing: All AI inference happens on your infrastructure
- No External APIs: No data sent to cloud services
- Encrypted Storage: ChromaDB data stored locally with access controls
- Automated Detection: Microsoft Presidio detects:
- Names (PERSON)
- Email addresses
- Phone numbers
- IBAN codes
- Physical addresses (LOCATION)
- Credit card numbers
- Masking Strategies: Replace, hash, or encrypt sensitive data
- Audit Logging: Track all PII detection and masking events
ARES is designed with GDPR Article 25 (Data Protection by Design) in mind:
- Privacy by Default: PII masking enabled by default
- Data Minimization: Only necessary data is processed
- Right to Erasure: Documents can be deleted from the index
- Audit Trails: Comprehensive logging for compliance reporting
For detailed GDPR compliance information, see DSGVO_KONFORMITÄT.md.
Run the test suite:
# Run all tests
pytest
# Run with coverage
pytest --cov=src --cov-report=html
# Run specific test file
pytest tests/test_pii_masker.py.
├── src/
│ ├── api/ # FastAPI backend
│ │ ├── main.py # Application entry point
│ │ ├── routes.py # API endpoints
│ │ └── config.py # Configuration
│ ├── core/ # Core functionality
│ │ ├── rag_engine.py # Hybrid RAG engine
│ │ ├── agents.py # Reasoning agent
│ │ └── document_processor.py # Document processing
│ ├── security/ # Privacy & security
│ │ └── pii_masker.py # PII detection & masking
│ └── ui/ # Streamlit frontend
│ └── app.py # Main UI application
├── scripts/ # Utility scripts
│ ├── check_ollama.py # Ollama connection checker
│ ├── init_db.py # Database initializer
│ ├── batch_upload.py # Batch document upload
│ ├── export_data.py # Export data for backup
│ ├── cleanup.py # Cleanup old files
│ └── health_check.py # Health check for monitoring
├── examples/ # Example scripts and data
│ ├── sample_query.py # API usage examples
│ └── example_document.txt # Sample document
├── tests/ # Test suite
├── docker-compose.yml # Docker orchestration
├── Dockerfile # Backend container
├── Dockerfile.streamlit # Frontend container
├── requirements.txt # Python dependencies
├── pyproject.toml # Modern Python project config
├── Makefile # Common tasks
├── setup.sh # Linux/Mac setup script
├── setup.ps1 # Windows setup script
├── QUICKSTART.md # Quick start guide
├── CHANGELOG.md # Version history
└── README.md # This file
Key configuration options in .env:
# Ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=llama3:8b
OLLAMA_EMBEDDING_MODEL=mxbai-embed-large
# ChromaDB
CHROMA_DB_PATH=./chroma_db
CHROMA_COLLECTION_NAME=ares_documents
# Privacy
ENABLE_PII_MASKING=true
PII_MASKING_STRATEGY=replace
# RAG
TOP_K_DOCUMENTS=5
CHUNK_SIZE=512
CHUNK_OVERLAP=50This is a proprietary enterprise solution. For contributions or modifications, please contact the development team.
Proprietary - All rights reserved.
Using Make (Linux/Mac):
make install # Install dependencies
make test # Run tests
make lint # Run linters
make format # Format code
make clean # Clean generated filesUsing Scripts:
# Check Ollama connection and models
python scripts/check_ollama.py
# Initialize database
python scripts/init_db.py
# Batch upload documents
python scripts/batch_upload.py /path/to/documents --api-url http://localhost:8000
# Export data for backup
python scripts/export_data.py --output backup.json
# Cleanup old files
python scripts/cleanup.py --uploads-age 30 --logs-age 7- Type Hints: Full type annotation coverage
- Linting: Ruff for fast linting
- Formatting: Black for consistent code style
- Type Checking: MyPy for static type analysis
- Testing: Pytest with coverage reporting
See CONTRIBUTING.md for detailed development guidelines.
- QUICKSTART.md: Step-by-step setup guide
- DEPLOYMENT.md: Production deployment guide
- TROUBLESHOOTING.md: Common issues and solutions
- DSGVO_KONFORMITÄT.md: GDPR compliance documentation
- CONTRIBUTING.md: Development guidelines
- PROJECT_SUMMARY.md: Project overview
For technical support or questions:
- Review the Quick Start Guide for setup help
- Check TROUBLESHOOTING.md for common issues
- Review the API Documentation when running the backend
- Check DSGVO_KONFORMITÄT.md for GDPR compliance details
- Review logs in the application console
Built with:
- Ollama - Local LLM inference
- ChromaDB - Vector database
- Microsoft Presidio - PII detection
- LangChain - LLM orchestration
- FastAPI - Web framework
- Streamlit - UI framework
ARES v1.0.0 - Built for German Enterprise Data Sovereignty 🛡️