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
This commit is contained in:
1 parent
83c9c92b3f
commit
135bb2194d
103 files changed
+5333
-170
No files matched your search
@@ -1,3 +1,4 @@
|
||||
- niri output config on blankpad (niri 26.04): transform values are COUNTER-CLOCKWISE, so "90" means the panel's top bezel must physically sit on the LEFT ("270" = top bezel right). Two traps when pinning outputs in ~/.config/niri/cfg/display.kdl (symlink into ~/.omp/dotfiles/zz-blankpad/): (1) an output "X" {} block RESETS every property you don't restate to its default — eDP-1 needed scale 1.25 repeated or it would silently drop to 1.0; (2) niri re-runs its auto-layout for any output without a pinned position, so pinning only the externals shoved eDP-1 to the far right (3936,0) — pin eDP-1 at x=0 too if you want the original left-to-right order. Apply with niri validate -c ~/.config/niri/config.kdl then niri msg action load-config-file; confirm with niri msg outputs (shows Logical size swapped to 1200x1920 and "Transform: 90° counter-clockwise"). Live one-off rotation without config: niri msg output NAME transform 90. _(context: Rotated both external PM1601 panels (DP-2, HDMI-A-1) to portrait on blankpad 2026-09-15; verified via niri msg outputs, committed 2baf0c0 to dank/command-center.)_
|
||||
- Frank's frank-large ceiling is now 200,000 context in ~/.omp/agent/models.yml (provider llamacpp (dankclaw), committed 60dc0bb to dank/command-center 2026-09-13), while halogen on 192.168.0.143:7770 still serves context=262144 — a deliberate under-serve, not drift. Convention when changing any contextWindow there: read the served value from curl baseUrl/health (it reports context, model, vision.enabled) and check KV-pool admission before/after — admission reserves prompt + max_tokens against the pool (401,408 positions since 2026-09-13), so contextWindow + maxTokens must stay under it or the request hangs the full 3600 s queue timeout before a 503. maxTokens stays pinned at 65536 because HALOGEN_MAX_TOKENS_CAP 400s anything larger. Also: OMP reads models.yml only at startup, so a running session keeps the old ceiling; tell the user new omp invocations pick up the change.
|
||||
- Frank's terminal font stack on Dankware: package ttf-terminus-nerd (Arch, group nerd-fonts), which provides the TERMINESS outline derivative — families "Terminess Nerd Font" / " Mono" / " Propo". The bitmap original terminus-font is NOT installed, so classic-Terminus crispness depends entirely on 1-bit hinted rendering. Crisp/bitmap look = freetype-load-flags = hinting,monochrome (monochrome = 1-bit, disables AA; the light flag stays in the resolved value but is inert once monochrome is on, per ghostty.5.md). Sizing rule that matters: pixel cell = pt × (96/72) × monitor_scale, and the crisp sweet spot is when that lands on Terminus' native bitmap heights (8x16, 9x18, 10x20, 11x22, 12x24). On Frank's eDP-1 (1920x1080 @ scale 1.25) font-size 12 → 20px → exactly the 10x20 grid; 14pt → 23.3px, fractional and blurry regardless of flags. Check scale with niri msg outputs. Also: ghostty +show-config prints only values differing from default, and Ghostty's default font-size IS 12 — so a 12pt setting vanishes from the diff output; confirm against +show-config --default before concluding the key was ignored.
|
||||
- NEVER send SIGUSR1 to ghostty on Frank's workstations — it does not reload the config, it kills/respawns the terminal (observed 2026-09-13: PID churn, Frank said "stop killing the terminal"). The old recipe in agent/memories/--home-blank-.omp--/MEMORY.md and skills/dotfiles_git/scripts/reload_ghostty.sh ("pgrep ghostty | while read pid; do kill -USR1 $pid; done") is WRONG for ghostty 1.3.1. Correct way to apply a changed ghostty theme/config without losing shells: press the default keybind ctrl+shift+, (action reload_config) in each window — confirmed as the default in ghostty +show-config --default. For applying theme changes desktop-wide without touching terminals: noctalia msg templates-apply regenerates rendered theme files, and niri msg action load-config-file reloads the compositor (reload-config is NOT a valid niri subcommand). Custom noctalia palettes live at ~/.config/noctalia/palettes/Name.json and are selected with noctalia msg color-scheme-set custom "Name"; that source is immune to the community-palette catalog/md5 sync, unlike editing the cache in ~/.local/state/noctalia/community-palettes/. Also: noctalia msg screenshot-fullscreen saves to ~/Pictures (no need to scrape the PNG out of the clipboard with wl-paste).
|
||||
|
||||
@@ -1,5 +1,92 @@
|
||||
# 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.
|
||||
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
thread_id: 01a09e49-b17b-74c3-83e9-2eb95ed25621
|
||||
updated_at: 1789368866
|
||||
|
||||
Noctalia theme change request (yellow to red, terminal text same red) led to locating Noctalia/Niri config surfaces and crispness controls. No final edit was applied before abort. Durable: Noctalia is Niri-based; palette generated via noctalia theme image; Ghostty uses theme=noctalia; niri compositor AA only affects corner rounding, while blur/noise cause soft glass look and text AA is client-side.
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
thread_id: 01a0a798-f61e-71d3-8fb6-55879410c3fc
|
||||
updated_at: 1789518997
|
||||
|
||||
Rotated two external PNP(XYM) PM1601 portable monitors 180° in portrait via niri display config edit. Key insight: in portrait mode, a 180° flip is the 90°↔270° transform swap, not adding 180°. Workflow: niri msg outputs → edit cfg/display.kdl → niri validate → niri msg action load-config-file → verify → git commit/push.
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
thread_id: 01a0a7ff-dae2-71fd-9bd0-a8aa7c9d3676
|
||||
updated_at: 1789533306
|
||||
|
||||
llama.cpp parallelism types: two real model-parallelism modes (pipeline/layer split = default, tensor = experimental), plus deprecated 'row' and single-GPU 'none'. --parallel is a separate serving-level concurrency axis, not model splitting. No first-class context/sequence parallelism. Tensor mode requires flash attention, non-quantized KV, and excludes MoE/Mamba/SSM architectures.
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
thread_id: 01a0a817-7382-7525-92f1-14cd7fade072
|
||||
updated_at: 1789529008
|
||||
|
||||
Re-arranged blankpad niri display: moved two rotated PM1601 externals (DP-2, HDMI-A-1) from right of eDP-1 to left. New x-chain: DP-2@0 → HDMI-A-1@1200 → eDP-1@2400. Committed as 83c9c92 to dank/command-center.
|
||||
Reference in new issue
Block a user