AI-powered security scanner using Semgrep (code) and Checkov (IaC), with Gemini 2.5 Flash analysis and a React dashboard.
Recording.2026-03-13.230729.mp4
- Backend — FastAPI, Semgrep, Checkov, Gemini 2.5 Flash, Mem0
- Frontend — React 18, TypeScript, Vite, Tailwind CSS, Supabase Auth
- Python 3.12+
- Node.js 18+
- Gemini API key
- Mem0 API key
- Supabase project
1. Clone and install backend
pip install -r requirements.txt
pip install semgrep checkov2. Configure environment
Create .env in the project root:
GEMINI_API_KEY=your_gemini_key
GEMINI_MODEL=gemini-2.5-flash
MEM0_API_KEY=your_mem0_key
Create frontend/.env:
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
3. Install frontend
cd frontend
npm installTerminal 1 — Backend
python -m uvicorn api.main:app --host 127.0.0.1 --port 8000 --reloadTerminal 2 — Frontend
cd frontend
npm run devOpen http://localhost:5173, log in with your Supabase account.
| Method | Endpoint | Description |
|---|---|---|
| GET | /health |
Check Gemini + Mem0 connectivity |
| POST | /scan |
Scan a local file path |
| POST | /scan-github |
Clone and scan a GitHub repo (Semgrep) |
| POST | /scan-iac |
Clone and scan a GitHub repo (Checkov) |
| GET | /scan-history |
Retrieve past findings from Mem0 |
| GET | /scan-status/{id} |
Check status of a running scan |
Port in use
netstat -ano | findstr :8000
taskkill /F /PID <pid>Semgrep / Checkov not found
pip install semgrep checkovFrontend can't reach backend — ensure backend is running on port 8000 and CORS is not blocked.