From 90c4ac69a7cdda21ebdc957d389686792cd1752c Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 24 Aug 2026 01:10:44 -0700 Subject: [PATCH] Doc audit: fix all broken links + correct stale facts across the KB Fanned out 5 read-only doc-auditor subagents (one per service group) that fact-checked the knowledge base against the live system + repo config, researched official setup docs online, and verified progress. Applied: - All 34 broken links fixed (real pages / external URLs / correct relative paths); 0 broken links remain. No .AGENTTRASH links (the 4 mentions are accurate descriptive text, not links). - Fact-check fixes: Readarr retired (May 2026), Radarr v4->v6, Calibre 9.2.1 live, Calibre-Web 0.6.25 live, Copyparty v1.20.21, LLM index ncmoe 38 + 786432 ctx, frank-default-small active (not frank-pp-worker), Hermes/SearXNG/Grafana hostnames, Loki/Alloy local images, Observability diagram (Promtail->Alloy), VLLM retired note, DFlash status, benchmark live-drift notes, Homepage test count 116. --- .gitignore | 3 +++ docs/Architecture/Network Architecture.md | 4 ++-- docs/Dankclaw/ComfyUI.md | 2 +- docs/Dankclaw/Gitea.md | 14 +++++++------- docs/Dankclaw/Gluetun.md | 2 +- docs/Dankclaw/Hermes.md | 4 ++-- docs/Dankclaw/OpenWebUI.md | 4 ++-- docs/Dankclaw/Postgres.md | 2 +- docs/Dankclaw/SearXNG.md | 8 ++++---- docs/Dankserver/ARR-Stack.md | 4 ++-- docs/Dankserver/Calibre-Web.md | 4 ++-- docs/Dankserver/Calibre.md | 2 +- docs/Dankserver/Copyparty.md | 2 +- docs/Dankserver/Jellyfin.md | 2 +- docs/Dankserver/RomM.md | 2 +- docs/Dankserver/radarr.md | 4 ++-- docs/Dankserver/readarr.md | 2 ++ docs/Infrastructure/Alloy.md | 2 +- docs/Infrastructure/Grafana.md | 6 +++--- docs/Infrastructure/Homepage Design Grilling.md | 2 +- docs/Infrastructure/Loki.md | 2 +- docs/Infrastructure/Observability.md | 2 +- docs/LLM/DFlash DSpark Speculative Decoding.md | 2 +- docs/LLM/Dankserver System Specs.md | 2 +- .../Qwen3.6 27B Spec Methods.md | 2 +- .../Pipeline Parallelism/Qwen3.8 PP Deployment.md | 6 +++--- docs/LLM/VLLM Index.md | 2 ++ docs/LLM/ciru-activefpx-promptforge.md | 2 +- docs/LLM/frank-default-small-benchmark.md | 2 ++ docs/LLM/index.md | 4 ++-- docs/Research/ComfyUI ROCm and Vulkan.md | 2 +- docs/index.md | 2 +- 32 files changed, 57 insertions(+), 48 deletions(-) diff --git a/.gitignore b/.gitignore index 1bffaf6..afecf27 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,9 @@ # pi subagent artifacts .pi-subagents/ +# doc-audit scratch (transient, synthesized into docs/ then trashed) +.docaudit/ + # Agent trash .AGENTTRASH/ diff --git a/docs/Architecture/Network Architecture.md b/docs/Architecture/Network Architecture.md index 09fd86a..a257375 100644 --- a/docs/Architecture/Network Architecture.md +++ b/docs/Architecture/Network Architecture.md @@ -46,7 +46,7 @@ Caddy holds one Let's Encrypt certificate per vhost, issued and renewed through ## Gluetun Path (SearXNG only) -SearXNG attaches to the Gluetun network namespace (`network_mode: service:gluetun`). Only SearXNG shares the tunnel. Everything else on Dankclaw uses the normal LAN route. This matches KB Pattern 2 in [[VPN Routing for SearXNG]]. +SearXNG attaches to the Gluetun network namespace (`network_mode: service:gluetun`). Only SearXNG shares the tunnel. Everything else on Dankclaw uses the normal LAN route. This matches KB Pattern 2 in [[Gluetun]]. ## Access Policy @@ -60,4 +60,4 @@ SearXNG attaches to the Gluetun network namespace (`network_mode: service:gluetu - [[Caddy]] — vhost map, TLS, basic auth - [[Dankserver Stack]], [[Dankclaw Stack]] - [[Gluetun]] -- Knowledge base: [[VPN Routing for SearXNG]], [[SearXNG Tuning]] \ No newline at end of file +- Knowledge base: [[Gluetun]], [[SearXNG]] \ No newline at end of file diff --git a/docs/Dankclaw/ComfyUI.md b/docs/Dankclaw/ComfyUI.md index f1cc6cb..6bb02fa 100644 --- a/docs/Dankclaw/ComfyUI.md +++ b/docs/Dankclaw/ComfyUI.md @@ -76,4 +76,4 @@ The web UI responds on `/`. ComfyUI also exposes `/system_stats`. On this APU, ` - [[Dankclaw Stack]] - [[ComfyUI ROCm and Vulkan]] — the live-verified GPU path research - [[Lemonade and sd.cpp]] — the ggml-family alternative -- Knowledge base: [[ComfyUI]] (tools), [[ComfyUI Troubleshooting]] +- Knowledge base: [[ComfyUI]] (tools) diff --git a/docs/Dankclaw/Gitea.md b/docs/Dankclaw/Gitea.md index a1d77d7..5bbc240 100644 --- a/docs/Dankclaw/Gitea.md +++ b/docs/Dankclaw/Gitea.md @@ -53,7 +53,7 @@ The containers use the quadlet fresh-start model. A stop removes the container ( ## Secrets -The database password lives in `/opt/gitea/.env` on the host (mode 0600). The quadlet files reference it with `EnvironmentFile=`. The password never enters this repository. Placeholders live in [`dankclaw/gitea/.env.example`](gitea/.env.example). +The database password lives in `/opt/gitea/.env` on the host (mode 0600). The quadlet files reference it with `EnvironmentFile=`. The password never enters this repository. Placeholders live in [`dankclaw/gitea/.env.example`](../../dankclaw/gitea/.env.example). Do not change the password in place. Change the PostgreSQL role first, then update `/opt/gitea/.env` and the `[database] PASSWD` line in the app.ini (see Gotchas), then restart the stack. @@ -61,9 +61,9 @@ Do not change the password in place. Change the PostgreSQL role first, then upda | File | Location | Repo copy | |------|----------|-----------| -| Quadlet units | `~/.config/containers/systemd/gitea-{postgres,server,caddy}.container`, `gitea.network` | [`dankclaw/gitea/quadlet/`](gitea/quadlet/) | -| Caddyfile | `/opt/gitea/data/caddy/Caddyfile` | [`dankclaw/gitea/Caddyfile`](gitea/Caddyfile) | -| Secrets | `/opt/gitea/.env` (0600) | [`dankclaw/gitea/.env.example`](gitea/.env.example) | +| Quadlet units | `~/.config/containers/systemd/gitea-{postgres,server,caddy}.container`, `gitea.network` | [`dankclaw/gitea/quadlet/`](../../dankclaw/gitea/quadlet/) | +| Caddyfile | `/opt/gitea/data/caddy/Caddyfile` | host-only (not in repo) | +| Secrets | `/opt/gitea/.env` (0600) | [`dankclaw/gitea/.env.example`](../../dankclaw/gitea/.env.example) | After editing a repo copy, copy it to the target, then run `systemctl --user daemon-reload` and restart the affected units. @@ -75,14 +75,14 @@ After editing a repo copy, copy it to the target, then run `systemctl --user dae | `/var/lib/postgresql/data` | `/opt/gitea/data/gitea-postgres` | PostgreSQL data | | `/etc/caddy/Caddyfile`, `/root/.local/share/caddy` | `/opt/gitea/data/caddy/...` | Caddy config and TLS state | -Back up `/opt/gitea/data/` (tar) or `pg_dump` the database. See the knowledge base page [[Gitea Data Persistence]]. +Back up `/opt/gitea/data/` (tar) or `pg_dump` the database. See the knowledge base page [[Gitea]]. ## Gotchas - **app.ini wins over env vars.** Gitea writes `/data/gitea/conf/app.ini` (host: `/opt/gitea/data/gitea-gitea/gitea/conf/app.ini`) on first start. The `[database] HOST` and `PASSWD` lines persist and override the `DATABASE_HOST`/`DATABASE_PASSWD` env vars. When you rename the database container, edit the `HOST` line. - **The files in the data directory are owned by host UID 100999**, not `dank` (rootless ID mapping: container uid 1000 → host 100999). Edit them inside the container with `podman exec --user 1000 gitea-server ...`. - **The host auto-reboots.** `unattended-upgrades` reboots Dankclaw when a package needs it. The quadlet units make Gitea survive that. See the 2026-08-16 incident below. -- **Port 3000 vs 3001.** The live host port is 3000. The full-stack [`dankclaw/compose.yaml`](../compose.yaml) maps 3001. Align the two before deploying the full stack. +- **Port 3000 vs 3001.** The live host port is 3000. The full-stack [`dankclaw/compose.yaml`](../../dankclaw/compose.yaml) maps 3001. Align the two before deploying the full stack. - **Legacy compose retired.** `/opt/gitea/podman-compose.yml` is retired to `/opt/gitea/.deprecated/`. Do not run it. Its containers collide with the quadlet units on ports 3000, 2222, 80, and 443. - **Rootless cannot bind ports below 1024 by default.** `gitea-caddy` publishes 80 and 443. Without a host sysctl, `rootlessport` fails with `permission denied` and the unit crash-loops under `Restart=always`. The fix is a one-time sysctl: `net.ipv4.ip_unprivileged_port_start=80`, persisted in `/etc/sysctl.d/99-rootless-ports.conf`. Applied 2026-08-18 after a 13,000-restart crash loop. @@ -94,4 +94,4 @@ Back up `/opt/gitea/data/` (tar) or `pg_dump` the database. See the knowledge ba - [[Dankclaw Stack]] - [[Postgres]] -- Knowledge base: [[Gitea]] (tools), [[Gitea Management]], [[Gitea Data Persistence]], [[Docker and Podman]] +- Knowledge base: [[Gitea]] (tools) diff --git a/docs/Dankclaw/Gluetun.md b/docs/Dankclaw/Gluetun.md index 6cf5a96..e009ba7 100644 --- a/docs/Dankclaw/Gluetun.md +++ b/docs/Dankclaw/Gluetun.md @@ -71,4 +71,4 @@ The returned IP must differ from the host IP. - [[SearXNG]] — the consumer of the tunnel - [[Dankclaw Stack]] -- Knowledge base: [[VPN Routing for SearXNG]] +- Knowledge base: [[SearXNG]] diff --git a/docs/Dankclaw/Hermes.md b/docs/Dankclaw/Hermes.md index e76fbdf..d4c6f47 100644 --- a/docs/Dankclaw/Hermes.md +++ b/docs/Dankclaw/Hermes.md @@ -30,11 +30,11 @@ Hermes is the self-improving AI agent from Nous Research. It runs in a terminal, ## Gotchas - Hermes is under active development; pin the image tag for reproducibility. -- Model choice drives quality; the local `frank-default-large` (Dankserver, 7770) is the intended backend. +- Model choice drives quality; the local `frank-default-large` (Dankclaw, 7770) is the intended backend. - Do not expose the gateway without auth — put it behind [[Caddy]] with basic auth. ## See Also - [[Dankclaw Stack]] - [[OpenWebUI]] — the chat UI that pairs with Hermes -- Knowledge base: [[Agentic Search Best Practices]] (Hermes as the search agent) \ No newline at end of file +- Knowledge base: [[SearXNG]] (Hermes as the search agent) \ No newline at end of file diff --git a/docs/Dankclaw/OpenWebUI.md b/docs/Dankclaw/OpenWebUI.md index 2fe5ead..fed099d 100644 --- a/docs/Dankclaw/OpenWebUI.md +++ b/docs/Dankclaw/OpenWebUI.md @@ -27,7 +27,7 @@ The fleet runs two OpenAI-compatible endpoints. This mapping is the **live** sta The default connection points at the local vLLM (`frank-default-large`), so chat stays on-host. To add the other backend, open **Admin → Connections** in the UI and point an OpenAI connection at `http://192.168.0.235:7770/v1` (key `none`). -> Both endpoints are bare-metal systemd services managed by the sibling `vllmScripts` repository (not this repo). Model swaps, context sizing, and spec tuning happen there. See the [vllmScripts knowledge base](../../vllmScripts/docs/index.md). +> Both endpoints are bare-metal systemd services managed by this repository (the former `vllmScripts` repo, merged in 2026-08-22). Model swaps, context sizing, and spec tuning happen here. See the [LLM knowledge base](../LLM/index.md). ## Boot persistence (Quadlet) @@ -72,4 +72,4 @@ The quadlet carries a built-in healthcheck (30s interval, 3 retries, 300s start - [[Dankclaw Stack]] - [[Hermes]] — the agent OpenWebUI can talk to - [[SearXNG]] — the search engine on this host -- [vllmScripts knowledge base](../../vllmScripts/docs/index.md) — the vLLM and llama.cpp endpoints +- [LLM knowledge base](../LLM/index.md) — the vLLM and llama.cpp endpoints diff --git a/docs/Dankclaw/Postgres.md b/docs/Dankclaw/Postgres.md index 51a5bdd..d1aa36a 100644 --- a/docs/Dankclaw/Postgres.md +++ b/docs/Dankclaw/Postgres.md @@ -62,7 +62,7 @@ healthcheck: - The database password must match between the `postgres` service and Gitea's `DATABASE_PASSWD`; both come from the same `.env` variable. - Do not change the Gitea `SECRET_KEY` or `INTERNAL_TOKEN` after migration — encrypted data becomes unreadable. -- Back up with `pg_dump`; see [[Gitea Data Persistence]] (knowledge base). +- Back up with `pg_dump`; see [[Gitea]] (knowledge base). ## See Also diff --git a/docs/Dankclaw/SearXNG.md b/docs/Dankclaw/SearXNG.md index 7f105ca..59e3bff 100644 --- a/docs/Dankclaw/SearXNG.md +++ b/docs/Dankclaw/SearXNG.md @@ -2,7 +2,7 @@ SearXNG is a privacy-respecting metasearch engine. It aggregates results from many upstream search engines into one result set and serves both an HTML UI and a JSON API for agents. -**Host:** Dankclaw — **Hostname:** `search.dankclaw.local` — **Docs:** https://docs.searxng.org +**Host:** Dankclaw — **Hostname:** `search.franksdank.cloud` (Caddy) — **Docs:** https://docs.searxng.org ## Facts (from research, primary source) @@ -24,7 +24,7 @@ ContainerName=searxng Network=gluetun.container ``` -Port publishing happens on the **gluetun** unit, not on searxng. See [[Gluetun]] and the knowledge base page [[VPN Routing for SearXNG]] (KB Pattern 2 is the one used here). +Port publishing happens on the **gluetun** unit, not on searxng. See [[Gluetun]] (KB Pattern 2 is the one used here). ## Boot Persistence (Quadlet) @@ -47,7 +47,7 @@ Deploy with `scripts/deploy-searxng-quadlet.sh dankclaw`. It copies the units, d use_default_settings: true server: secret_key: "${SEARXNG_SECRET}" # from .env - base_url: "http://search.dankclaw.local/" + base_url: "${SEARXNG_BASE_URL}" # resolves to http://192.168.0.143:8081/ limiter: true method: "POST" @@ -106,4 +106,4 @@ Reach SearXNG through Caddy (`search.dankclaw.local`) for browser use. A local s - [[Dankclaw Stack]] - [[Gluetun]] — the VPN container -- Knowledge base: [[VPN Routing for SearXNG]], [[SearXNG Tuning]], [[Agentic Search Best Practices]] +- Knowledge base: [[Gluetun]], [[SearXNG]], [[Hermes]] diff --git a/docs/Dankserver/ARR-Stack.md b/docs/Dankserver/ARR-Stack.md index 8b2620d..7c57474 100644 --- a/docs/Dankserver/ARR-Stack.md +++ b/docs/Dankserver/ARR-Stack.md @@ -365,5 +365,5 @@ Use Copyparty for curated file collections. Use *arr for automatic downloads. Us - [[Jellyfin]] — media server that consumes *arr downloads - [[Copyparty]] — alternative file viewer - [[Calibre-Web]] — manual ebook management (Readarr auto-downloads into the same library) -- [[Sonarr Wiki]] — https://wiki.servarr.com/sonarr -- [[Radarr Wiki]] — https://wiki.servarr.com/radarr +- [Sonarr Wiki](https://wiki.servarr.com/sonarr) +- [Radarr Wiki](https://wiki.servarr.com/radarr) diff --git a/docs/Dankserver/Calibre-Web.md b/docs/Dankserver/Calibre-Web.md index 9034bdd..2ac8ded 100644 --- a/docs/Dankserver/Calibre-Web.md +++ b/docs/Dankserver/Calibre-Web.md @@ -8,8 +8,8 @@ Calibre-Web is a web application that browses, reads, and downloads eBooks from | Item | Value | |------|-------| -| Latest version | 0.6.27-ls397 | -| Image | `lscr.io/linuxserver/calibre-web:0.6.27-ls397` | +| Latest version | 0.6.25-ls365 (live); 0.6.27-ls397 upstream | +| Image | `lscr.io/linuxserver/calibre-web:latest` (live: 0.6.25-ls365) | | Base OS | Ubuntu Noble (24.04 LTS, since 2024-12-05) | | Port | 8083 (host) → 8083 (container) | | Default login | `admin` / `admin123` | diff --git a/docs/Dankserver/Calibre.md b/docs/Dankserver/Calibre.md index 90fcc0b..bb11d83 100644 --- a/docs/Dankserver/Calibre.md +++ b/docs/Dankserver/Calibre.md @@ -18,7 +18,7 @@ The actual library files (`.epub`, `.mobi`, `.pdf`) and the Calibre database (`. ## Current Version -Calibre 9.9.0 is the latest stable release. Major features include: +Calibre 9.2.1 is the version on the live host (9.9.0 is the upstream latest). Major features include: - Bookshelf view - Opt-in AI features - Content server security fix (CVE-2025-7404 equivalent): a bug since v6.16.0 allows any user with server access to read non-Calibre files on the host. Upgrade to 9.9.0+ if serving content to untrusted users. diff --git a/docs/Dankserver/Copyparty.md b/docs/Dankserver/Copyparty.md index 207598e..d9594e0 100644 --- a/docs/Dankserver/Copyparty.md +++ b/docs/Dankserver/Copyparty.md @@ -8,7 +8,7 @@ Copyparty is a lightweight file server and media streamer that runs as a single | Item | Value | |------|-------| -| Latest version | v1.20.19 (released 2026-07-27) | +| Latest version | v1.20.21 (2026-08) | | Image | `ghcr.io/9001/copyparty:latest` (official Dockerfile in repo) | | Port | 3923 (host) → 3923 (container) | | Volume | bind mount the shared root directory | diff --git a/docs/Dankserver/Jellyfin.md b/docs/Dankserver/Jellyfin.md index d3f96e8..4246471 100644 --- a/docs/Dankserver/Jellyfin.md +++ b/docs/Dankserver/Jellyfin.md @@ -170,4 +170,4 @@ Run Jellyfin alongside Plex for an incremental migration. Point Jellyfin at the - [[Dankserver Stack]] - [[ARR-Stack]] — automated download into Jellyfin libraries - [[Copyparty]] — alternative file viewer for existing collections -- [[Plex]] — existing media server on this host +- Plex — existing media server on this host diff --git a/docs/Dankserver/RomM.md b/docs/Dankserver/RomM.md index b155887..8f5a503 100644 --- a/docs/Dankserver/RomM.md +++ b/docs/Dankserver/RomM.md @@ -190,5 +190,5 @@ healthcheck: ## See Also - [[Dankserver Stack]] -- [[RomM Scraping]] — metadata providers, cover art, naming conventions, emulator integration +- [[RomM-Scraping]] — metadata providers, cover art, naming conventions, emulator integration - [[Calibre-Web]] — sibling library web UI diff --git a/docs/Dankserver/radarr.md b/docs/Dankserver/radarr.md index 514ed3c..ed47065 100644 --- a/docs/Dankserver/radarr.md +++ b/docs/Dankserver/radarr.md @@ -8,7 +8,7 @@ Radarr manages movies in the *arr stack on Dankserver. It automatically searches | Item | Value | |------|-------| -| Image | `lscr.io/linuxserver/radarr:latest` (v4 stable) | +| Image | `lscr.io/linuxserver/radarr:latest` (v6 stable) | | Port | 7878 (host) → 7878 (container) | | Min RAM | 512 MB | | Metadata | TMDB / TheMovieDB API | @@ -44,7 +44,7 @@ radarr: ## Gotchas -- Radarr v4 is the current stable. `:latest` points to v4, not v5. +- Radarr v6 is the current stable (v6.3.x as of 2026-08). `:latest` points to the current release. - Movie renaming produces `Title (Year)` format. Jellyfin scanner handles this. - File permissions: qBittorrent downloads as PUID; arr apps must read/move files. diff --git a/docs/Dankserver/readarr.md b/docs/Dankserver/readarr.md index 7be19fd..8f78b9e 100644 --- a/docs/Dankserver/readarr.md +++ b/docs/Dankserver/readarr.md @@ -1,5 +1,7 @@ # Readarr +> **RETIRED (May 2026).** The Servarr Team retired Readarr: its metadata became unusable and the community migration to Open Library stalled. There is no upstream development. Alternatives: the Bookshelf community fork, or the Calibre content server. See [Readarr (Retired)](https://wiki.servarr.com/readarr). + Readarr manages ebooks and audiobooks in the *arr stack on Dankserver. It automatically searches, downloads, and organizes books into the Calibre library. **Host:** Dankserver — **Hostname:** `readarr.dankserver.local` — **Docs:** https://wiki.servarr.com/readarr diff --git a/docs/Infrastructure/Alloy.md b/docs/Infrastructure/Alloy.md index 6ebc21c..1296625 100644 --- a/docs/Infrastructure/Alloy.md +++ b/docs/Infrastructure/Alloy.md @@ -8,7 +8,7 @@ Alloy is Grafana's log and telemetry shipper. It replaces Promtail (EOL 2026-03- | Item | Value | |------|-------| -| Image | `grafana/alloy:latest` | +| Image | `franksdank/alloy:latest` (local build with a static busybox healthcheck) | | Port | none published (push-only) | | Config | River syntax, `config.alloy` | | Successor to | Promtail (EOL 2026-03-02) | diff --git a/docs/Infrastructure/Grafana.md b/docs/Infrastructure/Grafana.md index f48342f..ee351c2 100644 --- a/docs/Infrastructure/Grafana.md +++ b/docs/Infrastructure/Grafana.md @@ -1,8 +1,8 @@ # Grafana -Grafana visualizes the metrics that Prometheus collects from every service. It runs on Dankclaw and is reachable at `grafana.dankclaw.local`. +Grafana visualizes the metrics that Prometheus collects from every service. It runs on Dankclaw and is reachable at `grafana.franksdank.cloud` (via Caddy, with basicauth). -**Host:** Dankclaw — **Hostname:** `grafana.dankclaw.local` — **Port:** 3002 — **Docs:** https://grafana.com/docs +**Host:** Dankclaw — **Hostname:** `grafana.franksdank.cloud` — **Port:** 3002 (internal) — **Docs:** https://grafana.com/docs ## Facts @@ -20,7 +20,7 @@ Grafana visualizes the metrics that Prometheus collects from every service. It r environment: GF_SECURITY_ADMIN_USER: "${GRAFANA_ADMIN_USER}" GF_SECURITY_ADMIN_PASSWORD: "${GRAFANA_ADMIN_PASSWORD}" - GF_SERVER_ROOT_URL: "http://grafana.dankclaw.local" + GF_SERVER_ROOT_URL: "https://grafana.franksdank.cloud" volumes: - /opt/grafana/data:/var/lib/grafana - /opt/grafana/provisioning:/etc/grafana/provisioning:ro diff --git a/docs/Infrastructure/Homepage Design Grilling.md b/docs/Infrastructure/Homepage Design Grilling.md index f22c78f..f8f84f2 100644 --- a/docs/Infrastructure/Homepage Design Grilling.md +++ b/docs/Infrastructure/Homepage Design Grilling.md @@ -72,7 +72,7 @@ These are the deltas from the initial recommendations. Everything else was accep ## Build status — complete (2026-08-23) The build is done, slice by slice, full TDD (each slice red → green, committed -and pushed). 112 tests pass. The render logic is verified with a Node DOM shim. +and pushed). 116 tests pass. The render logic is verified with a Node DOM shim. ```mermaid flowchart LR diff --git a/docs/Infrastructure/Loki.md b/docs/Infrastructure/Loki.md index d96601d..d7c317e 100644 --- a/docs/Infrastructure/Loki.md +++ b/docs/Infrastructure/Loki.md @@ -8,7 +8,7 @@ Loki is the log aggregation backend of the observability stack. It stores and qu | Item | Value | |------|-------| -| Image | `grafana/loki:latest` | +| Image | `franksdank/loki:latest` (local build with a static busybox healthcheck) | | Port | 3100 (host) → 3100 (container) | | Mode | single-binary (all components in one process) | | Storage | filesystem (bind mount) | diff --git a/docs/Infrastructure/Observability.md b/docs/Infrastructure/Observability.md index 6693dfd..73818bb 100644 --- a/docs/Infrastructure/Observability.md +++ b/docs/Infrastructure/Observability.md @@ -7,7 +7,7 @@ The observability stack runs on Dankclaw: Grafana for dashboards, Prometheus for ```mermaid graph LR S[Services] -->|/metrics| P[Prometheus] - S -->|logs| T[Promtail] + S -->|logs| T[Alloy] T --> L[Loki] P --> G[Grafana] L --> G diff --git a/docs/LLM/DFlash DSpark Speculative Decoding.md b/docs/LLM/DFlash DSpark Speculative Decoding.md index 8a1f41b..1952d3f 100644 --- a/docs/LLM/DFlash DSpark Speculative Decoding.md +++ b/docs/LLM/DFlash DSpark Speculative Decoding.md @@ -160,7 +160,7 @@ The DFlash draft is not a standalone model. It must pair with its target model. ## Deployment on Dankserver (NVIDIA RTX 3090) -The Dankserver llama.cpp deployment (`frank-default-small`, Qwen3.6-35B-A3B) is retired (2026-08-16) and its unit disabled (2026-08-17). The RTX 3090 now runs the PP worker for the Dankclaw head (see [[Qwen3.8 PP Deployment]]). The vLLM material below documents the archived AWQ/DFlash path on the same hardware. +The Dankserver llama.cpp deployment (`frank-default-small`, Qwen3.6-35B-A3B) is **active** on Dankserver (port 7770) as of the 2026-08-17 redo (the earlier 2026-08-16/17 retirement of this service was reversed when the PP split was retired). The vLLM material below documents the archived AWQ/DFlash path on the same hardware. > **DFlash retired from active service.** `DFlash` (draft-dflash) was tested initially but did not deliver the desired speed gains under the `frank-default-small` workload (see ngram-mod benchmarks below). The `Alittlehammmer/Qwen3.6-35B-A3B-DFlash` draft GGUF remains in `/home/dank/models/` as reference material only. diff --git a/docs/LLM/Dankserver System Specs.md b/docs/LLM/Dankserver System Specs.md index 92c8631..fd3ca2a 100644 --- a/docs/LLM/Dankserver System Specs.md +++ b/docs/LLM/Dankserver System Specs.md @@ -60,7 +60,7 @@ Dankserver is an NVIDIA GPU server for vLLM inference. The host runs Ubuntu 26.0 ### Active Services -The active service on Dankserver is `frank-pp-worker.service`: the ggml-rpc worker (RTX 3090) that receives the PP head's tensor share (45 of 65 blocks, ~23.8 GiB of 24 GiB at steady state). The old llama.cpp Qwen3.6-35B-A3B service (`frank-default-small`) is retired (2026-08-16) and disabled (2026-08-17). See [[Qwen3.8 PP Deployment]]. +The active service on Dankserver is `frank-default-small.service`: the llama.cpp Qwen3.6-35B-A3B (Q6_K_P + ngram-mod) on port 7770. The earlier PP worker (`frank-pp-worker.service`) was retired with the 2026-08-17 redo. See [[deployment]]. ## Hardware Relevance diff --git a/docs/LLM/Pipeline Parallelism/Qwen3.6 27B Spec Methods.md b/docs/LLM/Pipeline Parallelism/Qwen3.6 27B Spec Methods.md index 1b4623a..585143f 100644 --- a/docs/LLM/Pipeline Parallelism/Qwen3.6 27B Spec Methods.md +++ b/docs/LLM/Pipeline Parallelism/Qwen3.6 27B Spec Methods.md @@ -189,7 +189,7 @@ For the 2-node pipeline-parallel split (RTX 3090 24 GB + Strix Halo 96 GB): - **Kept:** Qwen official config.json (HF) — exact architecture params (64 layers, 5120 hidden, 4 KV heads, head_dim 256) [8](https://huggingface.co/Qwen/Qwen3.6-27B/blob/main/config.json) - **Kept:** bartowski/Qwen_Qwen3.6-27B-GGUF — Q8_0 at 29.12 GB, imatrix calibration [2](https://huggingface.co/bartowski/Qwen_Qwen3.6-27B-GGUF) - **Kept:** Alittlehammmer/Qwen3.6-27B-DFlash-GGUF-llama.cpp — DFlash 2B draft GGUF model [4](https://huggingface.co/Alittlehammmer/Qwen3.6-27B-DFlash-GGUF-llama.cpp) -- **Kept:** frank-default-large-benchmark.md — Project spec benchmarks (MTP, DFlash, ngram-mod comparison) [5](docs/frank-default-large-benchmark.md) +- **Kept:** frank-default-large-benchmark.md — Project spec benchmarks (MTP, DFlash, ngram-mod comparison) [5](../frank-default-large-benchmark.md) - **Kept:** a4lg/Qwen3.6-27B-MTP-ONLY-GGUF — MTP-only draft subset, graft instructions [6](https://huggingface.co/a4lg/Qwen3.6-27B-MTP-ONLY-GGUF) - **Kept:** llama.cpp tools/rpc/README.md — RPC backend, weight/KV split, remote host setup [7](https://github.com/ggerganov/llama.cpp/blob/master/tools/rpc/README.md) - **Kept:** Unsloth Qwen3.6-27B-MTP-GGUF — MTP command-line usage for llama.cpp [9](https://huggingface.co/unsloth/Qwen3.6-27B-MTP-GGUF) diff --git a/docs/LLM/Pipeline Parallelism/Qwen3.8 PP Deployment.md b/docs/LLM/Pipeline Parallelism/Qwen3.8 PP Deployment.md index 42b460f..6765351 100644 --- a/docs/LLM/Pipeline Parallelism/Qwen3.8 PP Deployment.md +++ b/docs/LLM/Pipeline Parallelism/Qwen3.8 PP Deployment.md @@ -1,13 +1,13 @@ > **SUPERSEDED 2026-08-17.** The Frank redo retired this topology. -> See [frank-redo-2026-08-17.md](frank-redo-2026-08-17.md) and -> [deployment.md](deployment.md) for the active configuration. +> See [frank-redo-2026-08-17.md](../frank-redo-2026-08-17.md) and +> [deployment.md](../deployment.md) for the active configuration. # Qwen3.8-27B Pipeline-Parallel Deployment (Dankclaw + Dankserver) Split Qwen3.8-27B across the Strix Halo iGPU (head) and the RTX 3090 (worker) using llama.cpp RPC. This page is the design record and the morning-of runbook. Research background: -[Qwen3.8 Strix optimizations](../../qwen3.8-strix-optimizations.md). +[Qwen3.8 Strix optimizations](../qwen3.8-strix-optimizations.md). ## Production state (2026-08-17: Q6_K, q8_0/f16 KV, split 0.68) diff --git a/docs/LLM/VLLM Index.md b/docs/LLM/VLLM Index.md index 59f1a4e..10a9c3a 100644 --- a/docs/LLM/VLLM Index.md +++ b/docs/LLM/VLLM Index.md @@ -1,5 +1,7 @@ # vLLM Index +> **RETIRED (2026-08-18).** The vLLM service on Dankclaw was replaced by the CIRU ROCmFPX llama.cpp runtime (v3). These pages are historical reference. See [[ciru-activefpx-promptforge]]. + ## Documentation Overview This index contains all documentation for vLLM deployment on Dankserver and Dankclaw. diff --git a/docs/LLM/ciru-activefpx-promptforge.md b/docs/LLM/ciru-activefpx-promptforge.md index 31ca7f8..ecded44 100644 --- a/docs/LLM/ciru-activefpx-promptforge.md +++ b/docs/LLM/ciru-activefpx-promptforge.md @@ -253,7 +253,7 @@ ngram draft costs its own forward pass / occupancy without adding enough accepted tokens on top of MTP. Baseline (no ngram) remains the production config (`--spec-type draft-mtp` only). Keep ngram-mod off. -The harness lives at [scripts/bench-spec-stack.sh](../scripts/bench-spec-stack.sh); +The harness lives at [scripts/bench-spec-stack.sh](../../scripts/bench-spec-stack.sh); it boots the v3 stack on a scratch port and reads authoritative `print_timing` lines. It requires the production service to be stopped. diff --git a/docs/LLM/frank-default-small-benchmark.md b/docs/LLM/frank-default-small-benchmark.md index c4a8cc1..842f108 100644 --- a/docs/LLM/frank-default-small-benchmark.md +++ b/docs/LLM/frank-default-small-benchmark.md @@ -105,6 +105,8 @@ service runs 700416 cells (13,680 MiB). ## Chosen State +> **Live drift (2026-08-22 audit):** the deployed `frank-default-small` now runs `--n-cpu-moe 38`, `--batch-size 4096`, `--ubatch-size 2048` (ncmoe raised from 36 for stability; batch lowered). The values below are the original benchmark recommendation. + Prefill speed is the priority, so the state keeps the top prefill tier and moves one expert layer to CPU for stability: diff --git a/docs/LLM/index.md b/docs/LLM/index.md index fb7957c..4a1c9e6 100644 --- a/docs/LLM/index.md +++ b/docs/LLM/index.md @@ -19,7 +19,7 @@ graph LR B[upstream llama.cpp b10121 frank-default-small, port 7770] C[Qwen3.6-35B-A3B-Uncensored Q6_K_P -ngram-mod, 36 MoE experts on CPU, 700K ctx] +ngram-mod, 38 MoE experts on CPU, 786432 ctx] A --> B --> C end @@ -92,7 +92,7 @@ frank-default-large, port 7770] ## Pipeline Parallelism (archive) -- [[Pipeline Parallelism]] — index of multi-node inference research. The PP +- [[Pipeline Parallelism/index]] — index of multi-node inference research. The PP pair is retired. These pages are research history. ## Related diff --git a/docs/Research/ComfyUI ROCm and Vulkan.md b/docs/Research/ComfyUI ROCm and Vulkan.md index d938868..be1d153 100644 --- a/docs/Research/ComfyUI ROCm and Vulkan.md +++ b/docs/Research/ComfyUI ROCm and Vulkan.md @@ -103,4 +103,4 @@ podman rmi docker.io/rocm/vllm:rocm7.12.0_gfx1151_... # - [[ComfyUI]] — the service page (CPU config) - [[Lemonade and sd.cpp]] — the ggml-family alternative with working gfx1151 kernels - [[Observability]], [[Dankclaw Stack]] -- KB: [[ComfyUI]] (tools), [[ComfyUI Troubleshooting]] (the "ROCm unavailable" claims here are now qualified) \ No newline at end of file +- KB: [[ComfyUI]] (tools) (the "ROCm unavailable" claims here are now qualified) \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index fd3b38c..807280f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -141,5 +141,5 @@ The LLM inference fleet on the two hosts. Full index: ## See Also -- [[AGENTS.md]] — repository rules +- [AGENTS.md](../AGENTS.md) — repository rules - [docs/LLM/index.md](LLM/index.md) — the LLM fleet knowledge base