chore(skills): promote runbook skills to managed-skills; drop superseded SKILL.md
- 31 new managed skills (anubis/arr/authentik/hermes/freetoken/podman/llm-swap runbooks etc.) now tracked. - Removed superseded skills: omp_harness_config, peon_ping_integration (replaced by user-authored peon-ping-* managed skills), rocmfp4-strix-benchmark-orchestration. - New memory-root skills: niri_compositor_ops, omp_git_workflow, omp_model_config, quadlet-media-migration, homelab-service-triage, hermes-dankclaw-ops, frank-default-large-ops, caddy-auth-dns-playbook.
This commit is contained in:
1 parent
7be39d60dd
commit
9bfa0be85d
48 files changed
+1361
-42
No files matched your search
@@ -0,0 +1 @@
|
||||
Provides operational playbook for niri Wayland compositor. Covers cursor/Browser XDG defaults, SIGUSR1 hot-reload workflow, and nvidia-modeset semaphore deadlock recovery via modprobe config and force-reboot.
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# Hot-reload niri without killing session
|
||||
if pgrep -x niri > /dev/null; then
|
||||
niri-msg reload
|
||||
# Fallback signal method
|
||||
kill -SIGUSR1 $(pgrep niri)
|
||||
fi
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
# /etc/modprobe.d/nvidia-workarounds.conf
|
||||
# Resolves nvidia-modeset semaphore deadlock freezing niri options nvidia-modeset disable_vga=1
|
||||
options nvidia-modeset modeset=1
|
||||
@@ -0,0 +1 @@
|
||||
Git operations tailored for OMP environment. Addresses dirty `agent/memories/` tracking pitfalls, implements stash-before-checkout protocol, and standardizes PR creation in dank/command-center.
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
# Safely checkout main in OMP
|
||||
if [ -n "$(git status -s agent/memories/)" ]; then
|
||||
git stash
|
||||
echo "Stashed dirty agent/memories/ files."
|
||||
fi
|
||||
git checkout main
|
||||
git pull origin main
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
# PR Branch Convention
|
||||
- Branch: pr/fix-models
|
||||
- Target: main
|
||||
- Strategy: Single commit, clean history
|
||||
- Workflow: Feature -> PR -> Squash/Merge
|
||||
@@ -1,20 +0,0 @@
|
||||
# OMP Harness & Migration Playbook
|
||||
|
||||
## Environment Setup
|
||||
- Home: /home/dank/
|
||||
- Config: ~/.omp/agent/APPEND_SYSTEM.md (replaces Pi's SYSTEM.md)
|
||||
- Prompt Behavior: APPEND renders after default harness prompt. Use `omp config set personality none` to clear built-in personality while preserving custom APPEND.
|
||||
- Skills: Auto-discovered from ~/.claude/skills. Trigger via /skill:<name>.
|
||||
|
||||
## Tool Migration (Pi → OMP)
|
||||
| Pi | OMP | Notes |
|
||||
|---|---|---|
|
||||
| subagent | task | Direct replacement |
|
||||
| concurrency: N | Dropped | Harness auto-queues excess |
|
||||
| context: "fresh"/"fork" | Dropped | Subagents start blank/self-contained |
|
||||
| async: true | Dropped | Use local:// unique paths if needed |
|
||||
|
||||
## Prompt Maintenance
|
||||
- Remove hardcoded dates (OMP injects real time).
|
||||
- Keep persona constraints in APPEND_SYSTEM.md.
|
||||
- Reference omp:// docs for extensions/hooks/mcp-config.
|
||||
@@ -0,0 +1 @@
|
||||
Handles dual config synchronization, Ki-style context sizing, and validation for Frank's OMP model definitions. Covers lock-step editing of models.json and models.yml, contextWindow/maxTokens mirroring, and FLM WebP constraints.
|
||||
@@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Validates model config sync
|
||||
jq -e '.providers."llamacpp (dankserver)".models[0] | .contextWindow, .maxTokens' ~/.pi/agent/models.json
|
||||
python3 -c "import yaml; d=yaml.safe_load(open('/home/dank/.omp/agent/models.yml')); m=d['providers']['llamacpp (dankserver)']['models'][0]; print(m['id'], m['contextWindow'], m['maxTokens'])"
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"contextWindow": 204800,
|
||||
"maxTokens": 204800
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
# Peon-Ping Skill Integration
|
||||
|
||||
## Available Skills
|
||||
- peon-ping-config
|
||||
- peon-ping-log
|
||||
- peon-ping-toggle
|
||||
- peon-ping-use
|
||||
|
||||
## Usage Playbook
|
||||
1. Locate skills in ~/.claude/skills (shared across agents).
|
||||
2. Trigger via slash commands: /skill:grilling, /skill:tdd.
|
||||
3. skills.enableSkillCommands defaults to true.
|
||||
4. Use appropriate sub-skill based on operation:
|
||||
- Config: peon-ping-config to set thresholds/paths.
|
||||
- Monitor: peon-ping-log for status/output.
|
||||
- Control: peon-ping-toggle to enable/disable.
|
||||
- Execute: peon-ping-use to run targeted checks.
|
||||
|
||||
## Notes
|
||||
- Skills persist across agent sessions.
|
||||
- Integrate with OMP task tool for asynchronous monitoring if needed.
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
# Caddy, Authentik, Anubis, and split-DNS playbook
|
||||
|
||||
Use this when modifying franksdank.cloud routes, DNS records, or auth wrapping.
|
||||
|
||||
Architecture:
|
||||
- Single Caddy container on Dankclaw fronts services on Dankclaw and Dankserver.
|
||||
- LAN DNS via Pi-hole resolves service names to 192.168.0.143.
|
||||
- Public DNS via Porkbun points exposed names to WAN IP 71.227.227.172.
|
||||
- TLS uses Porkbun DNS-01 wildcard certificates; ordinary A-record deletion does not break wildcard renewal.
|
||||
- Porkbun credentials are machine-local secrets, never tracked.
|
||||
|
||||
Caddy rules:
|
||||
- Keep Caddy admin enabled on 127.0.0.1:2019 inside the container so file watcher hot-reload works.
|
||||
- Caddy routes by Host header; it does not care whether the name resolved via Pi-hole or Porkbun.
|
||||
|
||||
DNS changes:
|
||||
1. If a service should be LAN-only, it is usually safe to remove its ordinary Porkbun A record while keeping Pi-hole local DNS.
|
||||
2. Removing public DNS does not remove router port forwards or block direct IP access.
|
||||
3. Do not casually remove public DNS for auth.franksdank.cloud; external login flows may need it.
|
||||
4. Be cautious with gitea.franksdank.cloud because external git smart-HTTP use may depend on public DNS.
|
||||
|
||||
Auth wrapping:
|
||||
- Protected via Authentik forward_auth: homepage, SearXNG, Hermes, Prometheus, RomM, Copyparty.
|
||||
- Usually bypass forward_auth because they have native auth: Grafana, Gitea, OpenWebUI, Jellyfin, *arr, Pi-hole.
|
||||
|
||||
Verification pitfalls:
|
||||
- Curl or bot-like clients may get Anubis JS challenge page with HTTP 200. That does not prove the app or outpost succeeded.
|
||||
- Authentik outpost provider matching depends on exact Host header. Missing/wrong Host in CLI probes can produce misleading 404s.
|
||||
- Verify end-to-end login in a real browser after solving Anubis. Use logs to debug outpost 404/provider host-match failures.
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
# frank-default-large operations
|
||||
|
||||
Use this when changing or troubleshooting the large model service on Dankclaw.
|
||||
|
||||
Current durable model/runtime:
|
||||
- Host: Dankclaw, Strix Halo gfx1151 unified memory.
|
||||
- Alias: frank-default-large.
|
||||
- Endpoint: http://192.168.0.143:7770/v1, health on port 7770.
|
||||
- Repo files: scripts/serve-frank-large.sh and scripts/frank-default-large.env under /home/dank/Projects/serverAppConfigs.
|
||||
- Runtime: /home/dank/GitPackages/kingjones-ROCmFPX/build/bin/llama-server.
|
||||
- Model: kingjones777/Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF.
|
||||
- Local GGUF: /home/dank/models/kingjones-Qwen3.8-Flash-Next-ROCmFP4-STRIX/Qwen3.8-Flash-Next-Q4_0-ROCmFP4-STRIX.gguf.
|
||||
|
||||
Hard constraints:
|
||||
- Keep --fit off unless the qwen4exp hyper-connection auto-fit segfault is proven fixed.
|
||||
- Keep PLE table mmap/page-cache streamed. Do not add --no-mmap and do not force the PLE table into GPU memory.
|
||||
- Avoid bare env vars TEMP, HOST, and GPU_MAX_HEAP_SIZE. HIP/ROCm can read them unexpectedly.
|
||||
- Do not enable MTP/speculative decoding casually. Prior MTP heads failed because blk.0.hc_attn_norm.weight was missing. Latest durable state has SPEC_TYPE=none.
|
||||
- Stock llama.cpp cannot load this model; qwen4exp architecture support and ROCmFP4 tensor support must coexist in the same runtime tree.
|
||||
- If flash-attn graph build fails on QSA mask, port scripts/patches/qwen4exp-qsa-f32-mask.patch into the active runtime tree and rebuild.
|
||||
|
||||
Before edits:
|
||||
1. cd /home/dank/Projects/serverAppConfigs
|
||||
2. git status --short
|
||||
3. Inspect current scripts/frank-default-large.env and scripts/serve-frank-large.sh; do not rely on old memory for exact tunables.
|
||||
|
||||
After edits:
|
||||
1. Run repo tests appropriate to the change.
|
||||
2. Deploy/restart using the current repo workflow.
|
||||
3. Verify health: curl -s http://192.168.0.143:7770/health or via localhost on Dankclaw.
|
||||
4. Watch logs during model load; 113+ GiB mmap/model load can take significant time.
|
||||
|
||||
Benchmarking notes:
|
||||
- Separate prefill/TTFT from decode tok/s.
|
||||
- For decode sweeps, an 8K prompt and 256 generated tokens is sufficient unless testing long-run thermal/stability.
|
||||
- Prior decode sweep found THREAD_BATCH=16 best, but current repo env always wins.
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
# Hermes on Dankclaw operations
|
||||
|
||||
Use this when Hermes, Hermes WebUI, dashboard, Signal, or Gemma/FLM auxiliary routing is involved.
|
||||
|
||||
Facts:
|
||||
- Host: Dankclaw 192.168.0.143.
|
||||
- Live data: /home/dank/hermes-data mounted as /data.
|
||||
- HERMES_DATA_DIR and HERMES_HOME must point to /data.
|
||||
- Repo config.yaml.example is sanitized only; preserve live secrets and generated state.
|
||||
- WebUI has listened on port 8787. Dashboard uses 9119. Chrome DevTools Protocol binds to 127.0.0.1:9222.
|
||||
- Signal HTTP adapter expects signal-cli-daemon on 127.0.0.1:8080.
|
||||
|
||||
Health/status check:
|
||||
- ssh dankclaw 'for u in hermes hermes-webui hermes-dashboard signal-cli-daemon; do printf "%-22s %s %s\n" "$u" "$(systemctl --user is-active $u.service 2>/dev/null)" "$(systemctl --user is-enabled $u.service 2>/dev/null)"; done; podman ps -a --format "{{.Names}} {{.Status}} nets=[{{.Networks}}]" | grep -Ei "hermes|signal|chrome"; ss -lntp 2>/dev/null | grep -wE "8080|8787|9119|9222" | tr -s " "'
|
||||
|
||||
If WebUI is up but Signal/Hermes transport errors appear:
|
||||
1. Check signal-cli-daemon first:
|
||||
- ssh dankclaw 'systemctl --user status signal-cli-daemon.service --no-pager; journalctl --user -u signal-cli-daemon.service -n 120 --no-pager'
|
||||
2. Only if appropriate, start/enable:
|
||||
- ssh dankclaw 'systemctl --user enable --now signal-cli-daemon.service'
|
||||
3. Verify:
|
||||
- ssh dankclaw 'systemctl --user is-active signal-cli-daemon.service; ss -lntp | grep -w 8080'
|
||||
|
||||
Config edit caution:
|
||||
- Do not replace /home/dank/hermes-data/config.yaml wholesale with repo example.
|
||||
- Live /data/config.yaml ownership may require sudo-safe edit flow.
|
||||
- After live config edits, restart the appropriate Hermes unit/container and verify health.
|
||||
|
||||
Model routing memory:
|
||||
- Main model: frank-default-large via dankclaw-large at http://192.168.0.143:7770/v1.
|
||||
- Vision auxiliary: gemma4-it:e4b at http://192.168.0.143:7771/v1 via provider/custom endpoint.
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
# Homelab service triage
|
||||
|
||||
Use this when checking service state across Dankclaw/Dankserver from Dankware or another controller.
|
||||
|
||||
1. Start from the repo and trust current repo state over memory:
|
||||
- cd /home/dank/Projects/serverAppConfigs
|
||||
- git status --short
|
||||
- find . -path ./.git -prune -o -name '*.container' -print | sort
|
||||
|
||||
2. Identify host and unit style:
|
||||
- Dankclaw: 192.168.0.143
|
||||
- Dankserver: 192.168.0.235
|
||||
- Most services are rootless Quadlet user units: systemctl --user <action> <name>.service
|
||||
- Some model services may be system units or custom scripts; inspect repo before acting.
|
||||
|
||||
3. Inventory a host:
|
||||
- ssh HOST 'systemctl --user list-units --type=service; podman ps -a --format "{{.Names}} {{.Status}} nets=[{{.Networks}}]"'
|
||||
- For a suspected unit: ssh HOST 'systemctl --user status UNIT.service --no-pager; journalctl --user -u UNIT.service -n 120 --no-pager'
|
||||
|
||||
4. For port/listener issues:
|
||||
- ssh HOST 'ss -lntp 2>/dev/null | tr -s " "'
|
||||
- Match published ports to Quadlet PublishPort and podman ps networks.
|
||||
|
||||
5. For deploy issues:
|
||||
- Review scripts/deploy.sh behavior in current repo.
|
||||
- Confirm target checkout is clean or intentionally stashed by deploy workflow.
|
||||
- Do not hand-edit generated systemd output; fix Quadlet/source files.
|
||||
- After Quadlet changes run daemon reload via deployer or systemctl --user daemon-reload, then inspect generated unit with systemctl --user cat.
|
||||
|
||||
6. Do not commit secrets. Machine-local env files are the source for Caddy/Porkbun, app passwords, API keys, OAuth creds, phone numbers, sessions, and live generated state.
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
# Quadlet media migration notes
|
||||
|
||||
Use this when migrating or repairing media services on Dankserver or standardizing remaining compose services.
|
||||
|
||||
General rules:
|
||||
- Prefer Quadlet .container units for boot persistence.
|
||||
- Use bind mounts only for durable state.
|
||||
- Linux data root standard: /home/dank/Containers/<svc>, unless a service intentionally uses an in-place legacy root.
|
||||
- Use UserNS=host in Quadlet when host UID/GID behavior matters; do not use compose-style UsernsMode=.
|
||||
- Stop/mask old native units or disable old snaps only after verifying rollback path.
|
||||
|
||||
Plex/Tautulli known-good design:
|
||||
- Plex image: lscr.io/linuxserver/plex:1.43.3.10896-cb3ebc72d-ls322.
|
||||
- Tautulli image: lscr.io/linuxserver/tautulli:v2.18.1-ls242.
|
||||
- Network: dankserver_appnet, aliases plex and tautulli.
|
||||
- Ports: Plex 32400:32400, Tautulli 8181:8181.
|
||||
- Plex volumes: /var/lib/plexmediaserver:/config rw and /mnt/entropy:/mnt/entropy:ro.
|
||||
- Tautulli volume: /home/dank/Containers/tautulli:/config.
|
||||
- Plex rootless mapping: UserNS=host, PUID=0, PGID=0, data root chowned to 1000:1000. Rollback chown is 997:984.
|
||||
- Tautulli: PUID=1000, PGID=1000.
|
||||
- Tautulli seed: PMS_Web_Host=plex, PMS_Web_Port=32400, PMS_Secure=0.
|
||||
- Plex health gate should be generous, around 600 seconds, because large DB migrations can cold-load slowly.
|
||||
|
||||
Copyparty/Jellyfin caution:
|
||||
- User directive after verification: stop touching Jellyfin/Copyparty unless explicitly asked.
|
||||
- Jellyfin mount verified: /mnt/entropy:/data:ro. DB table is BaseItems.
|
||||
- Copyparty must be read-only for broad web/LAN access. Bare A in copyparty means everyone full access. Read-only permission shape is r for anonymous and ra,dank for admin browsing, without write/move/delete perms.
|
||||
|
||||
Before decommission:
|
||||
- Do not apt purge plexmediaserver or snap remove tautulli without explicit sign-off.
|
||||
- Keep rollback steps documented before deleting old service data or packages.
|
||||
-1
@@ -1 +0,0 @@
|
||||
Orchestrate llama.cpp benchmarking on Dankclaw (gfx1151) using frank-default-large. Follow strict env constraints, health-check polling patterns, and resource isolation. SSH from controller, use frank-default-small as driver, poll health endpoints with 5+ checks at ~5s intervals, and apply env file tunings before starting throughput tests.
|
||||
Reference in new issue
Block a user