root 5321c8602e feat: voice-agent MVP — LXC web frontend + Mac AI worker
LXC-Frontend (FastAPI + HTML/JS):
- Audio-Upload (MP3/WAV/M4A/MP4/OGG/FLAC, max. 500 MB)
- SQLite Job-Store, BackgroundTask-Pipeline
- Job-Liste mit Live-Status, Downloads (DOCX + JSON)
- Mac-Health-Indicator im UI

Mac-Worker (FastAPI):
- /api/transcribe (lightning-whisper-mlx | faster-whisper | mock)
- /api/summarize + /api/protocol via Ollama (llama3.1:8b)
- /api/export/docx via python-docx

Deploy:
- systemd-Service, Nginx Reverse-Proxy
- deploy/install.sh: idempotentes LXC-Setup

Doku: README.md, lxc-frontend/README.md, mac-worker/README.md
2026-05-13 15:33:53 +00:00

1.3 KiB

Voice-Agent — LXC-Frontend

FastAPI + statisches HTML/JS. Läuft im LXC-Container, stellt die Weboberfläche, verwaltet Jobs (SQLite) und ruft den Mac-Worker per HTTP an. Macht selbst keine AI-Verarbeitung.

Lokal starten (Entwicklung)

cd lxc-frontend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# Für lokalen Test ohne Mac kann der Mac-Worker mit WHISPER_ENGINE=mock laufen
uvicorn app.main:app --reload --port 8000

Öffnen: http://localhost:8000

Auf LXC deployen

deploy/install.sh macht alles: Repo klonen, venv anlegen, systemd-Service und Nginx einrichten. Siehe Haupt-README.md.

API

Methode Pfad Zweck
GET / Web-UI
GET /health LXC-Health
GET /api/mac/health Mac-Worker-Erreichbarkeit
POST /api/jobs multipart: audio, title → Job anlegen
GET /api/jobs Liste aller Jobs
GET /api/jobs/{id} Job-Detail
GET /api/jobs/{id}/download/{kind} kinddocx, transcript, summary, protocol

Datenfluss

Upload → SQLite-Job → BackgroundTask
  → Mac: /api/transcribe (multipart)
  → Mac: /api/summarize (JSON)
  → Mac: /api/protocol (JSON)
  → Mac: /api/export/docx (JSON) → DOCX
→ Ergebnisse landen in /var/lib/voice-agent/results/{job_id}/