Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Version control
.git
.gitignore

# Environment files (never bake secrets into images)
.env
.env.*
!.env.example

# Python artifacts
__pycache__/
*.pyc
*.pyo
*.pyd
.pytest_cache/
.ruff_cache/
*.egg-info/
dist/
build/
venv/
.venv/

# Node / frontend
node_modules/
.next/
frontend/node_modules/
frontend/.next/

# C++ build artifacts (rebuilt inside the container)
drift_engine
drift-engine/drift_engine

# Go binaries (rebuilt inside the container)
ingestion-service/sentinel-ingestion
ingestion-service/ingestion-service

# OS / IDE
.DS_Store
Thumbs.db
.idea/
.vscode/
*.swp

# CI / GitHub
.github/

# Documentation and project management
*.md
LICENSE
DailyLog.md
Contributing.md
system_design.md
FILE Structure
Metrics.md

# Terraform state (contains sensitive data)
terraform/
*.tfstate
*.tfstate.*
*.tfvars

# Helm / k8s (not needed inside service containers)
helm/
k8s/

# Load tests
load_test/

# Monitoring config (mounted as volumes in compose)
monitoring/
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,4 @@ jobs:
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: pytest tests/ -v
run: python -m pytest tests/ -v
71 changes: 69 additions & 2 deletions render.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,74 @@
services:
# ── Streamlit dashboard — primary web UI ───────────────────────────────────
- type: web
name: sentinel-ai
name: sentinel-dashboard
env: docker
plan: gpu
dockerfilePath: ./streamlit-dashboard/Dockerfile
dockerContext: ./streamlit-dashboard
plan: free
autoDeploy: true
healthCheckPath: /_stcore/health
envVars:
- key: WAREHOUSE_MODE
value: postgres
- key: DATABASE_URL
sync: false # set in Render dashboard
- key: INGESTION_URL
value: https://sentinel-ingestion.onrender.com
- key: DRIFT_ENGINE_URL
value: https://sentinel-drift-engine.onrender.com
- key: LLM_GUARD_URL
value: https://sentinel-llm-guard.onrender.com

# ── Ingestion service (Go) ─────────────────────────────────────────────────
- type: web
name: sentinel-ingestion
env: docker
dockerfilePath: ./ingestion-service/Dockerfile
dockerContext: ./ingestion-service
plan: free
autoDeploy: true
healthCheckPath: /health
envVars:
- key: WAREHOUSE_MODE
value: postgres
- key: DATABASE_URL
sync: false # set in Render dashboard
- key: PORT
value: "8080"

# ── Drift engine (C++ + Python) ────────────────────────────────────────────
- type: web
name: sentinel-drift-engine
env: docker
dockerfilePath: ./drift-engine/Dockerfile
dockerContext: ./drift-engine
plan: free
autoDeploy: true
healthCheckPath: /health
envVars:
- key: WAREHOUSE_MODE
value: postgres
- key: DATABASE_URL
sync: false # set in Render dashboard

# ── LLM Guard ──────────────────────────────────────────────────────────────
- type: web
name: sentinel-llm-guard
env: docker
dockerfilePath: ./llm-guard/Dockerfile
dockerContext: ./llm-guard
plan: free
autoDeploy: true
healthCheckPath: /health
envVars:
- key: WAREHOUSE_MODE
value: postgres
- key: DATABASE_URL
sync: false # set in Render dashboard
- key: OLLAMA_HOST
sync: false # set in Render dashboard if using Ollama
- key: LLM_MODEL
value: llama2