Nach einem Netzausfall erhielt die VM .131; Agents, nex-admin und
kubeconfig zeigten auf .124, alle Knoten NotReady.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
main (bis 13.10.) enthielt eine parallele Fassung von Task 0.4 (c81e372) sowie
KNOW-Befunde und die Ontologie. Konflikte zugunsten des Plan-Branches gelöst
(ausgerollter Stand); übernommen aus main: Ontologie (core/src/knaster/ontology,
ontology/, Tests, Router-Image), KNOW-Doku, cpu_roles im Placement samt
Kennzeichnung von pve61 und gode-pc-05/06 im Inventar und Test.
infra-stack kopiert jetzt auch ontology/ nach infra (Router-Build braucht es).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Admin-Schlüssel je Person auf ops (Bastion) aus sites/knaster/proxmox.yaml
(access.ops_ssh_keys/_revoked), Playbook admins.yml, Test, Übergabe in
BETRIEB §15. Einstieg für Agenten und neue Admins: AGENTS.md, Projektkarte,
bekannte Probleme. Weg 2 (Verwaltung über NEX) als Entwurf in Phase 9.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ein Pod je GPU-VM (Embed+Rerank bzw. Chat), Host-Netz mit den Ports aus dem
Compose, P2000 fest per UUID (NVIDIA_VISIBLE_DEVICES). Das Device Plugin
vergibt nur noch Index 0 (M4000). Rolle gpu-llamacpp: gemeinsame Vorbereitung
(prepare.yml), k3s.yml mit Image-Import und Compose-Stopp; gpu-llamacpp.yml
bricht ohne -e llamacpp_compose=true ab.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kube-state-metrics (NodePort 30808) und ServiceAccount prometheus-infra (nur
nodes/metrics) im Cluster; Prometheus auf infra liest kubelet/cAdvisor per TLS
gegen die k3s-CA. Ziele per file_sd aus kubectl get nodes, cAdvisor auf die
nötigen Reihen begrenzt. Dashboard "k3s – Pods" (Vorgabe nex), Alerts K3s*
nur mit notify. Playbook monitoring-k3s.yml.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Vorbereitung für Agenten im Cluster (nex-Spec 2026-10-19, D259/D263/D265):
Services ohne Selector auf die Host-Ports von appsrv08, ServiceAccount mit
Role nur für den Namespace nex, Pull-Secret aus einer Datei auf ops.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- Build-Pin wie im Benchmark (b6000 = 4762ad7, CUDA 12.4, sm_52;61), Host-Netz,
Log-Rotation, /slots und Web-Oberfläche aus, Qwen3 ohne Denkphase.
- Exporter aus dem Compose entfernt (laufen nativ, Rolle gpu-exporters).
- Rolle gpu-llamacpp: Karten-UUID über den Namen, Modelle mit Prüfsumme,
ufw-Regeln nur vorgemerkt. Inventargruppe gpu_llamacpp (ohne gpu-pve52).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- count: 1 in gpu-llamacpp greift die M4000 (geprüft), für die P2000 device_ids setzen
- Empfehlung pve44/46/48 unter der Bedingung, dass Embedding + Rerank gemeinsam auf die P2000 passen
- 8B-VRAM: 7,73 GiB gemessen, im Katalog auf 7,8 aufgerundet
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Katalog: vram_gb für Qwen3-Embedding, Qwen3-4B und Qwen3-8B gemessen, Messwerte als note
- ADR-0006: Nachtrag „Benchmark“ mit Tabellen und Empfehlung zur M4000
(ja für STT auf pve52, auf pve44/46/48 vorerst nein)
- Plan: Task 3.3 abgehakt, Strommessung, Dialektsätze und D131/D133 offen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Erkennung 10 s → 2,94 s, 60 s → 8,63 s (M4000, Median), TTS-TTFB < 1 s,
Autostart getestet, Stufe 2 geprüft (torch 2.9.1+cu126 letzte Version mit sm_50).
Offen: feste IP (D5), Abnahme von appsrv08, Slot stt-de.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bei der HA-Probe startete dockerd auf pve48 nicht (bbolt „invalid freelist page“): Nach zfs receive
liefert der Zielknoten für früher gemappte Dateien alten Inhalt aus dem Seiten-Cache. Ein oneshot-Dienst
im LXC verwirft vor containerd/docker den Cache aller Dateien (posix_fadvise DONTNEED).
BETRIEB.md Abschnitt 7: URLs, Geheimnisse (ohne Werte), file_sd auffrischen, Wiederherstellung.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- deploy/compose/nex-speech: whisper-server v1.9.4 (sm_52/sm_61, Port 8178, -l de -bs 5
--convert, tmpfs, Aufwärmen mit 1 s Stille) und OpenAI-kompatibler Piper-Wrapper
(Port 8179, mp3/opus/aac/flac/pcm gestreamt, wav, PCM 24 kHz mit Rate-Header)
- Host-Netz, damit ufw greift; keine Texte in Logs, kein Access-Log
- Rolle nex-speech + Playbook (nur gpu-pve52): ufw, Modelle mit sha256, Compose bauen/starten
- compose-check um nex-speech erweitert, community.docker in requirements.yml
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- deploy/compose/infra: Dienst litellm entfernt (D4), Router auf LITELLM_BASE_URL
(appsrv08, Port noch offen), alle Images gepinnt, Grafana und pve-exporter
ohne Profile, node-exporter für den LXC, Zustand über KNASTER_STATE_DIR
- Prometheus: GPU-VMs per file_sd (node, gpu), Proxmox-Knoten per IP, infra-node
- Grafana: Datasource und Dashboards provisioniert (grafana.com 10347, 1860,
14574 sowie knaster-Übersicht)
- Alertmanager: n8n-Receiver nur vorbereitet (auskommentiert)
- Ansible: Rollen infra-stack und gpu-exporters, Playbooks monitoring.yml und
monitoring-targets.yml, Skript monitoring-targets.py (tofu output → file_sd)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nach dem Treiber-Neustart hatten gpu-pve44 und gpu-pve46 ihre DHCP-Adressen
getauscht; die strenge Hostschlüssel-Prüfung hat den Lauf gestoppt. netplan
nutzt jetzt die MAC als Client-ID (Voraussetzung für Reservierungen, D5).
Der Handler für nvidia-ctk ist eine idempotente Aufgabe, vor dem Neustart
werden Handler ausgeführt. scripts/refresh-vm-access.sh holt Adressen aus
dem Agenten, schreibt das Inventar und trägt die Hostschlüssel ein.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ops-LXC, vfio auf allen GPU-Knoten (Bildschirm danach schwarz), Templates
9044/9046/9048/9052, API-Benutzer tofu@pve. Auftrag Sprachmodelle mit
Abgleich gegen den echten Cluster unter docs/auftraege/. Die 4-TB-HDD ist
die Toshiba BACKUP und scheidet für den Cluster aus.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
bpg/proxmox ~> 0.116.0 (nur API). Template je Knoten, Speicher je Gast,
hostpci dynamisch aus vms.*.gpus, kein Secure Boot (DKMS), Vendor-Snippet
für den qemu-guest-agent, Ausgabe ansible_inventory für die DHCP-Adressen.
scripts/make-template.sh legt das Ubuntu-24.04-Template mit Prüfsumme an.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Inventar mit pve44–pve61 und den Ada-Rechnern gode-pc-05/06 (M4000 weiter
disabled). Registry-ops auf gpu-pve44/gpu-pve48/infra laut Placement, bei
den Ada-Slots entfallen pve_node und vmid (Worker-Registry v2, Task 6.4).
Tests: neuer test_site_knaster_matches_real_nodes, Konsistenztest auf
gpus-Liste umgestellt. ADR-Nachträge zu D1 (Variante B), D2 (eine GPU-VM
pro Knoten) und D3 (Ada bleibt Windows, vorgeschlagen).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
proxmox-boot-tool refresh endet ohne proxmox-boot-uuids mit Exit 0, die
Verkettung mit || hat update-grub deshalb nie erreicht.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
proxmox.yaml mit gelesenen PCI-IDs/IOMMU-Gruppen, eine GPU-VM pro Knoten
mit allen Karten, DHCP, Templates je Knoten. pve-host nur für GPU-Knoten:
vfio-pci-IDs auf dem Knoten gelesen, softdeps, sysfb aus, initramfs-
Handler, Vendor-Snippet für den Gast-Agenten, Replikation erst wenn
der Container existiert.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Freigabe vom 12.10. umgesetzt: zweite SSD per Seriennummer gelöscht,
tank angelegt und im Cluster eingetragen, ARC 4 GiB, Neustart-Probe
auf pve48 (Legacy) und pve44 (UEFI) bestanden. Nebenbefund: pve44 ohne
/boot/efi in fstab.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Idempotent, läuft vom Admin-Laptop in Git-Bash. Hostschlüssel wird nur mit
--reinstall verworfen, das Update läuft per systemd-run abgekoppelt von der
SSH-Sitzung. .gitattributes hält Shell-Skripte auf LF.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Chronologischer Plan (Phasen 0-9) für pve44/46/48/52/61 mit
Entscheidungen D1-D5 (ZFS, GPU-VM pro Knoten, Ada unter Windows,
ein LiteLLM mit PSE, IP-Plan), Duplikat-Zuordnung zu Epic 7 und
Parallelspur NEX. PLAN §8 und IMPLEMENTATION "Gemeinsames
Deployment" als abgelöst markiert.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>