You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Purpose: Stores threat intelligence as a knowledge graph
Ports:
7474 - Browser UI
7687 - Bolt protocol
Data: Persisted via Docker volume
2. Ollama (Local LLM)
Image:ollama/ollama:latest
Model:mistral:7b
Purpose:
LLM for natural language understanding and generation
Embedding generation via nomic-embed-text
Port:11434
Note: Runs on CPU (no GPU available), 8GB memory limit
3. Backend API (FastAPI)
Image: Custom Python image
Purpose:
REST API for frontend
RAG pipeline orchestration
Cypher query generation from natural language
Graph traversal and context retrieval
Port:8000
Endpoints:
POST /query - Natural language query
GET /graph/stats - Graph statistics
GET /graph/actors - List threat actors
GET /graph/techniques - List techniques
GET /graph/actors/{name}/techniques - Get actor's techniques
GET /graph/actors/{name}/attack-path - Get actor's kill chain
GET /graph/techniques/{id}/mitigations - Get technique mitigations
GET /graph/search?q= - Search across all entities
GET /graph/visualize - Get graph data for visualization
GET /health - Health check
4. Frontend (Nginx + Static Web App)
Image: Nginx Alpine
Purpose: Modern web UI for querying threat intelligence
Port:8501 (mapped from internal port 80)
Tech Stack:
HTML5/CSS3/JavaScript
jQuery for AJAX requests
Chart.js for statistics visualization
vis-network for interactive graph visualization
marked.js for markdown rendering
Features:
Query Page: Natural language queries with example suggestions
Explore Page: Browse threat actors, techniques, and search
Graph Map: Interactive network visualization with filtering
Statistics: Charts showing node/relationship distribution
Ollama init container will auto-pull mistral:7b and nomic-embed-text models
Ingestion job loads MITRE ATT&CK data into Neo4j
System ready when all health checks pass
Makefile Commands
make help# Show all available commands
make build # Build all Docker images
make up # Start all services in background
make up-logs # Start all services with logs
make down # Stop all services
make logs # View logs from all services
make logs-backend # View backend logs only
make status # Show status of all services
make restart # Restart all services
make clean # Stop and remove containers, volumes, images
make rebuild # Clean rebuild and start
make shell-backend # Open shell in backend container
make shell-neo4j # Open cypher-shell in Neo4j
make reset-db # Clear database and re-run ingestion
Future Enhancements
Add IOC ingestion (AlienVault OTX)
Add CVE/NVD data
Implement semantic search with vector index
Add query caching
Add authentication
Kubernetes deployment manifests
GPU support for Ollama
About
Graph RAG application for cybersecurity threat intelligence