title: ROGLAG Threat Console
emoji: 🛡️
colorFrom: blue
colorTo: purple
sdk: docker
app_port: 7860
pinned: false
ROGLAG Demo
AI RAG demo สำหรับตรวจความเสี่ยงจาก security log:
- Monitor dashboard แยก category/severity/source
- Critical alert center พร้อม badge/banner/toast ในหน้าเว็บ
- Rule classifier สำหรับ pattern ชัดเจน เช่น brute force, port scan, SQLi/XSS, C2 beacon
- Local RAG retrieval จาก
Data/files/security_logs.jsonl - Q&A ภาษาไทยแบบ local fallback
- Optional OpenRouter API สำหรับ LLM answer
Run
cd "/Volumes/Drive D/Code/Work/Work/LAGROG"
python3 server.py
เปิด:
http://127.0.0.1:8765
Use OpenRouter
Local mode ใช้ได้ทันที ไม่ต้องมี key. ถ้าจะให้ LLM ช่วยสรุป:
export OPENROUTER_API_KEY="your_key_here"
export OPENROUTER_MODEL="openrouter/free"
python3 server.py
หน้าเว็บจะใช้ local fallback ได้ทันที และจะเรียก LLM อัตโนมัติเมื่อมี key
โปรเจกต์อ่าน .env อัตโนมัติด้วย key เหล่านี้:
OPENROUTER_API_KEY=...
OPENROUTER_MODEL=openrouter/free
OPENROUTER_EMBED_MODEL=nvidia/llama-nemotron-embed-vl-1b-v2:free
Build Vector Index
ตัว demo ใช้ keyword retrieval ได้ทันที แต่ถ้าจะใช้ embedding/vector RAG จริง ให้ build index ก่อน:
python3 build_vector_index.py --limit 10000 --batch-size 32
python3 server.py
ไฟล์ vector DB จะถูกสร้างที่:
Data/files/lograg_vectors.sqlite
ถ้าไฟล์นี้มีอยู่ server จะใช้ vector retrieval อัตโนมัติ และ fallback เป็น keyword retrieval เมื่อ OpenRouter rate-limit หรือ vector index ยังไม่มี
Production Vector RAG
ผล RAG บน local กับ Vercel จะไม่เหมือนกันถ้า local ใช้ Data/files/lograg_vectors.sqlite แต่ Vercel ใช้ keyword fallback เพราะไฟล์ SQLite vector ขนาดใหญ่ถูก exclude จาก deploy.
แนะนำสำหรับ production demo:
- ใช้ Qdrant Cloud เป็น vector DB ภายนอก
- ใช้
OPENROUTER_EMBED_MODELตัวเดียวกับตอนสร้าง index - ตั้ง env บน Vercel ให้ครบ แล้ว API จะใช้
retrieval=vector_dbอัตโนมัติ
Env ที่ต้องเพิ่มบน Vercel:
OPENROUTER_API_KEY=...
OPENROUTER_MODEL=openrouter/free
OPENROUTER_EMBED_MODEL=nvidia/llama-nemotron-embed-vl-1b-v2:free
QDRANT_URL=https://xxxxx.qdrant.io
QDRANT_API_KEY=...
QDRANT_COLLECTION=roglag_logs
Upload vector index เข้า Qdrant:
python3 upload_qdrant_index.py --limit 10000 --batch-size 32
เพิ่ม env บน Vercel:
vercel env add QDRANT_URL production
vercel env add QDRANT_API_KEY production
vercel env add QDRANT_COLLECTION production
vercel env add OPENROUTER_EMBED_MODEL production
vercel --prod
Model notes
สำหรับ demo ฟรี แนะนำเริ่มที่:
openrouter/free- ง่ายสุด ให้ OpenRouter route ไป free model ที่ใช้ได้ตอนนั้นopenai/gpt-oss-120b:free- reasoning/Q&A ดี เหมาะกับสรุป incidentnvidia/nemotron-3-ultra:free- context ใหญ่ เหมาะกับ log context ยาวgoogle/gemma-4-31b:free- multilingual/doc understanding ดีnvidia/llama-nemotron-embed-vl-1b-v2:free- embedding ฟรีสำหรับ vector RAG
Free models มี rate limit และ availability เปลี่ยนได้ ควรมี local fallback เสมอ
Regenerate data
cd Data/files
python3 gen_logs.py -n 10000 --profile mixed --seed 42
python3 gen_logs.py -n 50000 --profile realistic --seed 42
ไฟล์ชุดใหญ่สำหรับ train/eval แยกไว้แล้ว:
Data/files/security_logs_extended_50k.jsonl
Data/files/security_logs_extended_sample_2k.jsonl
ถ้าจะรัน local server กับชุด 50k:
LOGRAG_DATA_FILE=Data/files/security_logs_extended_50k.jsonl python3 server.py
Critical Alerts
Local และ Vercel API มี endpoint เดียวกัน:
GET /api/alerts?limit=20
หน้าเว็บจะ poll ทุก 15 วินาที ถ้าเจอ critical alert ใหม่จะขึ้น toast และกด badge บน navbar เพื่อเปิด Incident queue ที่ filter เป็น Critical ทันที
Deploy on Vercel
โปรเจกต์มี vercel.json และ api/*.py แล้ว ดังนั้น deploy เป็น static frontend + Python Functions ได้เลย:
npm i -g vercel
vercel login
vercel env add OPENROUTER_API_KEY
vercel --prod
บน Vercel จะใช้ Data/files/security_logs.jsonl ชุด 10k เพื่อให้ bundle เล็กและ cold start เร็ว ส่วน vector SQLite และไฟล์ 50k ถูก exclude จาก deployment. Local ยังใช้ vector index ได้ตามเดิม.