The target moves from unsloth/Qwen3.8-27B-GGUF:UD-Q8_K_XL to ajgazin/Swift-1.5-Qwen3.8-27B-Uncensored-Dynamic-MTP-GGUF's UD-Q8_K_XL — an abliterated fine-tune of the same base, under the non-OSI SWIFT OPEN LICENCE 1.0. Port, alias, context, drafter and client contract are unchanged. Compatibility was settled from the GGUF headers before fetching anything: both files parse to the same architecture (qwen35), the same 866 tensors with identical names in identical order, zero per-tensor ggml_type or dim mismatches, and the same MTP head. Two metadata differences that look alarming are no-ops, confirmed against gufo's source — general.file_type is deliberately not consulted (the file gufo already served records Q4_K_M while containing no Q4_K tensor), and Swift's extra qwen35.attention.recurrent_layers key is never read; layer kinds come from full_attention_interval, which both files carry as 4 and which agrees. The load test agreed: 9.2 s to listening, 66.5 GiB of the 116.7 GiB iGPU, no loader warnings, and a green contract battery including a two-turn tool loop. The DFlash2 drafter did not move, so the payload is now two files in two directories: DRAFTER_DIR is its own tunable. That broke the deployer's stray-run sweep, which keyed on the target filename and would have stopped matching — a stray run would then have held 7770 past the port gate. It now keys on the drafter, which every frank-large command line carries. The fetch script sends no auth header: the repo is public, and a token on the curl command line is world-readable via /proc/<pid>/cmdline. The anonymous transfer ran at 1.8 MiB/s; the host token through a mode-600 curl -K config reached 7 MiB/s. Test seam: the mutation pass found four real gaps. Two fetch assertions were satisfied by a header comment rather than the URL assignment, so repointing a repository left them green, and nothing bound the env's MODEL_FILE/DRAFTER_FILE to the filenames the fetch scripts download. Both are now explicit. A harness bug worth recording: a bats --filter that matches no test reports zero "not ok", indistinguishable from a mutation that survived — the harness now checks the 1..N count. 16/16 caught.
Server App Configs
The single repository for the two homelab servers: the Podman container stacks and the LLM inference fleet. One repo, one checkout per host, one deploy script.
2026-08-22: the former
vllmScriptsrepository (LLM fleet) is merged into this repo with its full git history. See AGENTS.md for the merge note.
Targets
| Host | User | IP | Podman stack | LLM service | LLM port |
|---|---|---|---|---|---|
| dankserver | dank | 192.168.0.235 | media and library | frank-medium (ROCmFPX llama.cpp, Qwen3.8-27B AGENT) | 7770 |
| dankclaw | dank | 192.168.0.143 | AI, search, development, observability | frank-large (gufo, Qwen3.8-27B UD-Q8_K_XL) | 7770 |
Active Services
| Service | Host | Hostname | Port |
|---|---|---|---|
| RomM | dankserver | romm.dankserver.local | 8085 |
| Copyparty | dankserver | files.dankserver.local | 3923 |
| Calibre-Web | dankserver | books.dankserver.local | 8083 |
| frank-medium | dankserver | — (bare endpoint) | 7770 |
| SearXNG | dankclaw | search.dankclaw.local | 8081 |
| ComfyUI | dankclaw | comfyui.dankclaw.local | 8188 |
| OpenWebUI | dankclaw | chat.dankclaw.local | 3000 |
| Hermes | dankclaw | hermes.dankclaw.local | 8090 |
| Gitea | dankclaw | gitea.dankclaw.local | 3001 |
| Grafana | dankclaw | grafana.dankclaw.local | 3002 |
| Prometheus | dankclaw | prometheus.dankclaw.local | 9090 |
| frank-large | dankclaw | — (bare endpoint) | 7770 |
Structure
dankserver/— compose.yaml + Caddyfile + .env.example for the Dankserver stackdankclaw/— compose.yaml + Caddyfile + .env.example for the Dankclaw stackshared/— homepage, prometheus config, deploy helpersscripts/—deploy.shanddeploy-remote.sh(service-scoped deployment), the planner, LLM serve scripts, systemd units, env tunables, and bench harnessesold/— retired PP/NPU-era LLM scripts (reference only)serverAppConfigs-docs/— project knowledge base (Obsidian vault, wikilinks).serverAppConfigs-docs/LLM/is the LLM fleettests/— bats test suite (see Testing Policy)
Deployment
See serverAppConfigs-docs/Architecture/Deployment Flow.md
and serverAppConfigs-docs/LLM/deployment.md. Run
./scripts/deploy.sh <dankclaw|dankserver> after committing changes. It
plans and deploys only the changed services. Use --service NAME for an
explicit single-service retry; inference is restarted only when its own files
(or the shared chat template) changed.
Knowledge Base
The serverAppConfigs-docs/ directory is an Obsidian vault. Start at
serverAppConfigs-docs/index.md. The LLM fleet knowledge base lives at
serverAppConfigs-docs/LLM/index.md.
Testing
Run ./tests/run.sh before every push. See
serverAppConfigs-docs/Architecture/Testing Policy.md.