# ImageForge ImageForge ist eine lokal laufende Desktop-App zur Bild-Erstellung per Prompt. Die App nutzt ein Python-Backend (FastAPI + Job-Queue) und ein Electron+React-Frontend. ## Features - Prompt + Negative Prompt - Modellauswahl (`dummy`, `localai`, `diffusion`) - Bildtyp-Presets und Stil-Presets - Image-to-Image (Startbild + Strength) - Dashboard (Queue, Status, Retry/Cancel, Compare) - Preset-System (CRUD) - Export (PNG/JPG/WEBP) - Prompt-Versionierung (`config_hash` in `meta.json`) - API-Key + Rollenmodell (`viewer`, `operator`, `admin`) - Rate-Limit pro Client - Health + Readiness + Metrics - Recovery von Job-Status nach Neustart - Storage-Governance (Retention-Cleanup) ## Setup ```powershell cd imageforge python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt npm --prefix frontend install ``` ## Start ```powershell npm run dev ``` Für den kompletten lokalen Stack (Backend + Frontend, inkl. Healthcheck): ```powershell npm run dev:stack ``` ## Serverbetrieb ```powershell $env:IMAGEFORGE_HOST="0.0.0.0" $env:IMAGEFORGE_PORT="8008" $env:IMAGEFORGE_CORS_ORIGINS="http://localhost:5173" $env:IMAGEFORGE_API_KEYS="viewerKey:viewer,opsKey:operator,adminKey:admin" $env:IMAGEFORGE_RATE_LIMIT_PER_MIN="120" $env:IMAGEFORGE_CONTENT_PROFILE="internal-relaxed" $env:IMAGEFORGE_ADMIN_TOKEN="change-me" python -m backend.app.main ``` ## Wichtige Endpunkte - `GET /health` - `GET /ready` - `GET /metrics` - `GET /metrics/prometheus` - `POST /generate` - `GET /jobs` - `POST /jobs/{id}/retry` - `POST /jobs/{id}/cancel` - `GET /dashboard/stats` - `GET/POST/DELETE /presets` - `POST /export` - `GET/PUT /admin/settings` - `POST /admin/cleanup` ## Security und Policy - API-Key Header: `X-ImageForge-Api-Key` - Admin Override Header: `X-ImageForge-Admin-Token` - Policy Profile: - `strict` - `internal-relaxed` - Audit-Logs: - `policy_audit.log` - `admin_audit.log` ## Backup / Restore ```powershell npm run backup npm run restore -- -Source backups\imageforge_backup_YYYYMMDD_HHMMSS ``` ## Tests ```powershell npm run test npm run test:e2e ``` ## CI GitHub Actions Workflow liegt in `.github/workflows/ci.yml`. ## Optional LocalAI / Diffusion ```powershell pip install diffusers torch transformers accelerate $env:IMAGEFORGE_LOCALAI_MODEL="stabilityai/sd-turbo" $env:IMAGEFORGE_LOCALAI_IMAGE_TIMEOUT_SECONDS="180" $env:IMAGEFORGE_LOCALAI_LOCAL_ONLY="1" $env:IMAGEFORGE_ENABLE_ATTENTION_SLICING="1" ``` Wenn `torch.cuda.is_available()` auf `False` bleibt, ist oft eine CPU-only Torch-Build installiert. Für NVIDIA-GPU unter Windows kann eine CUDA-Build so installiert werden: ```powershell python -m pip install --upgrade --index-url https://download.pytorch.org/whl/cu121 torch torchvision torchaudio ``` ## Optional AUTOMATIC1111 Integration ImageForge kann AUTOMATIC1111 als Provider nutzen (`model = a1111`). ### Empfohlener Produktionspfad (Stability Matrix) Für stabilen Betrieb auf Windows wird eine **saubere, manager-gesteuerte Installation** empfohlen (statt manuell gepatchter `stable-diffusion-webui`-Klone): 1. Stability Matrix installieren und dort eine frische WebUI-Instanz mit aktivierter API starten. 2. API-Endpunkt prüfen: ```powershell Invoke-RestMethod http://127.0.0.1:7860/sdapi/v1/sd-models ``` 3. ImageForge auf diese Instanz zeigen (Default ist bereits `127.0.0.1:7860`): ```powershell $env:IMAGEFORGE_A1111_BASE_URL="http://127.0.0.1:7860" ``` 1. AUTOMATIC1111 lokal starten (mit API), z. B.: ```powershell webui-user.bat --api ``` 2. Optional URL/Timeout konfigurieren: ```powershell $env:IMAGEFORGE_A1111_BASE_URL="http://127.0.0.1:7860" $env:IMAGEFORGE_A1111_TIMEOUT_SECONDS="180" $env:IMAGEFORGE_A1111_HEALTH_ENDPOINT="/sdapi/v1/sd-models" $env:IMAGEFORGE_A1111_RETRY_COUNT="2" $env:IMAGEFORGE_A1111_RETRY_BACKOFF_SECONDS="1.0" ``` Falls A1111 mit `--api-auth user:password` läuft: ```powershell $env:IMAGEFORGE_A1111_API_USER="user" $env:IMAGEFORGE_A1111_API_PASSWORD="password" ``` Alternativ als ein String: ```powershell $env:IMAGEFORGE_A1111_API_AUTH="user:password" ``` Danach erscheint `AUTOMATIC1111` in `/models` als verfügbar, sobald der A1111-Server erreichbar ist. ### Robuster Betrieb bei A1111-Ausfällen Wenn A1111 nicht erreichbar ist oder Fehler liefert, kann ImageForge automatisch auf andere Provider wechseln (z. B. `localai`, `diffusion`, `dummy`) statt den Job direkt abzubrechen. ```powershell $env:IMAGEFORGE_ENABLE_AUTO_FALLBACK="1" $env:IMAGEFORGE_FALLBACK_MODELS="a1111,localai,diffusion,dummy" $env:IMAGEFORGE_FALLBACK_TIMEOUT_SECONDS="90" $env:IMAGEFORGE_FALLBACK_MAX_STEPS="24" ``` - `IMAGEFORGE_ENABLE_AUTO_FALLBACK`: `1` aktiviert automatische Umschaltung. - `IMAGEFORGE_FALLBACK_MODELS`: Priorisierte Reihenfolge der Fallback-Provider. - `IMAGEFORGE_FALLBACK_TIMEOUT_SECONDS`: Kürzerer Timeout pro Fallback-Versuch. - `IMAGEFORGE_FALLBACK_MAX_STEPS`: Deckel für Steps bei Fallback, um Laufzeit zu reduzieren. ### Stack-Readiness prüfen Nach dem Start von Backend und A1111: ```powershell ./scripts/healthcheck-stack.ps1 -RequireA1111 ``` Das Skript validiert `/health`, `/ready`, `/models` und optional die A1111-API selbst. ## Troubleshooting - Falls Desktop-Build auf Windows an Symlink-Rechten scheitert: Entwickler-Modus oder Admin-Rechte aktivieren. - Logs: `app.log`, `policy_audit.log`, `admin_audit.log`.