frank-medium: serve the new R9700s, retire frank-small

The RTX 3090 left Dankserver; two AMD Radeon AI PRO R9700 cards (Navi 48,
gfx1201, 32,624 MiB each) replaced it. FreeToken/CUDA cannot run there at all,
so the `frank-small` service is retired and `frank-medium` takes the endpoint.

New service: charlie12345/ROCmFPX llama.cpp (built for gfx1201 against the
fork's self-contained ROCm 7.14 toolchain, so the host's stale /opt/rocm-6.3.3
never participates) serving kingjones777/Qwen3.8-27B-ROCmFPX-Q8_0-AGENT-GGUF --
a Q8_0_ROCMFPX_AGENT (ftype 115) checkpoint that stock llama.cpp cannot load.
Placeholder config: --split-mode tensor across both cards, 131072 context,
1 slot, f16 KV, MTP draft head on ROCm0.

deploy-remote.sh grows retire_root_llm_small(): the CUDA-era unit is stopped,
disabled and moved to ~/.AGENTTRASH/20260915-frank-small-retire/host-units
before frank-medium starts, because `systemctl disable` has been observed to
delete the unit file itself on this host (2026-08-26 incident).

The retired frank-small repo files (env, unit, serve script) move to
scripts/.AGENTTRASH/, and the planner, dispatcher, service allow-list and the
deployment test seams now name frank-medium.
This commit is contained in:
Frank
2026-09-15 18:53:20 -07:00
parent 27e63359d6
commit 6085a99dd8
14 changed files with 454 additions and 192 deletions
+30 -10
View File
@@ -95,7 +95,7 @@ service_is_allowed() {
dankserver:copyparty|dankserver:jellyfin|dankserver:calibre-web|dankserver:plex|dankserver:tautulli|\
dankserver:prowlarr|dankserver:qbittorrent|dankserver:radarr|\
dankserver:sonarr|dankserver:lidarr|dankserver:readarr|\
dankserver:frank-small|\
dankserver:frank-medium|\
frankbook-pro:gluetun|frankbook-pro:qbittorrent|frankbook-pro:prowlarr|\
frankbook-pro:radarr|frankbook-pro:sonarr|frankbook-pro:lidarr|\
frankbook-pro:readarr)
@@ -181,7 +181,6 @@ add_pending_services() {
continue
fi
[[ -n "$recorded" && "$recorded" != "$REVISION" ]] || continue
if [[ "$TARGET" == dankclaw && "$service" == frank-small ]]; then continue; fi
if [[ "$TARGET" == dankserver && "$service" == frank-large ]]; then continue; fi
if ! changed="$(python3 scripts/deploy-plan.py --target "$TARGET" \
--repo "$REMOTE_DIR" --base "$recorded" --head "$REVISION")"; then
@@ -992,14 +991,35 @@ wait_for_llm_large_ready() {
return 0
}
deploy_llm_small() {
run_privileged systemctl stop frank-default-small || true
run_privileged systemctl disable frank-default-small || true
relink_unit frank-small
# deploy_llm_medium — frank-medium replaced frank-small on 2026-09-15 when the
# RTX 3090 left the host for two Radeon AI PRO R9700 cards. The old unit is a
# CUDA-era FreeToken service that can only crash-loop on this hardware, so it
# is retired here (stop, disable, move the installed unit to the trash) before
# its replacement starts. Same failure mode as frank-large's retirement: this
# host's `systemctl disable` has been observed to delete the unit file itself
# (2026-08-26 incident), so both outcomes are tolerated.
retire_root_llm_small() {
local trash="$HOME/.AGENTTRASH/20260915-frank-small-retire/host-units"
run_privileged systemctl stop frank-default-small 2>/dev/null || true
run_privileged systemctl disable frank-default-small 2>/dev/null || true
run_privileged systemctl stop frank-small.service 2>/dev/null || true
run_privileged systemctl disable frank-small.service 2>/dev/null || true
if [[ -e /etc/systemd/system/frank-small.service || -L /etc/systemd/system/frank-small.service ]]; then
mkdir -p "$trash"
run_privileged mv -- /etc/systemd/system/frank-small.service \
"$trash/frank-small.service"
echo "retired root unit frank-small.service -> $trash"
fi
run_privileged systemctl daemon-reload
run_privileged systemctl enable frank-small
run_privileged systemctl restart frank-small
wait_for_health frank-small http://127.0.0.1:7770/health 1200
}
deploy_llm_medium() {
retire_root_llm_small
relink_unit frank-medium
run_privileged systemctl daemon-reload
run_privileged systemctl enable frank-medium
run_privileged systemctl restart frank-medium
wait_for_health frank-medium http://127.0.0.1:7770/health 1200
}
wait_for_health() {
@@ -1187,7 +1207,7 @@ deploy_service() {
seerr) deploy_seerr ;;
marreta) deploy_marreta ;;
frank-large) deploy_llm_large ;;
frank-small) deploy_llm_small ;;
frank-medium) deploy_llm_medium ;;
hermes|hermes-dashboard|hermes-webui) deploy_hermes ;;
romm|romm-mariadb|romm-redis|mariadb|redis) deploy_romm_stack "$service" ;;
jellyfin) deploy_jellyfin ;;