Frank d57174c8d3 frank-primary: env-driven spec/compilation/sampling knobs
Three engine knobs that were impossible to set without editing the run line:
FRANK_PRIMARY_SPEC (--speculative-config), FRANK_PRIMARY_COMPCONFIG
(--compilation-config) and FRANK_PRIMARY_GEN_CONFIG
(--override-generation-config). Each holds the whole JSON value; empty or
unset means the flag is absent, so the shipped shape E argv is unchanged.

The seam re-pins the law that justified the omission: "speculative decode is
ABSENT BY MEASUREMENT" compared the wrong pair — c1248d4 retired MTP by
weighing fp8+MTP4 (37.4-40.6 t/s, 54% acceptance) against the bf16 no-spec
boot (36.4-39.4), bf16 then proved unbootable, and fp8 came back WITHOUT MTP.
fp8+spec was never measured against fp8+no-spec on one shape, the no-spec
incumbent runs ~30 t/s under the fleet's 35 t/s target, and every vendor
flash-next recipe ships MTP3.

Also in the seam: a dead assertion is deleted (a failing `! grep` mid-test is
exempt from bats' errexit, so the pre-precise-memory `! grep
--expert-precise-memory` never ran), and the knob test asserts by RENDERING the
flag from the sourced env instead of grepping for an assignment.
2026-10-02 16:37:52 -07:00
2026-10-02 07:50:50 -07:00

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 vllmScripts repository (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 stack
  • dankclaw/ — compose.yaml + Caddyfile + .env.example for the Dankclaw stack
  • shared/ — homepage, prometheus config, deploy helpers
  • scripts/ — deploy.sh and deploy-remote.sh (service-scoped deployment), the planner, LLM serve scripts, systemd units, env tunables, and bench harnesses
  • old/ — retired PP/NPU-era LLM scripts (reference only)
  • serverAppConfigs-docs/ — project knowledge base (Obsidian vault, wikilinks). serverAppConfigs-docs/LLM/ is the LLM fleet
  • tests/ — 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.

S
Description
Podman deployment configs for Dankserver and Dankclaw
Readme
8.2 MiB
Languages
Shell 60.4%
Python 21%
HTML 6.2%
Jinja 3.9%
C++ 3.9%
Other 4.6%