Auditable multi-agent QA council
  • TypeScript 93.8%
  • CSS 4.3%
  • JavaScript 1.7%
  • Dockerfile 0.1%
Find a file
beasty e03d0a1339
All checks were successful
Quality and container / quality (push) Successful in 36s
Quality and container / container (push) Successful in 58s
Merge pull request 'Run local development through Portless' (#1) from portless into main
Reviewed-on: #1
2026-07-22 10:41:13 +00:00
.forgejo/workflows feat: release qa council 0.3.0 2026-07-18 09:56:34 +02:00
docs Run dev through Portless 2026-07-22 12:25:51 +02:00
public feat: prepare QA Council for production 2026-07-17 17:34:12 +02:00
resources fix: stabilize and enrich result reports 2026-07-19 21:38:22 +02:00
src fix: stabilize and enrich result reports 2026-07-19 21:38:22 +02:00
test feat: interactive react-flow workflow graph and shadcn run view 2026-07-19 14:35:49 +02:00
.dockerignore feat: build auditable QA Council 2026-07-16 14:00:22 +02:00
.gitignore feat: build auditable QA Council 2026-07-16 14:00:22 +02:00
AGENTS.md feat: release qa council 0.3.0 2026-07-18 09:56:34 +02:00
biome.json feat: initialize shadcn/ui with mira olive-green preset 2026-07-19 14:01:43 +02:00
CLAUDE.md feat: release qa council 0.3.0 2026-07-18 09:56:34 +02:00
components.json feat: initialize shadcn/ui with mira olive-green preset 2026-07-19 14:01:43 +02:00
compose.yaml feat: release qa council 0.3.0 2026-07-18 09:56:34 +02:00
Dockerfile feat: release qa council 0.3.0 2026-07-18 09:56:34 +02:00
index.html feat: dark mode with theme toggle and lazy graph chunk 2026-07-19 14:52:21 +02:00
lefthook.yml feat: release qa council 0.3.0 2026-07-18 09:56:34 +02:00
package.json Run dev through Portless 2026-07-22 12:25:51 +02:00
pnpm-lock.yaml feat: initialize shadcn/ui with mira olive-green preset 2026-07-19 14:01:43 +02:00
pnpm-workspace.yaml feat: build auditable QA Council 2026-07-16 14:00:22 +02:00
portless.json Run dev through Portless 2026-07-22 12:25:51 +02:00
README.md Run dev through Portless 2026-07-22 12:25:51 +02:00
tsconfig.json feat: bootstrap tailwind toolchain and report-css isolation 2026-07-19 13:59:47 +02:00
tsconfig.server.json feat: build auditable QA Council 2026-07-16 14:00:22 +02:00
vite.config.ts feat: bootstrap tailwind toolchain and report-css isolation 2026-07-19 13:59:47 +02:00
vitest.config.ts feat: bootstrap tailwind toolchain and report-css isolation 2026-07-19 13:59:47 +02:00

QA Council

QA Council prüft hochgeladene Dokumente mit einem nachvollziehbaren Multi-Rollen-Workflow auf Basis des Pi SDK. Die acht gelieferten QA-Quelldateien liegen unverändert unter resources/qa/source. Der eigene Report-Designer liegt unter resources/skills/report-designer. Beide Quellen werden vor ihrer Verwendung gegen fest eingebaute SHA-256-Werte geprüft.

Funktionsumfang

  • sofortiger Upload ohne Vorabextraktion; sichtbare, resumierbare Seitenextraktion als erster Lauf-Schritt mit Tika, PDF-Layout, Codex-Bildbeschreibung und Hash-Cache
  • lückenlose Original-Chunk-Verarbeitung mit Locator, Hash und Coverage-Manifest; bei großen Dokumenten erzeugt ein lokaler Hybridindex quelltreue Chunk-Zusammenfassungen sowie unverbindliche RACI- und Querverbindungs-Hinweise für genau ein Gesamt-Review je Rolle
  • Anbieterwahl zwischen serverseitigem Codex-OAuth, OpenRouter und lokaler Ollama-kompatibler AI Box
  • Council-Modi Auto, Quick, Standard und Deep
  • Triage/RACI, isolierte Rollenreviews, Cross-Reviews, Debatte und Synthese gemäß den kanonischen Quellen
  • persistentes Detailprotokoll ohne Speicherung versteckter Gedankengänge
  • interaktive Ablaufgrafik mit echten Parallelspuren und agentbezogenem Log per Klick
  • finales Markdown als kanonisches Audit-Ergebnis; die lesbare Textansicht zeigt zuverlässig die vollständige finale Synthese, während eine sichtbare Report-Design-Modellstufe daraus eine resultatorientierte Tageszeitung und einen kollisionssicheren Visual Report erzeugt
  • dokumentbezogene Illustration pro Lauf über OpenAI, ein bildfähiges OpenRouter-Modell oder ComfyUI; stabile Ergebnis-/Unterseiten-URLs und A4-PDF-Export
  • eigene Dokument- und Archivbereiche mit erneutem Prüfen, Archivieren aller abgeschlossenen Läufe und gezieltem Löschen fehlgeschlagener Läufe
  • eigener Testmodus für parallele, voneinander getrennte Vergleiche von Codex, OpenRouter und AI Box mit individueller Modellauswahl und durchsuchbaren Modelllisten
  • statische Schlussprüfung des erzeugten Report-Packages auf HTML-Struktur, unbekannte CSS-Klassen und unerlaubtes JavaScript; nur bei Befunden folgt genau eine sichtbare Agent-Korrekturstufe
  • SQLite/Drizzle auf einem persistenten Volume; Modellartefakte bleiben virtuelle Datenbankobjekte

Dokumentation

Die vollständige Projektdokumentation beginnt unter docs/README.md. Sie beschreibt Architektur, Council-Regeln, Provider, Betrieb, Sicherheit und das Homelab-Deployment.

Lokal entwickeln

Voraussetzungen sind Node.js 24+, pnpm und Portless. Die API läuft intern auf Port 3001, Vite wird von Portless unter einer stabilen URL bereitgestellt.

pnpm install
pnpm dev

pnpm dev startet API und Vite über Portless. Anschließend ist die Oberfläche unter http://qa-council.localhost:1355 erreichbar, wenn Portless auf den unprivilegierten Standardport zurückfällt. Für binäre Dokumente muss zusätzlich Tika erreichbar sein, beispielsweise mit docker compose up tika.

Konfiguration

  • Codex: in der Einstellungsseite anmelden; das Pi-Auth-File liegt unter /data/pi/auth.json. Als manueller Fallback kann im Container pi /login verwendet werden.
  • OpenRouter: API-Key in der Einstellungsseite oder über OPENROUTER_API_KEY.
  • AI Box: optional konfigurierbare Ollama-Adresse; Council-Inferenz über /v1, lokale Dokument-Embeddings über /api/embed.
  • TIKA_URL: Standard http://127.0.0.1:9998.
  • DATA_DIR: Standard ./data, im Container /data.

Qualitätsprüfung

pnpm check

Dies führt Biome, TypeScript, Vitest und den Produktionsbuild aus. Der Pre-Commit-Hook ergänzt Gitleaks. Die automatisierte Testsuite ist offline und startet keine Live-KI-Analyse; ein manueller Provider-Abnahmelauf erfordert immer eine ausdrückliche Benutzeranweisung für genau diesen Lauf.

Das Projekt verwendet absichtlich zwei TypeScript-Pakete: das aktuelle typescript für App und Typecheck sowie den stabilen Alias typescript-compiler für die statische Prüfung generierter Report-Manifeste.

Deployment

Das Container-Image wird von Forgejo Actions über den gemeinsamen BuildKit- und Registry-Login-Workflow als git.heerlab.com/beasty/qa-council veröffentlicht. Die GitOps-Manifeste liegen im separaten kub-homelab-Repository unter cluster/homelab/apps/tools/qa-council.