
AIVP ist eine praxisnahe Plattform für KI-Sicherheits-Labs, die 4 Phasen und über 50 Labs umfasst (derzeit über 50 Szenarien in der Codebasis). Sie kombiniert Ollama + Llama 3.1, ein FastAPI-Backend und ein React/Vite-Frontend, damit Praktiker offensive und defensive KI-Sicherheitstechniken sicher üben können.
Wenn dir das hilft, gib dem Repo bitte einen ⭐ Stern / Like, forke es und eröffne gerne PRs!
Nutze die eigens dafür vorgesehene Ausführungsanleitung: RUN_STEPS.md. Sie deckt den manuellen Betrieb (Vite + uvicorn) und Docker (nginx + API + Redis, Ollama auf dem Host) ab, einschließlich der Voraussetzungen für zuverlässigen Lab-Zugriff.
Das Konfigurationsverhalten ist in aktiven Laufzeitpfaden strikt: Fehlende erforderliche Env-Werte können den Start bewusst verhindern.
Die Plattform umfasst vier Trainingspfade:
Jedes Lab verwendet dynamische, pro Lab einzigartige Secrets und eine explizite Validierung, damit du den Erfolg von Exploits in einer sicheren Umgebung verifizieren kannst.
Nur für Bildungszwecke — Die Labs simulieren offensive und defensive KI-Sicherheitsszenarien auf lokalen Systemen. Greife nicht echte Dienste, Daten oder Infrastruktur an, die du nicht besitzt oder für die du keine ausdrückliche Genehmigung zum Testen hast. Die Secrets in diesen Labs sind synthetisch und werden pro Lab neu generiert; es handelt sich nicht um Produktionsanmeldedaten. Nutzung auf eigene Gefahr. Es wird keine Garantie gewährt.
POST /api/labs/{lab}/chatZiehe das Modell mindestens einmal:
ollama pull llama3.1(oder eine andere llama3.1-kompatible Variante, die du bevorzugst)
apps/
api/ # FastAPI backend (SSE -> Ollama)
main.py
requirements.txt
.env.example
web/ # React + Vite frontend
src/
.env.example
Tipp: 16 GB Systemspeicher funktionieren; 32 GB bieten komfortable Reserven für Browser, Node, Python und IDE.
Vom Repo-Stammverzeichnis aus (der Ordner, der apps\api und apps\web enthält):
# 0) Ensure the model is available
ollama pull llama3.1
# 1) Backend venv + deps + run
cd apps/api
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env.example .env
uvicorn main:app --reload --port 8000
Öffne ein neues PowerShell-Fenster für das Frontend:
cd apps/web
npm install
copy .env.example .env
npm run dev # http://localhost:5173
# 0) Model
ollama pull llama3.1
# 1) Backend
cd apps/api
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
uvicorn main:app --reload --port 8000
In einer anderen Shell:
cd apps/web
npm install
cp .env.example .env
npm run dev # http://localhost:5173
ollama serve falls nötig).ollama pull llama3.1.:8000 aus.:5173 aus.Das Frontend streamt Server-Sent Events (SSE) vom Backend; stelle sicher, dass die CORS-Origins in
apps/api/.envhttp://localhost:5173enthalten.
Akzeptierte Lab-ID-Formate (vom Backend): PI-01, PI_01, pi01, p01 → alle werden zu PI_01 normalisiert.
Dynamische Secrets werden erstellt, wenn ein Lab nach einem Backend-Neustart zum ersten Mal verwendet wird. Du kannst ein Secret auch zurücksetzen:
POST /api/secrets/reset/{labId}
Das Secret jedes Labs ist unterschiedlich und wird bei einem Backend-Neustart neu generiert (im Speicher). Ziehe in Betracht, es mit einer Datei/DB zu sichern, wenn du Persistenz benötigst.
apps/api/.env)OLLAMA_URL=http://localhost:11434
OLLAMA_MODEL=llama3.1
CORS_ORIGINS=http://localhost:5173
SERVER_SALT=change-me-in-production
AIVP_DEFAULT_MODE=off
ENABLE_TRAINING_LABS=false
OLLAMA_MODEL_TRAINING_LABS=llama3.1
REDIS_URL=redis://localhost:6379/0
REDIS_HOST=localhost
REDIS_PORT=6379
MEMORY_TTL_SECONDS=3600
SESSION_TTL_SECONDS=3600
AGENT_B_URL=http://localhost:8001
MM_API_BASE=http://localhost:8000
API_BASE_URL=http://localhost:8000
JIRA_URL=https://example.atlassian.net
GITHUB_API_BASE_URL=https://api.github.com
SLACK_API_BASE_URL=https://slack.com/api
apps/web/.env)# Local dev: full URL to the API (Vite proxies /api in vite.config as well)
VITE_API_BASE=http://localhost:8000/api
VITE_DEV_API_TARGET=http://localhost:8000
[email protected]
Docker- bzw. Produktions-Builds verwenden VITE_API_BASE=/api, damit der Browser hinter nginx Pfade mit gleicher Herkunft (Same-Origin) nutzt (siehe RUN_STEPS.md → Option B).
POST /api/labs/{lab}/chat — SSE-Stream mit data: {"content": "..."}POST /api/secrets/validate — { labId, answer } → { success, message }POST /api/secrets/reset/{lab} — (optional, zum Testen)Füge deine Screenshots unter docs/screenshots/ hinzu und verlinke sie hier:




``
Führe npm install innerhalb von apps/web aus.
``
Füge from typing import Iterator in main.py hinzu (oder entferne die Annotation).
CORS / SSE blockiert
Stelle sicher, dass CORS_ORIGINS http://localhost:5173 enthält.
Ollama-Fehler
Stelle sicher, dass ollama serve läuft und das Modell gezogen wurde: ollama pull llama3.1.
Sanity-Check mit curl
curl -N -X POST http://localhost:8000/api/labs/PI_01/chat \
-H "Content-Type: application/json" \
-d '{"prompt":"Say hello in one sentence."}'
Du solltest Streaming-Zeilen wie data: {"content":"Hello …"} sehen.
Beiträge sind willkommen! Bitte:
Vorgeschlagene Bereiche:
Wenn du einen Fehler entdeckst oder eine Idee hast:
Wenn dir dieses Projekt gefällt, gib ihm bitte einen ⭐ Stern / Like und teile es mit anderen!
MIT.