chore(memory): snapshot auto-learned memory and renamed workstation skills
--home-blank-.omp--: MEMORY.md +140 / learned.md / memory_summary.md / raw_memories.md +1002 rewritten by auto-learn after the model rename, frank-medium split-balance and bottleneck studies. Skills renamed to single-topic buckets: dotfile-git-workflow -> ghostty-text-aa + niri-display-rotation + noctalia-theme, handy-service-mgmt -> handy-flm-inference, inference-runtime -> llama-cpp-parallelism. --home-blank-Projects-serverAppConfig--: 38 new rollout summaries, raw_memories.md/MEMORY.md refreshed, skills re-bucketed (bench-protocol, llm-fleet-model-swap, rootless-quadlet-log-retrieval, orchestration-quadlet). Per-worktree bucket (wt-20261006-122204) is now gitignored, not committed.
This commit is contained in:
1 parent
a34322aeb0
commit
5b08896e4e
72 files changed
+1461
-175
No files matched your search
@@ -1,22 +1,28 @@
|
||||
## System & Desktop Environment
|
||||
- **Noctalia (Niri) DE**: Bin `/usr/bin/noctalia`. Configs: `~/.config/noctalia/config.toml`, `noctalia.kdl`. IPC: `noctalia msg <cmd>` (replaces `qs -c noctalia-shell ipc`). Key cmds: `panel-toggle`, `session`, `lock`, `launcher`. App templates: `/usr/share/noctalia/assets/templates/`. Palette gen: `noctalia theme [image]`. GTK accent: `#b267e4`.
|
||||
- **Fonts & AA**: Ghostty (`font-subpixel-render=off`), Alacritty (`font.antialias=false`). Ghostty fix: replace `font-hinting = hinting` with `freetype-load-flags = hinting,light` (line 10).
|
||||
- **Frank Desktop**: Cursor size 36 (`gsettings`, `settings.ini`, `XCURSOR_SIZE=36`). Theme: `capitaine-cursors`.
|
||||
- **Authenik (2026.8)**: Outpost caches claims per session (1-24h TTL). Pitfall: silent 403s post-group-add despite correct membership.
|
||||
# Environment & Tooling Memory (Frank workstation / blankpad)
|
||||
|
||||
## Inference & Runtime
|
||||
- **Frank-Large**: Sampler defaults overridden from halogen/greedy: `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` (retains thinking blocks across turns). Config: `agent/models.yml`. Deployed to `dank/command-center` (dankclaw). Live effect on next config read (no restart).
|
||||
- **Frank-Small**: Uses checkpoint's fixed Qwen3.6 template. `deploy-plan.py` mapping is vestigial.
|
||||
- **Halogen Runtime**: Baked-in chat template (no file swap). Accepts `chat_template_kwargs`: `enable_thinking`, `preserve_thinking`, `reasoning_effort`.
|
||||
- **FLM NPU (Dankclaw)**: `gemma4-it:e4b` on port 7771. FIFO queue (~7-11s switch). Supports PNG/JPEG; rejects WebP (convert first). Requires `thinkingLevelMap` in `models.json`. Pitfall: missing `.xclbin` symlinks under `~/.config/flm/xclbins/`.
|
||||
## Persistent facts
|
||||
- User: `blank`. Home: `/home/blank`. Dotfiles repo: `~/.omp` (Gitea `dank/command-center` at 192.168.0.143:3000, local `git push` pattern). `serverAppConfig` cloned to `~/Projects/serverAppConfig`.
|
||||
- Desktop: Noctalia (Niri-based DE at `/usr/bin/noctalia`). Configs `~/.config/noctalia/config.toml` + `noctalia.kdl`; IPC via `noctalia msg <cmd>` (panel-toggle, session, lock, launcher). App templates in `/usr/share/noctalia/assets/templates/`. Palette generated via `noctalia theme [image]`. GTK accent #b267e4.
|
||||
- Ghostty: `theme = noctalia`; text AA via `freetype-load-flags` (not `font-hinting`). Alacritty: `font.antialias=false`.
|
||||
- Niri display config: `~/.config/niri/cfg/display.kdl`. Transform values are absolute; in portrait, a 180° flip = swap 90° ↔ 270°.
|
||||
- Hardware: Lenovo laptop eDP-1 (1920x1080, scale 1.25) + two PNP(XYM) PM1601 externals (1920x1200, scale 1, portrait). Current blankpad layout: DP-2@x=0 → HDMI-A-1@x=1200 → eDP-1@x=2400.
|
||||
- Frank desktop: cursor size 36, capitaine-cursors theme, Authenik 2026.8. Authenik caches claims per session (1-24h TTL) → silent 403s after group add.
|
||||
- Inference: `handy` app (`/usr/bin/handy`, hub op=start, application=/usr/bin/handy, pty=true, persist=true) with 69 catalog models. FLM NPU gemma4-it on port 7771 — PNG/JPEG only (no WebP), needs `thinkingLevelMap` in models.json, `.xclbin` symlinks under `~/.config/flm/xclbins/`.
|
||||
- Halogen runtime (frank-large): baked-in chat template, no file swap; accepts `chat_template_kwargs` (enable_thinking, preserve_thinking, reasoning_effort). Sampler defaults: temp=1.0, top_p=0.95, top_k=20, min_p=0.0, presence_penalty=0.0, repetition_penalty=1.0. `preserve_thinking=true` in `agent/models.yml`.
|
||||
- `sudo usermod -aG input blank` was required for `/dev/input` device access (660 root:input).
|
||||
- Compositor AA in niri 26.04 is limited to corner rounding via `niri_rounding_alpha()`; blur/noise settings cause softness, not AA. Client-side text AA is not controlled by niri.
|
||||
|
||||
## Configuration & Repository
|
||||
- **OMP Harness**: Repo at `~/.omp`. Cloned `serverAppConfig` to `~/Projects/serverAppConfig` (local singular vs remote plural `serverAppConfigs`). HTTP transport with embedded dank token (no SSH keys). HEAD: 701ab14 (main tracks origin/main).
|
||||
- **Structure**: 308 files, 4.2 MB. Includes `dankclaw/`, `dankserver/`, `frankbook-pro/` (7 quadlets), `shared/` (Homepage, alloy, loki, prometheus, searxng), `tests/` (47 E2E), `serverAppConfigs-docs/` (115). Legacy: `old/`, `report/`, `scripts/`, `.githooks/`, `AGENTS.md`.
|
||||
- **Recent**: Observability quadlet cutover (loki/alloy/comfyui images, grafana OAuth secret per-service env seeding).
|
||||
- **Git Workflow**: Branch `main`. Untracked: `.pre-pull-backup/`, `home/`. LFS locking notice is advisory. Mitigate via `git config lfs.http://<repo>/info/lfs.locksverify true`. Pattern: `git add <file> && git commit -m "<msg>" && git push`.
|
||||
## Durable workflows
|
||||
1. **Noctalia theme change**: edit generated palette/theme source before hardcoding per-app colors; terminal text color must match accent in both palette and terminal override. `noctalia msg` for IPC; `git add && git commit && git push` in dotfiles repo.
|
||||
2. **Niri display rotation**: `niri msg outputs` → read `display.kdl` → edit transforms → `niri validate -c <path>` → `niri msg action load-config-file` → verify → git commit/push.
|
||||
3. **Ghostty AA fix**: replace `font-hinting = hinting` with `freetype-load-flags = hinting,light`. Reload via USR1: `pgrep ghostty | while read pid; do kill -USR1 "$pid"; done`.
|
||||
4. **Handy restart**: `pkill -f handy`, then hub daemon start with pty=true, persist=true, ready timeout 10s.
|
||||
5. **llama.cpp parallelism**: layer (default) = pipeline; tensor (experimental) = true tensor parallelism requiring flash attention + non-quantized KV; row (deprecated); none = single GPU. `--parallel` is serving-level concurrency, not model parallelism. No context/sequence parallelism mode.
|
||||
|
||||
## Operations & Services
|
||||
- **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}`. Status: Up, 69 catalog models seeded.
|
||||
- **Device Permissions**: `/dev/input/*` are `root:input` (660). User `blank` must be in `input` group (`sudo usermod -aG input blank`). Pitfall: `usermod` without sudo fails to lock `/etc/passwd`; `sudo` password entry in this CLI environment requires PTY.
|
||||
- **Ghostty Reload**: `pgrep ghostty | while read pid; do /usr/bin/kill -USR1 "$pid"; done`.
|
||||
## Pitfalls
|
||||
- Portrait 180° rotation in niri is 90°↔270° swap, NOT adding 180°.
|
||||
- Tensor mode: flash attention required, KV cache non-quantized, MoE/Mamba/SSM unsupported, `--fit` disabled.
|
||||
- Authenik session claim caching causes silent 403s post-group-add.
|
||||
- Local dir `serverAppConfig` vs remote repo `serverAppConfigs` name mismatch (trivial, pull/push unaffected).
|
||||
- Git LFS lock warnings: mitigate with `git config lfs.http://<repo>/info/lfs.locksverify true`.
|
||||
- Noctalia crispness: no single compositor-AA switch; scoped options only (hard corners; hard corners + no blur/noise; full crispness with opacity 1.0/blur 0/fontconfig AA off; terminal-only).
|
||||
@@ -1 +1 @@
|
||||
Context: OMP repo at ~/.omp with serverAppConfig (local) <-> serverAppConfigs (remote). Frank-large uses temp=1.0, preserve_thinking=true; frank-small uses Qwen3.6. FLM NPU (port 7771) needs .xclbin symlinks and WebP conversion. Authenik caches claims (1-24h), watch for post-group-add 403s. Handy daemon runs via hub (pty:true); ensure user 'blank' is in 'input' group for /dev/input access. Git LFS locks are advisory; use USR1 for Ghostty reload. Current shift: noctalia theme & font-hinting fixes.
|
||||
Frank workstation (user blank) facts and reusable workflows: Noctalia/Niri DE config and display rotation (portrait 180° = 90°↔270° swap), Ghostty/Alacritty text-AA fixes, niri compositor-AA limits, handy/FLM inference constraints, llama.cpp split modes, and dotfile git workflow. Dotfiles repo is ~/.omp (Gitea dank/command-center). Current layout: DP-2@0 → HDMI-A-1@1200 → eDP-1@2400. Repository state wins over this memory.
|
||||
@@ -1 +0,0 @@
|
||||
Standardized workflow for dotfile configuration management, Git state verification, LFS-aware pushing, and application reloading.
|
||||
-1
@@ -1 +0,0 @@
|
||||
Updated niri layouts to match noctalia palette and IPC commands.
|
||||
-1
@@ -1 +0,0 @@
|
||||
git add $1 && git commit -m "$2" && git push
|
||||
-1
@@ -1 +0,0 @@
|
||||
pgrep ghostty | while read pid; do /usr/bin/kill -USR1 "$pid"; done
|
||||
-1
@@ -1 +0,0 @@
|
||||
freetype-load-flags = hinting,light
|
||||
-1
@@ -1 +0,0 @@
|
||||
:root { --accent: #b267e4; }
|
||||
@@ -0,0 +1,13 @@
|
||||
# Ghostty Text AA Fix
|
||||
|
||||
Ghostty font AA is controlled by `freetype-load-flags`, NOT `font-hinting`.
|
||||
|
||||
## Fix
|
||||
- Replace `font-hinting = hinting` with `freetype-load-flags = hinting,light` in `~/.config/ghostty/config`.
|
||||
|
||||
## Reload
|
||||
- Send USR1 to all ghostty processes: `pgrep ghostty | while read pid; do kill -USR1 "$pid"; done`
|
||||
|
||||
## Related
|
||||
- Alacritty text AA: `font.antialias=false` in its config.
|
||||
- Noctalia crispness: niri compositor AA only affects corner rounding (`niri_rounding_alpha()`); text AA is client-side. No nearest-neighbor resample knob in this build.
|
||||
@@ -0,0 +1,17 @@
|
||||
# Handy + FLM NPU Inference
|
||||
|
||||
## Handy app
|
||||
- Binary: `/usr/bin/handy`
|
||||
- Start: `hub op=start` with `application=/usr/bin/handy`, `pty=true`, `persist=true`, `ready={log:'.*', timeout:10}`
|
||||
- Result: persistent daemon, 69 catalog models seeded
|
||||
- Restart: `pkill -f handy`, then re-run hub op=start
|
||||
|
||||
## FLM NPU (Dankclaw)
|
||||
- gemma4-it:e4b on port 7771
|
||||
- Accepts PNG/JPEG; rejects WebP (convert first with ImageMagick `convert`)
|
||||
- Requires `thinkingLevelMap` in models.json
|
||||
- FIFO queue; ~7-11s model switch
|
||||
- Pitfall: missing `.xclbin` symlinks under `~/.config/flm/xclbins/` cause failures
|
||||
|
||||
## Related
|
||||
- Dotfile repo: `~/.omp` (Gitea `dank/command-center`, 192.168.0.143:3000)
|
||||
@@ -1 +0,0 @@
|
||||
Lifecycle and dependency management for the handy daemon, covering hub deployment, model seeding, and /dev/input permission fixes.
|
||||
-1
@@ -1 +0,0 @@
|
||||
Resolved 'permission denied opening device node(s)' by adding user to 'input' group (660 perms). Sudo requires PTY.
|
||||
-1
@@ -1 +0,0 @@
|
||||
sudo usermod -aG input blank
|
||||
-1
@@ -1 +0,0 @@
|
||||
pkill -f handy; hub op=start, application=/usr/bin/handy, pty=true, persist=true, ready={log:'.*', timeout:10}
|
||||
-1
@@ -1 +0,0 @@
|
||||
application: /usr/bin/handy\npty: true\npersist: true\nready: {log: '.*', timeout: 10}
|
||||
@@ -1 +0,0 @@
|
||||
Manages frank-large/small inference routing, FLM NPU constraints, and Halogen runtime kwargs for thinking block preservation.
|
||||
-1
@@ -1 +0,0 @@
|
||||
Pinned sampler: temp=1.0, top_p=0.95, top_k=20. Live config read on next cycle.
|
||||
-1
@@ -1 +0,0 @@
|
||||
ls -l ~/.config/flm/xclbins/ | grep -E '\.xclbin' || echo 'Missing symlinks'
|
||||
-1
@@ -1 +0,0 @@
|
||||
curl -s localhost:7771/status | jq .queue
|
||||
-1
@@ -1 +0,0 @@
|
||||
enable_thinking: true\npreserve_thinking: true\nreasoning_effort: medium
|
||||
-1
@@ -1 +0,0 @@
|
||||
{"thinkingLevelMap": true, "gemma4-it": "e4b"}
|
||||
@@ -0,0 +1,23 @@
|
||||
# llama.cpp Multi-GPU Parallelism
|
||||
|
||||
## Split modes (--split-mode / -sm)
|
||||
- **layer** (default): Pipeline parallelism. Each GPU holds a contiguous layer slice. Token flows sequentially through GPUs. 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 '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 that term is applied to llama.cpp, it's loose third-party language.
|
||||
|
||||
## Hardware context (this environment)
|
||||
- Single RTX 4070 Max-Q (~12 GB VRAM). Multi-GPU split modes do not apply. Relevant knobs: --parallel for concurrency, CPU+GPU offloading for models >12 GB.
|
||||
@@ -0,0 +1,26 @@
|
||||
# Niri Display Rotation Workflow
|
||||
|
||||
Used to rotate/flip external monitors in portrait mode.
|
||||
|
||||
## Workflow
|
||||
1. `niri msg outputs` — capture current transform, logical size, scale, position.
|
||||
2. Read `~/.config/niri/cfg/display.kdl`.
|
||||
3. Edit `transform` values.
|
||||
4. `niri validate -c ~/.config/niri/cfg/display.kdl` — dry-run validation.
|
||||
5. `niri msg action load-config-file` — hot-reload (no restart).
|
||||
6. `niri msg outputs | grep -E '^Output|Transform|Logical|Scale'` — verify.
|
||||
7. `git add && git commit && git push` in dotfiles repo (`~/.omp`).
|
||||
|
||||
## Critical pitfall
|
||||
- In portrait, "flip 180°" = swap `90° counter-clockwise` ↔ `270° counter-clockwise`.
|
||||
- Setting `transform "180"` on a portrait monitor kicks it to landscape-upside-down.
|
||||
- Niri transform values are absolute, NOT modular arithmetic.
|
||||
|
||||
## Verified layout (blankpad, 83c9c92)
|
||||
- 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
|
||||
|
||||
## Config split
|
||||
- `~/.config/niri/cfg/*.kdl` (Noctalia-style includes).
|
||||
- Display config lives in `~/.config/niri/cfg/display.kdl`.
|
||||
@@ -0,0 +1,21 @@
|
||||
# Noctalia Theme Editing
|
||||
|
||||
Noctalia is a Niri-based DE (`/usr/bin/noctalia`).
|
||||
|
||||
## Config locations
|
||||
- Main config: `~/.config/noctalia/config.toml`
|
||||
- Niri config: `~/.config/niri/cfg/noctalia.kdl`
|
||||
- IPC: `noctalia msg <command>` (direct, not qs wrapper). Key cmds: panel-toggle, session, lock, launcher.
|
||||
- App templates: `/usr/share/noctalia/assets/templates/` (gtk, ghostty, alacritty, wezterm, helix, btop, starship, qt, cava, scroll, mango, umbriel, foot, emacs, kitty, etc.)
|
||||
- Palette generation: `noctalia theme [image]`
|
||||
- GTK accent default: #b267e4
|
||||
|
||||
## Changing an accent (e.g. yellow → red)
|
||||
1. Locate and edit the generated Noctalia palette/theme source BEFORE hardcoding per-app colors.
|
||||
2. If Ghostty is set to `theme = noctalia`, direct terminal color overrides are less durable than updating the theme itself.
|
||||
3. Terminal text color must match the chosen accent in BOTH the Noctalia palette and any terminal-specific override.
|
||||
4. Hot-reload: `noctalia msg action load-config-file` (or equivalent config load action).
|
||||
|
||||
## Related
|
||||
- Niri display config: `~/.config/niri/cfg/display.kdl`.
|
||||
- Dotfile git workflow: `git add && git commit && git push` in `~/.omp`.
|
||||
Reference in new issue
Block a user