Skip to content

2026-08-07 — Ahsoka cathedral on the edge

A wide graphite pencil sketch on off-white paper. A small remote mountain chalet shaped like a miniature cathedral stands snow-dusted at the edge of a pine forest at dusk; its single rose window glows the only colour in the drawing — a soft teal light. A narrow path leads to its arched door, and halfway along an old wooden scaffold has been taken down and set aside in the snow. An Abyssinian cat sits on the path, looking up at the lit window.

The chalet caretaker spent months on python -m mlx_lm.server. It worked. It was not the cathedral. On 2026-08-07 the satellite brain cut over to the same Rust Metal path the hub uses for Qwen2 dense seats — sanctum-mlx — while staying lean enough for a 16 GB M1 and plain HTTP for openclaw.

LayerBeforeAfter
EnginePython mlx_lm.serverRust sanctum-mlx (cathedral fork)
ModelQwen2.5-7B-Instruct-4bitsame (model_type=qwen2)
Portplain :1338plain :1338 (loopback; openclaw unchanged)
PrincipalLaunchDaemon as bertLaunchDaemon as sanctum
Binaryn/a~/.sanctum/bin/sanctum-mlx + mlx.metallib colocated

Satellite service principal (not hub wave-1): always-on daemons ahsoka-brain, bootstrap, colima, firewalla-bridge, heartbeat, screen-time run as UserName=sanctum with HOME still pointing at the operator tree. chalet-watchdog stays root (elevated kickstarts). Operator GUI LaunchAgents stay on bert.

Install / re-apply (idempotent, run on chalet as root):

Terminal window
# from MBP or manoir over MagicDNS
rsync campaign/ahsoka/chalet-harness/install-chalet-service-user.sh chalet:/tmp/
ssh chalet 'sudo -n bash /tmp/install-chalet-service-user.sh'

Do not run hub-only sanctum service-user install on chalet (that path installs proxyd / force-flow / memory-vault).

  1. cathedral.lock Permission denied~/.sanctum/state must be group-writable by sanctum or the binary exits before load.
  2. Failed to load the default metallibmlx.metallib must sit next to sanctum-mlx (same directory). Without it the process dies at model-load.
  3. Stale bert python brain holding :1338 after the cutover — kill by listen PID; LaunchDaemon KeepAlive only respawns the new binary.

The 48-case harness and defect-round SFT work live in council-autoresearch (campaign/ahsoka/). Scoring fix: exec_pattern matches all transcript commands (including ha status), not only light/climate/alarm actuations. Eval servers for adapters also use sanctum-mlx --adapter-path so train and gate share one engine.

Model48-caseTimeouts
vanilla (no LoRA)32/480
v2-baseline-30032/480
v4-defect-30034/480

Serving cutover EETISMAD does not claim LoRA promote-ready. The ship bar for promote remains ≥36/48 on the gate.

LetterEvidence
Everything E2E TestedLive on chalet: sanctum-mlx as user sanctum; GET /v1/models 200; POST /v1/chat/completions returned cathedral-ok with system_fingerprint: sanctum-mlx-0.2.0-native-arm64
in Sanctum-docsThis field note + updates on Ahsoka, Service Principal, Sanctum-MLX
Mergedcouncil-autoresearch commits on campaign/champion-week-2026-06-15 (c7aa744, 4968a7d, …); this docs commit on sanctum-docs main
And DeployedLaunchDaemon live; binary + metallib on disk; process table shows cathedral, not python

The pattern was proven on the hub and now runs at the edge: one Rust Metal path, one service principal, the same cathedral from the manoir down to the satellite. The python -m mlx_lm.server that carried Ahsoka this far is the scaffold in the snow — it held the shape while the stone went up, and today it came down.