mirror of
https://github.com/mblanke/Dashboard.git
synced 2026-03-01 12:10:20 -05:00
Initial commit: ATLAS Dashboard (Next.js)
This commit is contained in:
104
docs/Atlas/summary.md
Normal file
104
docs/Atlas/summary.md
Normal file
@@ -0,0 +1,104 @@
|
||||
# ATLAS Operations Log
|
||||
|
||||
---
|
||||
|
||||
## February 11, 2026
|
||||
|
||||
### RAG Pipeline — Bulk Ingestion Complete
|
||||
|
||||
- **RAG v3.0 API** running at `http://localhost:8099` (container: `rag-api`)
|
||||
- Ingested **9,016 files** from `/mnt/media/References` into Qdrant vector DB
|
||||
- **229 failed** (mostly transient timeouts — retryable via `/retry-failed`)
|
||||
- **27,255 chunks** indexed in Qdrant collection `references`
|
||||
- Hybrid search enabled: dense (bge-m3 1024-dim) + sparse (BM25) + reranking
|
||||
- 2 Whisper GPU nodes for audio transcription (medium model, Blackwell SM_120)
|
||||
- Docling for PDF/HTML/DOCX extraction
|
||||
|
||||
### CISA KEV Full Catalog Ingestion
|
||||
|
||||
- Ingested all **1,513 CISA Known Exploited Vulnerabilities** from the federal catalog
|
||||
- Source: `https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json`
|
||||
- Each CVE saved as structured text with vendor, product, description, remediation dates
|
||||
- Stored in `/mnt/media/References/feeds/cisa_kev/`
|
||||
- Completed in ~4 minutes (lightweight plaintext path, no Whisper/Docling needed)
|
||||
|
||||
### Feed Ingestion System
|
||||
|
||||
- Rewrote `ingest_feeds_v2.py` to work with RAG v3.0 API (old script called dead Phase 3 scripts)
|
||||
- Configured feeds in `/opt/rag/docs/feeds.json`:
|
||||
- **CISA KEV** (JSON) — 1,513 items
|
||||
- **Docker Blog** (RSS) — 10 items
|
||||
- **Ubuntu Security Notices** (RSS) — 10 items
|
||||
- **GitHub Blog** (RSS) — 10 items
|
||||
- **Traefik Blog** (RSS) — configured, 0 items fetched
|
||||
- State tracked in `/opt/rag/state/feeds_state_v2.json` to avoid re-ingesting
|
||||
- Host/container path translation: `/mnt/media/References` ↔ `/mnt/references`
|
||||
|
||||
### OpenWebUI RAG Filter
|
||||
|
||||
- Filter `rag_context_filter` already installed and active in OpenWebUI
|
||||
- Calls `POST /retrieve` on every chat message
|
||||
- Score threshold: 0.3, max context: 8,000 chars, top-k: 8
|
||||
- Users at `https://ai.guapo613.beer` get automatic RAG context injection
|
||||
|
||||
### Grafana RAG Dashboard
|
||||
|
||||
- Prometheus scraping `rag-api` at `192.168.1.21:8099/metrics`
|
||||
- Dashboard provisioned at `https://grafana.guapo613.beer`
|
||||
- Panels: ingest rate, duration histograms, file counts by status, query latency
|
||||
|
||||
### Dashboard Deployment
|
||||
|
||||
- Next.js dashboard built and deployed as container `dashboard`
|
||||
- Accessible at `https://dashboard.guapo613.beer` via Traefik (HTTPS confirmed 200)
|
||||
- Monitors: Docker containers, UniFi network, Synology NAS, Grafana links
|
||||
- Source: `/opt/dashboard/`
|
||||
|
||||
### Dead Code Cleanup
|
||||
|
||||
- Archived 11 obsolete Phase 3 scripts to `/opt/rag/scripts/_archived/`:
|
||||
- `explain_api.py`, `scan_books.py`, `ingest_file.py`, `ingest.py`
|
||||
- `extract_text.py`, `safe_fetch.py`, `transcribe.py`, `qdrant_init.py`
|
||||
- `bootstrap.sh`, `requirements.txt`, `ingest_feeds.py`
|
||||
|
||||
### n8n Morning Ops Digest (ATLAS-01)
|
||||
|
||||
- Imported `ATLAS-01-morning-ops-digest.json` into n8n via CLI
|
||||
- Workflow activated — triggers daily at 7:00 AM ET
|
||||
- Flow: Cron → Prometheus service status + Docker container list → Summary → LLM digest
|
||||
- Set up n8n owner account: `mblanke@gmail.com` / `Powers4w!`
|
||||
- n8n UI: `https://n8n.guapo613.beer`
|
||||
- 4 total workflows in n8n (3 existing RAG-related + ATLAS-01)
|
||||
|
||||
### Infrastructure State
|
||||
|
||||
| Service | Container | Status | URL |
|
||||
|---------|-----------|--------|-----|
|
||||
| RAG API | `rag-api` | Running (8099) | `http://localhost:8099` |
|
||||
| Qdrant | `qdrant` | Running (6333) | — |
|
||||
| OpenWebUI | `openwebui` | Healthy | `https://ai.guapo613.beer` |
|
||||
| LiteLLM | `llm-router` | Running (4000) | `https://llm.guapo613.beer` |
|
||||
| Traefik | `traefik` | Running (80/443) | — |
|
||||
| Grafana | `grafana` | Running | `https://grafana.guapo613.beer` |
|
||||
| n8n | `n8n` | Running (5678) | `https://n8n.guapo613.beer` |
|
||||
| Dashboard | `dashboard` | Running (3000) | `https://dashboard.guapo613.beer` |
|
||||
| Docling | `docling` | Running (5001) | — |
|
||||
| Whisper Node 1 | — | Running | `100.110.190.11:8200` |
|
||||
| Whisper Node 2 | — | Running | `100.110.190.12:8200` |
|
||||
|
||||
### Key Paths
|
||||
|
||||
| Path | Purpose |
|
||||
|------|---------|
|
||||
| `/opt/rag/app/main.py` | RAG v3.0 API (719 lines) |
|
||||
| `/opt/rag/app/config.py` | Settings & env vars |
|
||||
| `/opt/rag/scripts/ingest_feeds_v2.py` | Feed ingestion script |
|
||||
| `/opt/rag/docs/feeds.json` | Feed source configuration |
|
||||
| `/opt/rag/data/state.db` | SQLite ingestion state |
|
||||
| `/opt/rag/openwebui-rag-filter.py` | OpenWebUI filter source |
|
||||
| `/opt/ai-stack/` | AI stack compose & data |
|
||||
| `/opt/dashboard/` | Next.js dashboard source |
|
||||
| `/mnt/media/References/` | Document library (host mount) |
|
||||
| `/mnt/media/References/feeds/` | Ingested feed articles |
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user