ProjectIntent Over Keywords: From Stitched Embeddings to a Production Fashion Agent · Module 21: Security: threats, guards and limits · part 23 of 26
Part 23 · Module 21: Security: threats, guards and limits

Module 21: Security: threats, guards and limits

24 min read·
About 50 minutes · Needs: Module 12 (the high-level design: nginx in front of the API), Module 13 (the chat API contract, sessions and settings), Module 17 (grounded generation) · Code: part3-styleme/backend/src/styleme/uploads.py, limits.py, ratelimit.py, api.py, agent/guards.py, part1-video-rag-stitched/src/extractors/media.py, src/ui/app.py, part2-video-rag-unified/src/api/common.py, part3-styleme/frontend/nginx.conf.template, frontend/src/security.test.tsx

Where this fits

WHERE THIS FITS Intent Over Keywords this module PART 1: STITCHED VIDEO RAG three models, two spaces, RRF PART 2: UNIFIED VIDEO RAG one model, one space PART 3: STYLEME FastAPI, LangGraph, React QUALITY AND OPERATIONS evals, Docker, Cloud Run Frames ffmpeg, one per 5 s CLIP ViT-B/32 frames + text, 512 d Whisper base speech to text MiniLM 64-word chunks, 384 d Two collections p1_visual, p1_text Rank fusion RRF, k = 60 Gemini answer from transcript text API + Streamlit upload, ask, sources Windows ffmpeg, video + audio Embedding 2 Gemini, one vector One collection p2_unified, no fusion Notes + answer Gemini, cited times React web chat, photo, chips nginx one URL, /api proxy FastAPI /api/chat, limits Sessions in memory, cap of 3 Planner intent before retrieval Implementer batched embed, search Generator stylist reply, ids Grounding check no LLM, drops invented Gemini flash-lite, embedding 2 Qdrant styleme_products Catalogue ingest image + title vectors Langfuse optional traces Test video 26 questions, 4 kinds Video eval Part 1 vs Part 2 Agent evals intent, grounding Guards uploads, limits, secrets Containers compose profiles Cloud Run StyleMe only CI/CD GitHub Actions, WIF Original code v1, v2, fashion-agent
The parts this module guards (blue, the guards themselves green): nginx and the StyleMe API at the front door, the planner and generator prompts, the web app that renders replies, and the video labs' ffmpeg steps and UIs.

Earlier modules built features. This one asks how each feature can be abused, and shows the code that stops it. The highlighted parts are where attacks land: nginx and the StyleMe API at the front door, the planner and generator prompts that read text written by strangers, the web app that displays model output, and the ffmpeg steps and Streamlit UIs of the two video labs.

The rest of this project is yours to keep

This project is bought on its own, once, and stays readable afterwards, including the parts added to it later.

Or open everything with a plan