# Z840 — kaburuaibox Primary AI and automation server. Runs Hermes agent, Ollama, Open WebUI, and supporting services. ## Specs | Item | Detail | |------|--------| | Hostname | kaburuaibox | | Hardware | HP Z840 Workstation | | CPU | 2× Intel Xeon E5-2620 v4 @ 2.10GHz (8C/16T each, 16 cores / 32 threads total, 85W TDP) — swapped from E5-2698v3 for lower power draw | | RAM | 128GB DDR4 ECC @ 2133MHz (purchased with E5-2698v3 config, retained) | | GPU | 2× NVIDIA GeForce RTX 3060 12GB (MSI 3-fan + ASUS 2-fan) — driver 580.159.03 (CUDA 13.0) | | Storage | 1.92TB SATA SSD (OS /dev/sda) + 931GB NVMe SSD (PCIe adapter, /models, Ollama model storage) + ZFS pool kaburudata (8.2 TB, RAIDZ1 3× WD Red 3TB + 1× hot spare, 100GB backups mirror from TrueNAS) — spare replaced 2026-07-12: WCC130932358 (WD Se, Bay 3) → WCC1T0774102 (WD Red, Bay 3) | | OS | Ubuntu 24.04 LTS | | PSU | Delta Electronics DPS-1125AB-1A — 1125W (1450W on 240V UK) | ## Network | Interface | Detail | |-----------|--------| | eno1 | Onboard 1Gb — DHCP, fallback only | | ens1f0 / ens1f1 | Intel 10Gb dual-port NIC (ixgbe), bonded as bond0 | | bond0 | active-backup bond, static 192.168.0.253 | | tailscale0 | 100.120.18.44 | **Netplan config:** `/etc/netplan/01-netcfg.yaml` - bond0 metric 50 (preferred over eno1) - Both 10Gb MACs registered in OPNsense dnsmasq → 192.168.0.253 - ens1f0: `b4:96:91:11:44:dc` - ens1f1: `b4:96:91:11:44:de` ← active port (has cable) ## Access - SSH: `ssh kaburu@192.168.0.253` (LAN) or `ssh kaburu@100.120.18.44` (Tailscale) - Open WebUI: `http://100.120.18.44:3000` (Tailscale only) - Hermes Dashboard: `http://100.120.18.44:8765` (Tailscale only) ## Services | Service | Port | Notes | |---------|------|-------| | llama-server | 11440 | llama.cpp TurboQuant — primary inference (Qwopus3.6-27B-v2-MTP) | | Headroom Proxy | 8787 | Context compression — proxies llama-server | | Open WebUI | 3000 | Chat interface — llama-server only, Docker named volume `open-webui` | | Hermes Agent | — | Docker, no external port | | Hermes Dashboard | 8765 | FastAPI + WebSocket | | Hermes Redis | 6379 | Internal only | | ComfyUI | 8188 | Image generation — `mmartial/comfyui-nvidia-docker:ubuntu24_cuda12.6.3-latest` | | Immich | 2283 | Photo management — v2.7.5, host network mode, `/kaburudata/immich/`, SOCAT proxy for v3 binding, Redis auth required, DO NOT upgrade past 2.7.5 until GrapheneOS app updated | | Portainer CE | 9443 (HTTPS) | Docker management UI — `https://100.120.18.44:9443` | ## DR / Remote Access (installed 2026-08-19) | Component | Details | |-----------|---------| | XFCE4 | Lightweight desktop environment | | xrdp | RDP server on port 3389 — connect from any RDP client | | Xvfb | Virtual framebuffer on `:1` (1920×1080×24) — always-on, no physical display needed | | openbox | Lightweight WM on Xvfb display | | RustDesk | ID `339562074`, relay `kaburu.cc`, password `kaburuDR2026` | **Connect via RDP:** `:3389` → login as `kaburu` **Connect via RustDesk:** ID `339562074` → password `kaburuDR2026` Services: ``` xvfb.service — virtual display :1 (enabled, auto-start) xrdp.service — RDP server (enabled, auto-start) rustdesk.service — remote desktop via kaburu.cc relay (enabled, auto-start) ``` Config files: - `/root/.config/rustdesk/RustDesk2.toml` — RustDesk config (password set) - `/etc/systemd/system/rustdesk.service.d/override.conf` — relay server args - `/home/kaburu/.xsession` — XFCE session for xrdp ## Inference stack (Ollama — on-demand, single-model-at-a-time) **llama-server permanently disabled 2026-07-04.** All models served via Ollama on port 11434. Models loaded on-demand — only one large model fits in 24GB VRAM at a time. `OLLAMA_KEEP_ALIVE=-1` on always-on models; others load/unload as needed. ### Ollama Setup **Version**: 0.31.1 **Systemd service**: `ollama.service` (enabled, auto-start) **Models directory**: `/models/ollama` **Systemd Configuration** (`/etc/systemd/system/ollama.service.d/override.conf`): ```ini [Service] Environment="OLLAMA_MODELS=/models/ollama" Environment="OLLAMA_HOST=0.0.0.0:11434" Environment="CUDA_VISIBLE_DEVICES=0,1" Environment="OLLAMA_GPU_OVERHEAD=536870912" Environment="OLLAMA_KEEP_ALIVE=-1" Environment="OLLAMA_NUM_GPU=2" Environment="OLLAMA_SCHED_SPREAD=1" ``` **Installed Models** (updated 2026-07-17): | Model | Size | Context | Status | Notes | |-------|------|---------|--------|-------| | `qwopus-mccoder:latest` | 16 GB | 65536 | ✅ Code generation | temp=0.7, top_k=20, top_p=0.95 | | `qwen36-reap:28b` | 17 GB | 65536 | ✅ Reasoning | Fixed 2026-07-13 | | `TC-McQwen:latest` | 16 GB | 65536 | ✅ ThinkingCap Qwen3.6-27B Q4_K_M | Fewer thinking tokens; GGUF `/models/ThinkingCap-Qwen3.6-27B-Q4_K_M.gguf`; Hermes `custom:local-ollama` | | `minicpm-v:8b` | 5.5 GB | default | ✅ Vision model | Can coexist with a large model (~5GB VRAM) | **Removed**: `mistral-nemo:12b` (fired for hallucinating 2026-07-08); `glm47-reap:23b` (fired 2026-08-08 — Steve: "thick as shit, no context", deleted from Ollama + GGUF, removed from Hermes fallback chain) **GPU Memory Constraints**: - Each RTX 3060: 12 GB VRAM (24 GB total across both GPUs) - `KAT-Coder-V2.5-Dev-APEX-I-Mini` via llama-server (11440): ~20GB VRAM, 262K ctx — always-on - `qwopus-mccoder:latest`: ~16GB VRAM - `qwen36-reap:28b`: ~17GB VRAM - `minicpm-v:8b`: ~5GB VRAM (can coexist with a large model) - **Only ONE large model (23b+) fits at a time** (except minicpm-v) **Optimal Operation**: KAT-Coder-V2.5-Dev-APEX-I-Mini (llama-server, :11440) is the default local model — 262K context, native MoE architecture. Switching Ollama models: ```bash ollama run qwopus-mccoder # Loads when first called ollama run qwen36-reap:28b # Loads when first called ollama ps # Check what's loaded ollama show --modelfile # Check model config ``` The `OLLAMA_KEEP_ALIVE=-1` setting means models stay loaded until explicitly replaced or Ollama restarts. | Item | Detail | |------|--------| | llama-server | Disabled. Was on port 11440 | | Headroom Proxy | Disabled. Was: localhost:8787 → 11440/v1 | | ComfyUI | Stopped. ## Hermes Infrastructure monitoring and automation agent. Full documentation: [[hermes]] - Stack: `/opt/hermes/` - Logs: `/mnt/data/hermes/logs/` (ZFS) - Config/SSH key: `/opt/hermes/config/hetzner_id_ed25519` - Manages: Hetzner server health, WordPress updates, backups, SSL, security - Migrated from ubuntu-svr → Z840 on 2026-05-17 - Note: full rebuild planned as part of Owl Alpha Phase 4 ## Key paths | Path | Purpose | |------|---------| | /opt/hermes/ | Hermes stack | | /mnt/data/hermes/logs/ | Hermes logs (ZFS) | | /mnt/data/ | ZFS data pool | ## Docker management ```bash # Hermes cd /opt/hermes && docker-compose ps docker logs hermes_agent --tail 50 docker-compose restart # Open WebUI docker ps | grep open-webui docker logs open-webui --tail 50 ``` ## Open WebUI Chat interface backed by Ollama (11434). | Item | Detail | |------|--------| | Image | `ghcr.io/open-webui/open-webui:v0.9.6` | | Port | 3000 | | Data | Docker named volume `open-webui` → `/var/lib/docker/volumes/open-webui/_data` | | Access | `http://192.168.0.253:3000` (LAN) or `http://100.120.18.44:3000` (Tailscale) | | Login | web@kaburu.co | | Backend | Ollama `http://192.168.0.253:11434/v1` | | Models | `mistral-nemo:12b` (text), `minicpm-v:8b` (vision) **⚠️ Volume:** Named volume `open-webui` — NOT a bind mount. Data survives container removal. Do NOT use `-v /opt/open-webui/data:...` — that path is a stale empty copy and must stay deleted. **Docker run command (for reference/rebuild):** ```bash docker run -d \ --name open-webui \ --restart unless-stopped \ -p 3000:8080 \ -v open-webui:/app/backend/data \ -e WEBUI_AUTH=true \ -e DO_NOT_TRACK=true \ -e OPENAI_API_BASE_URLS='["http://192.168.0.253:11440/v1"]' \ -e OPENAI_API_KEYS='["dummy"]' \ -e DEFAULT_MODELS=qwopus-mccoder \ -e ANONYMIZED_TELEMETRY=false \ -e SCARF_NO_ANALYTICS=true \ -e RAG_EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2 \ -e AUXILIARY_EMBEDDING_MODEL=TaylorAI/bge-micro-v2 \ -e WHISPER_MODEL=base \ -e ENABLE_OLLAMA_API=false \ ghcr.io/open-webui/open-webui:v0.9.6 ``` ## Notes - docker-compose version is 1.29.2 (legacy) — use `docker-compose` not `docker compose` - Open WebUI backed by llama-server (11440) only — Ollama removed 2026-07-02 - Default model: `qwopus-mccoder` (Qwopus3.6-27B-v2-MTP, 16GB GGUF) - Headroom proxy at localhost:8787 providing context compression - Open WebUI data in named Docker volume `open-webui` — persists across container restarts and removals - 2× RTX 3060 installed and fully powered (6-pin→8-pin adapters fitted 2026-05-26) - Box hardware complete as of 2026-05-26 - 6-pin PSU rails confirmed sufficient — 1450W on UK 240V, ~700W expected load under full GPU load - NVIDIA driver upgraded 535 → 580.159.03 on 2026-05-26 (CUDA 13.0 support) --- ## Hermes Agent (NousResearch) — Production *Installed 2026-05-31. Production as of 2026-06-03.* Not to be confused with the Docker monitoring stack at `/opt/hermes/`. Full documentation: [[hermes]] **GitHub:** https://github.com/NousResearch/hermes-agent **Version:** v0.15.1 (current HEAD, updated 2026-06-03) | Service | Port | Purpose | |---------|------|---------| | hermes-gateway | 8642 | Gateway + OpenAI API (desktop app) | | hermes-dashboard | 9119 | Web UI + TUI chat (LAN/Tailscale) | | hermes-mcpo | 11435 | MCP bridge for Open WebUI | - Model: qwen36-reap via llama-server (localhost:11440/v1), provider: custom - Dashboard: http://192.168.0.253:9119 — accessible from any LAN/Tailscale device, PWA-installable - Desktop app: connect to http://192.168.0.253:8642 with API key from ~/.hermes/.env ## PCIe Slot Map + P40 Plan (verified 2026-08-18) **Three x16 slots confirmed via root-port max_link_width** (skill claim "3× PCIe Gen3 x16" verified): **⚠️ Physical layout constraints (verified 2026-08-18):** - 10Gb NIC (X540-AT2) is **SOLDERED** to the board at root port 00:01.1 — NOT a removable card - Onboard "VGA" is actually a **serial port** — NO onboard video output at all - P40 is a **dual-width** card — installing one in slot 1 (00:02.0) physically blocks/overlaps the soldered 10Gb NIC - Once 3060s removed + P40s installed → **zero video output** (P40s are compute-only, no display) | Root port | Max | Holds now | P40 plan | |-----------|-----|-----------|----------| | 00:02.0 | x16 | NVMe adapter (P40 #1 here blocks soldered 10Gb NIC) | P40 #1 (⚠️ see NIC note) | | 00:03.0 | x16 | RTX 3060 #1 | P40 #2 | | 80:02.0 | x16 | RTX 3060 #2 | P40 #3 | **Other slots:** | Root port | Max | Device | Notes | |-----------|-----|--------|-------| | 00:01.0 | x4 | SAS2308 (mpt3sas) | Holds ALL 5 drives (sda SSD + 4× WD Red ZFS). Must stay. | | 00:01.1 | x4 | X540-AT2 dual 10G (bond0) | **SOLDERED — cannot move. Blocked by P40 in slot 1** | | 00:1c.0 | x1 | I210 1G | Soldered, unused (DOWN) — fallback if 10Gb lost | | 00:1c.4 | x4 | empty | Second-NVMe candidate | | 80:00.0 | x4 | empty | /models NVMe target (move here) | | 80:01.0 | x4 | empty | Second-NVMe candidate | | 80:03.0 / 80:03.2 | x8 | empty | Spare | **Plan (updated 2026-08-18):** 3× Tesla P40 → the three x16 slots (00:02.0/00:03.0/80:02.0). Move /models NVMe to 80:00.0 with a proper PCIe3 x4 M.2 adapter (current £8.99 adapter is x1-traced — that's the 890 MB/s ceiling). Second NVMe → 80:01.0 (or 00:1c.4). 3060s → Z600 (turnkey AI box). Power: 3× 250W P40 + ~200W system ≈ 950W — within 1125W PSU (1450W UK). **NIC resolution options (choose one):** 1. USB 10Gb adapter (Aquantia AQC107-based, ~£30-50) — good throughput, loses a USB port 2. Live with onboard 1Gb I210 — fine for SSH/Tailscale/model serving on LAN 3. 10Gb NIC in a spare x4/x8 slot — NO, no spare after P40s occupy all x16 + NVMe takes x4 slots **Video output resolution:** - Lenovo ThinkPad Pro USB 3.0 Dock 40A7 (DisplayLink DL-3900) — **purchased £12.94** (eBay 358912340509) - Provides VGA/DP output once Linux loads evdi driver — NO BIOS/POST display - For BIOS access: swap a spare GPU into a slot temporarily (hassle but rare need — zero local video needed in ~2 years of headless operation) - Intel AMT: **NOT available** (Z840 has HECI but AMT firmware not configured) — AND KVM anyway needs a GPU output to capture, so moot with no video card **P40 power connector (verified 2026-08-06):** card has ONE female 8-pin, **EPS-keyed with Tesla-specific pinout** — standard PCIe 8-pin does NOT fit/function. NVIDIA ships dongle **030-0571-000** (CPU→PCIe 8-pin) in the box; if missing, buy "Dual 6-pin → EPS 8-pin for Tesla P40" (~£10). Z840 PSU feeds **6-pin rails** (3060s run on 6-pin→8-pin adapters, fitted 2026-05-26) → chain: 6-pin rail → adapter → dongle → card. Steve ordered 1 spare 6-pin→8-pin adapter in case cards ship without dongle. P40 TDP 250W × 3 + system ≈ 950W total. **NVMe adapter to buy (bought 2026-08-06):** JEYI M.2 NVMe → PCIe x4, aluminium heatsink, £7.09 ea ×2 (Fast Sam Shop, eBay 226923563359, PCIe x4 variant — NOT the x16). ECM20 discontinued on UK eBay; JEYI is the replacement. Links at PCIe 3.0 x4 (~3.5 GB/s) in Z840 slots. **NVMe adapter spec to buy:** M.2 NVMe → PCIe 3.0 **x4** (NOT x1!), full-height bracket, M.2 2280. e.g. SilverStone ECM20 (~£12) or generic "PCIe 3.0 x4 M.2 NVMe adapter" — check edge connector has x4 traces (most cheap £8.99 ones are x1). Heatsink recommended for sustained model loads. ### Phase 2 — Model Curation (pull → test → drop) Once 3× P40 are live on GRID/Vulkan, the job is curating a model set that works **as a unit within Hermes** — served via llama-server (Vulkan multi-GPU), fitting the shared 72GB (KV caches included), and passing a real quality bar. **Method per candidate:** pull trusted GGUF → load `-ngl 99 -ts ` → measure tok/s + VRAM + max context → keep (log serving config) or drop (log why). **Candidate queue:** | Model | Type | Quant | Size | Status | |-------|------|-------|------|--------| | **NVIDIA-Nemotron-3.5-Lightning-30B-A3B** | MoE 30B/3B-act, Nemotron-H hybrid (attn+Mamba) | Q4_K_M / IQ4_XS | 25.48 / 18.92 GB | **queued (2026-08-13)** | | GLM-4-Reap 23B | dense | Q5 | 15 GB | Phase-1 baseline, re-test | | Qwopus-McCoder 14B | dense | Q4 | 8 GB | Phase-1 baseline, re-test | | Mistral Nemo 12B | dense | Q4 | 7 GB | Phase-1 baseline, re-test | **Nemotron 3.5 Lightning notes (verified 2026-08-13):** - Q4_K_M (25.48GB) needs **2 cards**; IQ4_XS (18.92GB) / Q4_0 (19.06GB) fit **1 card**. - Vulkan backend has `ssm_conv`/`ssm_scan` shaders → Mamba layers run on GPU (not CPU-offload). - **Skip NVFP4** (22.46GB) — Blackwell-only, won't run on Pascal. - Pascal caveats: no tensor cores / bf16; 3B-active MoE is compute-light so tok/s should be usable, but serial Mamba scan is the throughput ceiling. - Source: `bartowski/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-GGUF` ## Model Storage (NVMe) | Item | Detail | |------|--------| | Device | 931GB NVMe M.2 (via £8.99 PCIe x4 adapter) — previously in Minisforum Venus | | Mount | /models (ext4, noatime) | | fstab | UUID mount, persistent | | Ollama path | /models/ollama | | Read speed | ~890 MB/s (vs 147 MB/s on ZFS WD Reds) | | Current usage | 146GB / 916GB | Model load times (approximate): - llama4:scout (67GB): ~75 seconds - qwen2.5:32b / deepseek-r1:32b (19GB): ~22 seconds - mistral-small3.1:24b (15GB): ~17 seconds --- ## Immich Photo management and backup system. | Item | Detail | |------|--------| | Image | `ghcr.io/immich-app/immich-server:v1.132.3` | | Port | 2283 (host network mode) | | Compose | `/opt/immich/docker-compose.yml` | | Library | `/kaburudata/immich/library/` | | Postgres data | `/kaburudata/immich/postgres/` | | DB image | `tensorchord/pgvecto-rs:pg14-v0.2.0` | | Access | `http://192.168.0.253:2283` (LAN) | **Known issue — wal_compression (2026-05-30):** After apt upgrade, immich_postgres crashed with `FATAL: parameter "wal_compression" requires a Boolean value`. Root cause: docker-compose.yml had `wal_compression=on`; pgvecto-rs pg14 image does not accept `on`. Fix: removed `wal_compression` parameter entirely from both `docker-compose.yml` and `/kaburudata/immich/postgres/postmaster.opts` (data volume persists startup opts — must patch both). Also removed `ports: 2283:2283` from immich-server (incompatible with `network_mode: host`). ## Portainer CE Docker management UI. Installed 2026-05-30. | Item | Detail | |------|--------| | Image | `portainer/portainer-ce:2.42.0` | | HTTPS UI | `https://100.120.18.44:9443` (Tailscale) | | Edge tunnel | 8000 (not the UI — ignore this port) | | Data | Docker volume `portainer_data` | **Note:** Fresh Portainer installs time out after 5 minutes if admin account not created. If you see the timeout page, `docker restart portainer` and set the password immediately. ## ComfyUI Image generation UI running on Docker with GPU access. | Item | Detail | |------|--------| | Image | `mmartial/comfyui-nvidia-docker:ubuntu24_cuda12.6.3-latest` | | Port | 8188 | | Data volume | `/kaburudata/docker/comfyui/run:/comfy/mnt` | | GPU | cuda:0 (RTX 3060, 12GB VRAM) | | PyTorch | 2.12.0+cu126 | | Access | http://192.168.0.253:8188 (LAN) or http://100.120.18.44:8188 (Tailscale) | **Setup notes:** - Requires driver 580+ (CUDA 13.0) — upgraded 2026-05-26 - Use `ubuntu24_cuda12.6.3-latest` tag — the `cuda12.5.1` image ships a broken `comfy_kitchen` extension that requires CUDA 13 PyTorch despite the label - venv lives at `/kaburudata/docker/comfyui/run/venv-ubuntu24_cuda12.6.3` — persists across container rebuilds - Only GPU 0 assigned (`device=0`) — GPU 1 available for Ollama **Docker run command (for reference):** ```bash docker run -d \ --name comfyui-image \ --runtime nvidia \ --gpus '"device=0"' \ -p 8188:8188 \ -v /kaburudata/docker/comfyui/run:/comfy/mnt \ -e SECURITY_LEVEL=normal \ --restart unless-stopped \ mmartial/comfyui-nvidia-docker:ubuntu24_cuda12.6.3-latest ``` ## VibeVoice (community TTS) Long-form conversational TTS (Microsoft VibeVoice community fork). Installed 2026-08-07. | Item | Detail | |------|--------| | Repo | `/home/kaburu/VibeVoice` (vibevoice-community/VibeVoice, full history, 126 commits) | | Venv | `/home/kaburu/VibeVoice/.venv` (Python 3.12, torch 2.13.0+cu130, transformers 4.51.3 pinned) | | 1.5B model | `/models/vibevoice/VibeVoice-1.5B` (~5.9GB, 3 safetensors) | | Demo | `demo/inference_from_file.py --model_path /models/vibevoice/VibeVoice-1.5B --txt_path X --speaker_names Alice --device cpu` | | Verified | 2026-08-07: 37.3s WAV generated (24kHz mono), RTF 13x on CPU | | GPU | NOT yet run on GPU — needs ~4-6GB VRAM, llama-server currently hogs both 3060s | **Note:** txt scripts MUST use `Speaker N:` prefix format (see `demo/text_examples/1p_abs.txt`). **⚠️ NEVER use `--disable_prefill` for quality work (verified 2026-08-07):** it skips voice conditioning entirely — model generates uncued, hallucinated speech ("horror movie" effect). Same text: no-prefill = 300 gen tokens / 37s audio; with prefill = 87 gen tokens / 11.3s of clean speech conditioned on the voice sample. Prefill costs ~same RTF (12-13x CPU) but produces far less junk audio. **P40 constraint (verified 2026-08-07):** VibeVoice is PyTorch-CUDA, NOT llama.cpp/Vulkan. Torch dropped Pascal (sm_61) support in 2.8+/cu128 builds — installed torch 2.13 supports sm_75+ only (`torch.cuda.get_arch_list()`). P40s need **torch ≤ 2.7.x** (last with sm_61, e.g. 2.7.1+cu126) or a source build with `TORCH_CUDA_ARCH_LIST="6.1"`. ComfyUI (also torch) has the same constraint. Plan: separate venv with torch 2.7.1+cu126 for VibeVoice/ComfyUI on P40s. **Future RLM trials (pending P40 install):** See [[recursive-language-model]] (future RLM project). When 3× P40s are live, test Prime Agent / RLM harness for recursive context extension — could enable much longer context without context rot. ## Recent Changes | Date | Event | |------|-------| | 2026-08-07 | **Fleet-wide Complianz audit (all 9 FastPixel+Complianz sites) + Trustindex gating + CF zone fix:** Trustindex review-widget loader (`cdn.trustindex.io/loader.js`) was loading ungated on jafricasafari.com + myretonmarquees.co.uk → added custom block script (marketing cat), rebuilt `cmplz_blocked_scripts` transient via `cmplz_set_transient` (web render was reading stale 8/22-entry stored transient; `blocked_scripts()` had it but stored copy didn't), purged FastPixel CDN + **per-site CF zone** (jafrica=`de9cfa5761874bdf0018fa8acca98efd`, myreton=`03663a5fb5b1f46d1604ff0dce08ded1` — NOT the kaburu.cc zone). **Root-cause bug:** my earlier purges used the wrong CF zone (kaburu.cc `12690811...`) → CDN kept serving stale pages. **rf.kaburu.co had a stale zone ID (`bef018...` vs real kaburu.co `c35b3ae2d8ecbbb0b031f62a50f929e7`) + deprecated token** → fixed both, live purge verified. All 10 sites now: correct `fastpixel_cloudflare_zone_id` + working token + PURGE_OK. Trustindex source verified: loader.js sets NO cookies (0 refs), has 9 consent refs, but injects CDN assets → gating as marketing is correct (consistent with grw/tripadvisor policy). | | 2026-08-07 | **friendscic Complianz fix:** MailerLite `rewrite-universal.js` was loading ungated (marketing tracker, no consent gate). Added custom block script (marketing cat) + wiped stale `cmplz_blocked_scripts` from `cmplz_transients` option + purged FastPixel CDN (purge_all_request). Root cause of "stuck" page: FastPixel CDN edge cache (x-fastpixel-age) serving stale — local purges don't clear it; `FASTPIXEL_Request->purge_all_request()` does. Verified gated on public page. Jafrica-style issue, different script. | | 2026-08-07 | VibeVoice installed (community TTS) — repo + venv + 1.5B model on /models, CPU inference verified. P40 caveat: needs torch ≤2.7 for sm_61 | | 2026-07-08 | Model cleanup: Ollama now has 5 models — qwen36-reap:28b, qwopus-mccoder, glm47-reap:23b, mistral-nemo:12b, minicpm-v:8b | | 2026-08-08 | KAT-Coder-V2.5-Dev-APEX-I-Mini enabled persistently (llama-server-kat.service now enabled). GLM Reap removed from fallback chain + Ollama + GGUF (Steve: "thick as shit"). | | 2026-07-08 | Removed stale models: glm4:9b, moondream, mistral-nemo:128k | | 2026-07-08 | qwopus-mccoder imported from GGUF (16GB) — back in Ollama | | 2026-07-08 | Hermes config cleaned: OpenRouter gone, Nous Research MoA refs removed | | 2026-07-08 | Dead custom_provider local-llama removed. ollama-vision fixed → minicpm-v |