Files
command-center/agent/memories/--home-blank-.omp--/raw_memories.md
T
Frank 135bb2194d agent: repoint roles to frank-medium/dankclaw-3090; sync niri tweaks, memories, managed skills
- config.yml: default/commit -> frank-medium (dankserver); task/tiny/smol/vision -> frank-small (dankclaw-3090); vision xhigh
- models.yml: add llamacpp (dankclaw-3090) provider; frank-large preserve_thinking + context notes
- niri: focus-ring/border/shadow layout, hot-corners off, re-add noctalia.kdl include; blankpad eDP-1 scale 1.0
- memories: flush rollouts; retire frank_large + marreta_authentik skills; add auth-chain/kv-pool/quadlet-log skills
- managed-skills: 40+ new fleet runbook skills
- agent/skills: import built-in skill set
2026-09-17 12:27:08 -07:00

12 KiB

Raw Memories

01a0a7ff-dae2-71fd-9bd0-a8aa7c9d3676

updated_at: 1789533306

llama.cpp Multi-GPU Parallelism (verified against docs/multi-gpu.md on master)

Split modes (--split-mode / -sm)

  • layer (default): Pipeline parallelism. Each GPU holds a contiguous slice of layers. Token flows through GPUs sequentially. Minimizes inter-GPU data movement; tolerates slow interconnects (PCIe fine). Best for prefill and fitting large models. Weakness: needs many tokens to keep pipeline full, poor low-batch latency.
  • tensor (experimental): True tensor parallelism. Splits each layer's weights AND KV cache across all GPUs via a 'meta device', doing cross-GPU all-reduce per layer (NCCL). Minimizes latency, parallelizes any workload size. Heavily bottlenecked by interconnect speed (wants NVLink + NCCL). Best for fast token generation.
  • row (deprecated): Row-split dense weights only. Predecessor to tensor; comparatively poor performance.
  • none: Single GPU, selected via --main-gpu.

Key constraints on tensor mode

  • Requires flash attention ON (-fa on)
  • KV cache must be non-quantized: f32/f16/bf16 only
  • NOT implemented for: MoE/hybrid, Mamba/SSM, and several other architectures (hard-fails with SPLIT_MODE_TENSOR not implemented)
  • --fit is disabled; must size --ctx-size / --parallel manually

Separate axis (NOT model parallelism)

  • --parallel / -np: Number of concurrent server slots (each with own KV cache). Serving-level concurrency/batch parallelism. On single GPU this is the main throughput knob.
  • CPU+GPU offload (--n-gpu-layers, --n-cpu-moe): Hybrid inference when model exceeds VRAM. Device-distribution strategy, not 'parallelism' in the strict sense.

What does NOT exist in llama.cpp

  • No first-class context/sequence parallelism mode (unlike vLLM/TensorRT-LLM). If you see that term applied to llama.cpp, it's loose third-party language.

User hardware context

  • Single RTX 4070 Max-Q (~12 GB VRAM). Multi-GPU split modes (layer/tensor) do not apply. Relevant knobs: --parallel for concurrency, CPU+GPU offloading for models >12 GB.

01a0a817-7382-7525-92f1-14cd7fade072

updated_at: 1789529008

Blankpad niri layout: externals left of eDP-1

Final committed layout (83c9c92, 2026-09-16):

  • DP-2: x=0, portrait 1200x1920, transform 90 CCW, scale 1
  • HDMI-A-1: x=1200, portrait 1200x1920, transform 270 CCW, scale 1
  • eDP-1: x=2400, 1536x864, scale 1.25 (restated per block-reset trap)

X-offset chain: 0 → 1200 (DP-2 portrait width) → 2400 (HDMI-A-1 portrait width) → eDP-1.

Config path: ~/.omp/dotfiles/zz-blankpad/niri/.config/niri/cfg/display.kdl Repo: dank/command-center (main), local Gitea at 192.168.0.143:3000.

The skill niri-output-rotation-pinning was followed correctly end-to-end. No new pitfalls discovered beyond what the skill already documents.

01a0a798-f61e-71d3-8fb6-55879410c3fc

updated_at: 1789518997

Niri Display Rotation (Portrait 180° Flip)

Hardware

  • eDP-1: Lenovo laptop panel, 1920x1080, scale 1.25, normal transform
  • DP-2: PNP(XYM) PM1601, 1920x1200, scale 1, portrait (was 270° CCW → now 90° CCW)
  • HDMI-A-1: PNP(XYM) PM1601 demoset-1, 1920x1200, scale 1, portrait (was 90° CCW → now 270° CCW)

Key Technical Facts

  • Niri config split into ~/.config/niri/cfg/*.kdl (Noctalia-style includes)
  • Display config: ~/.config/niri/cfg/display.kdl — per-output transform field in KDL
  • niri msg outputs — shows current transform, logical size, scale, position
  • niri validate -c <path> — dry-run validation before applying
  • niri msg action load-config-file — hot-reload config at runtime (no restart needed)
  • After rotation in portrait, logical size swaps (1920x1200 → 1200x1920) but logical position X may shift; verify with niri msg outputs after reload

Critical Pitfall: Portrait 180° Rotation

  • In portrait, "flip 180°" = swap 90° ↔ 270° transform values
  • Setting transform "180" on a portrait monitor kicks it to landscape-upside-down
  • Niri transform values are absolute: normal, 90° counter-clockwise, 180°, 270° counter-clockwise — no modular arithmetic

Workflow (Reusable)

  1. niri msg outputs — capture current state
  2. Read ~/.config/niri/cfg/display.kdl
  3. Edit transform values (90↔270 swap for 180° portrait flip)
  4. niri validate -c ~/.config/niri/config.kdl — confirm valid
  5. niri msg action load-config-file — apply
  6. niri msg outputs | grep -E '^Output|Transform|Logical|Scale' — verify
  7. git add && git commit && git push in dotfiles repo (/home/blank/.omp)

01a09e49-b17b-74c3-83e9-2eb95ed25621

updated_at: 1789368866 Task: user requested changing Noctalia theme yellow to red and terminal text color to same red; rollout ended before applying edits after an ask about crispness scope was interrupted.

Noctalia facts: Niri-based DE at /usr/bin/noctalia. Main config ~/.config/noctalia/config.toml. Niri config includes noctalia.kdl for display settings. IPC uses direct noctalia msg <command> instead of qs wrapper; key commands panel-toggle, session, lock, launcher. App templates in /usr/share/noctalia/assets/templates/ for gtk, ghostty, alacritty, hyprland, sway, wezterm, helix, btop, starship, qt, kde, cava, scroll, mango, umbriel, foot, emacs, kitty. Palette is generated from an image with noctalia theme [image]. Migration notes: Ghostty should use theme = noctalia; Alacritty can import noctalia.toml theme; GTK 3/4 accent palette default mentioned as #b267e4 purple; Niri keybinds should map to noctalia msg commands.

Theme-edit workflow: for changing a Noctalia accent such as yellow to red, prefer locating and editing the generated Noctalia palette/theme source before hardcoding per-app colors. If Ghostty is set to theme = noctalia, direct terminal color overrides may be less durable than updating the theme itself. Terminal text color should match the chosen red in both the Noctalia palette and any terminal-specific override if used.

Config discovery in this environment: expected ~/.config/noctalia/config.toml and ~/.config/ghostty/config were not successfully read due shaken/pruned tool output. Candidate locations included ~/.config/noctalia, ~/.config/ghostty, and /home/blank/.omp/dotfiles/noctalia/.local/share/noctalia under cwd /home/blank/.omp. Use ls/glob/read on specific files rather than assuming a single canonical path.

Niri crispness facts: in niri 26.04, true compositor AA is limited to corner rounding via niri_rounding_alpha() smoothstep and unused gradient/hue interpolation. Corner AA is driven by window-rule geometry-corner-radius with clip-to-geometry; setting radius 0 short-circuits the shader. Background blur/noise are not AA but cause softness: background-effect { blur true } plus top-level blur { passes 2, offset 3.0, noise 0.03 } creates frosted glass and film grain. Shadows were already off. Wayland clients rasterize text; niri does not alter glyph AA. Ghostty font AA is controlled by freetype-load-flags, while other apps use fontconfig or app-specific settings. No nearest-neighbor resample knob was found in this build.

Decision guidance: when asked to turn off all compositor AA for a crisp look, explain there is no single switch; offer scoped options: hard corners only; hard corners plus disable backdrop blur/noise; full maximum crispness with terminal opacity 1.0/blur 0 and global fontconfig antialias false; or terminal-only crispness. Warn that removing blur/noise changes Noctalia's glass aesthetic.

01a0993b-f83f-7331-9cad-fff3fc7f3070

updated_at: 1789286338 Target: agent/models.yml (frank-large entry). Sampler defaults overridden from halogen/greedy to temp=1.0, top_p=0.95, top_k=20, min_p=0.0, presence_penalty=0.0, repetition_penalty=1.0. Added preserve_thinking=true to retain thinking blocks across turns. Deployed to dank/command-center on dankclaw. Live effect triggers on next config read; no container restart required. Git LFS locking notice is advisory, does not block pushes. Repo path: ~/.omp.

01a096d7-c1b8-7291-b467-a8521fe9c3c6

updated_at: 1789267061 Noctalia DE (Niri-based): bin /usr/bin/noctalia; configs ~/.config/noctalia/config.toml + noctalia.kdl. IPC via noctalia msg (replaces qs -c noctalia-shell ipc call). Key cmds: panel-toggle, session, lock, launcher. App templates /usr/share/noctalia/assets/templates/. Palette gen noctalia theme [image]. GTK accent #b267e4. Text AA: Ghostty font-subpixel-render=off, Alacritty font.antialias=false. FLM NPU (Dankclaw): gemma4-it:e4b, port 7771. Supports PNG/JPEG; rejects WebP (convert first). Requires thinkingLevelMap in models.json. FIFO queue, ~7-11s model switch. Pitfall: missing .xclbin symlinks under ~/.config/flm/xclbins/ cause failures. Frank desktop: cursor 36 (gsettings org.gnome.desktop.interface cursor-size, GTK settings.ini, XCURSOR_SIZE=36), theme capitaine-cursors. Authenik 2026.8 outpost caches claims per session (1-24h TTL), causes silent 403s post-group-add despite correct membership. Halogen runtime (frank-large): baked-in chat template, no file swap. Accepts chat_template_kwargs (enable_thinking, preserve_thinking, reasoning_effort). frank-small uses checkpoint's fixed Qwen3.6 template; deploy-plan.py mapping is vestigial.

01a09618-6a77-71d5-a5b2-36e82045b695

updated_at: 1789227719 OMP harness config/dotfiles repo located at ~/.omp. Cloned serverAppConfig to ~/Projects/serverAppConfig (HEAD 701ab14, main tracks origin/main, HTTP transport with embedded dank token, no SSH keys). Local dir is singular (serverAppConfig), remote repo is plural (serverAppConfigs). Structure (308 files, 4.2 MB):

  • dankclaw/: Dankclaw stack defs.
  • dankserver/: Inference backend config.
  • frankbook-pro/: 7 quadlet units (sonarr, radarr, lidarr, readarr, prowlarr, qbittorrent, gluetun).
  • shared/: Homepage (html/css/js + services.json), alloy, loki, prometheus, searxng.
  • tests/: 47 files, E2E suite.
  • serverAppConfigs-docs/: 115 files, Architecture KB (deployment flow, network/storage/ testing policy, container netns, Dankclaw service pages).
  • old/, report/, scripts/, .githooks/, AGENTS.md: legacy, reports, tooling, hooks. Recent commits: observability quadlet cutover (loki/alloy/comfyui images, grafana OAuth secret per-service env seeding, docs commit recording exposure posture + unconfigured state). Pitfall: Local dir name mismatch vs remote repo name (trivial, pull/push unaffected).

01a08f58-4d8f-7356-8bcc-63a767971a5a

updated_at: 1789224571 [GIT_WORKFLOW] State check: git status --short | git branch --show-current | git log --oneline HEAD..@{u}. Branch: main. Untracked dirs: .pre-pull-backup/, home/. [DOTFILES_STATE] Modified: alacritty.toml, config.ghostty, noctalia.css (gtk3/4), niri .kdl files. Shift to noctalia theme. [GHOSTTY_FIX] Config edit: replace font-hinting = hinting with freetype-load-flags = hinting,light (line 10). [COMMIT_PUSH] Pattern: git add && git commit -m "" && git push. Remote LFS lock warning present; mitigate via git config lfs.http:///info/lfs.locksverify true. [RELOAD] Ghostty reload via USR1: pgrep ghostty | while read pid; do /usr/bin/kill -USR1 "$pid"; done.

01a08f59-61c3-7103-bd4f-18ea24369233

updated_at: 1789111781 Target: handy app. Binary: /usr/bin/handy. Kill: pkill -f handy. Start: hub op=start, application=/usr/bin/handy, pty=true, persist=true, ready={log:'.*', timeout:10}. Result: Persistent daemon, 69 catalog models seeded.

01a08f50-c405-7763-8a24-b52be5af422f

updated_at: 1789110966 Error: 'Platform error: permission denied opening 16 device node(s) under /dev/input' causing handy keyboard listener failure. Diagnosis: ls -la /dev/input confirms devices are root:input with crw-rw---- (660). groups shows user 'blank' missing 'input'. Resolution: sudo usermod -aG input blank. Pitfalls: 1. usermod without sudo fails to lock /etc/passwd; 2. sudo password entry in this CLI environment requires PTY for reliable input.