kb: retire pi-installation association (OMP is the primary harness)

Purge live-state claims that ~/.pi is our harness; keep general
pi documentation in omp-docs/ and dated historical records.

- README.md: single config source; Legacy Notes reworded
- AGENTS.md: drop 'like ~/.pi did' framing
- APPEND_SYSTEM.md: okf-spec -> omp-docs/references/okf-spec.md
- dotfiles/zsh/.zshrc: systemprompt alias -> APPEND_SYSTEM.md
- managed skill llm-fleet-model-swap + model_config_sync skill:
  single-source models.yml; validation script YAML-only
- memories (MEMORY.md, memory_summary.md, learned.md): single source
- omp-docs: .okf root -> ~/.omp/omp-docs; de-live pi-era claims in
  pi/index.md, pi-web-access.md, engineering/agents-files.md
This commit is contained in:
Frank
2026-09-17 19:24:02 -07:00
parent eebcfbf5ac
commit c3f30bdbd0
23 changed files with 81 additions and 76 deletions
+1 -1
View File
@@ -68,7 +68,7 @@ secret in every agent's context window on every machine that pulls this repo.
repo's operator: never stop, mask, or restart it (or any production service on
any box) without an explicit, current, per-run OK from Frank.
## File-organization doctrine (why this repo won't rot like ~/.pi did)
## File-organization doctrine (why this repo stays readable)
- One concept, one file; directories get an `index.md` listing their contents —
that's the OKF contract, and it is also the anti-rot mechanism: nothing may
+3 -3
View File
@@ -18,7 +18,7 @@ Dankware is the primary host — this repository lives at `~/.omp/` and drives t
~/.omp/
├── agent/ # OMP harness runtime
│ ├── config.yml # Live agent configuration
│ ├── models.yml # Model providers (imported from ~/.pi/agent/models.json)
│ ├── models.yml # Model providers (single source of truth)
│ ├── APPEND_SYSTEM.md # System prompt extensions
│ ├── managed-skills/ # Managed skills (SKILL.md bundles)
│ ├── models.db # Model cache
@@ -68,8 +68,8 @@ Dankware is the primary host — this repository lives at `~/.omp/` and drives t
- **OKF v0.1** — every doc file carries YAML frontmatter with a `type:` field. `index.md` files are directory listings (no frontmatter).
- **Progressive disclosure** — `index.md` is a landing page; drill into subdirectories for detail.
- **Verified facts** — stamped with `verified:` when probed against the live fleet. Trust over memory.
- **Two config copies** — `~/.omp/agent/models.yml` is generated from `~/.pi/agent/models.json`. Edits touch both.
- **Single config source** — `~/.omp/agent/models.yml` is the only model registry; OMP is the primary harness and there is no second copy to keep in sync.
## Legacy Notes
The pi-era configuration at `~/.pi/` still exists for reference. Live harness config lives in `~/.omp/`. New managed skills live in `~/.omp/agent/managed-skills/` alongside legacy symlinked skills at `~/.pi/agent/skills/`.
`omp-docs/pi/` and `omp-docs/core/` retain general documentation about the pi-coding-agent harness (its config format, packages, skill system) for reference. OMP at `~/.omp/` is the live harness; managed skills live in `~/.omp/agent/managed-skills/`.
+1 -1
View File
@@ -57,7 +57,7 @@ Suggest these tools or languages as possible solutions to problems if they are a
The knowledge base at `docs/` is the source of truth for your project. Your training is out of date. Default to the documentation and the code before you assume anything. Maintain a work log of actions taken and their result. Refer to the work log to remember the progress of your tasks.
1. Read the relevant `index.md` before you touch a topic.
2. Follow `~/.pi/agent/docs/references/okf-spec.md` for every doc you create or edit.
2. Follow `omp-docs/references/okf-spec.md` for every doc you create or edit.
3. Read the target file completely before you edit it.
4. Always update the documentation when you've completed a task.
5. Compact the work log when necessary.
@@ -26,8 +26,9 @@ Produce a self-contained HTML report of repo work in a time window and open it i
- Self-contained: inline CSS only, NO CDNs (must work from file:// offline). Dark theme CSS vars (#1a1b26 bg family works).
- Sticky top nav, section anchors, `<pre class=code><code>` blocks, commit hashes as `.tag` chips.
- Build via python (eval kernel): subprocess for git data, string concat for CSS (avoid f-string brace pain), f-strings for rows.
- Literal `{}` in HTML text (e.g. `fallbackChains: {}`) inside an f-string is a SyntaxError — build that fragment by concatenation or double the braces.
## Delivery + verification
- Write to `/home/dank/Reports/<repo>-<window>-<date>.html` (outside repo, tree stays clean).
- Validate: python HTMLParser feed (parse errors) + open in headless browser (`write` JSON to xd://browser: open → run with `document.querySelectorAll` counts + fullPage screenshot) → close tab.
- Write to `$HOME/Reports/<repo>-<window>-<date>.html` (outside repo, tree stays clean; create the dir — on Dankware that is /home/blank/Reports, on dank hosts /home/dank/Reports).
- Validate: python HTMLParser feed (parse errors) + open in headless browser (`write` JSON to xd://browser: open → run with `document.querySelectorAll` counts) → close tab. Element counts are sufficient proof; a fullPage screenshot of a long report returns a multi-MB raw pixel buffer dump — only screenshot short pages.
- Open for Frank: `nohup firefox --new-tab file:///<path> >/dev/null 2>&1 & disown`.
@@ -37,5 +37,5 @@ Use when switching model, quant, or llama.cpp/FreeToken runtime for a `frank-def
## 6. Close-out (mandatory)
- Docs: active runbook updated (build recipe, profile, validation numbers incl. real-workload prefill/decode), superseded runbook gets RETIRED banner kept as rollback record, `LLM/index.md` mermaid + active list, AGENTS.md fleet table + Runtime section + history chain, work log entry in `serverAppConfigs-docs/log.md`.
- `~/.pi/agent/models.json`: contextWindow must equal the REAL per-slot context — llama.cpp logs `n_ctx_slot` per prompt; parallel N clamps `n_ctx_train` (e.g. 262144/2 = 131072/slot). Overselling causes silent client-side overflow.
- `~/.omp/agent/models.yml`: contextWindow must equal the REAL per-slot context — llama.cpp logs `n_ctx_slot` per prompt; parallel N clamps `n_ctx_train` (e.g. 262144/2 = 131072/slot). Overselling causes silent client-side overflow.
- Rollback = one env commit (paths + LLAMA_BIN); keep prior binary + payload on disk.
@@ -1,34 +1,26 @@
## System & Hardware Topology
- **dankserver**: Dual AMD R9700 GPUs.
- *Issue*: RCCL fails on chipset-attached PCIe (PCIEX16_2) because lanes lack required atomic-op routing.
- *Fix*: Use a $30 M.2→PCIe x4 riser to move card #2 to CPU-attached M.2_2 slot.
- **dankclaw**: RTX 3090 (PCIe 4.0 x4 dock) + AMD Strix Halo (gfx1151, Vulkan).
- *Kernel*: Ubuntu 24.04, `amd_iommu=off`.
## System Topology & Hardware
- **dankclaw**: AMD Strix Halo APU (gfx1151) + RTX 3090 in M.2 dock (PCIe x4, ~29 GB/s sequential). Combined GPU budget ~88 GiB. OS: Ubuntu 24.04.
- **dankserver**: ASUS TUF GAMING B650-E WIFI. Dual AMD R9700 GPUs.
- **RCCL Constraint**: Chipset-attached PCIe lanes fail RCCL atomics (broadcast/all-reduce/send-recv). Fix: Move card #2 to CPU-attached M.2_2 slot via PCIe x4 riser to restore atomic-op routing.
## LLM & Software Stack
- **vLLM / ROCm**: Version 0.27.1 / torch 2.11.0 / ROCm 7.14.
- *Constraint*: HIP runtime reads bare `TEMP` and `HOST` env vars; naming these explicitly can cause collisions.
- *Constraint*: `GGML_CUDA_FA_ALL_QUANTS` required for flash-attention with quantized KV.
- **llama.cpp (ik_llama.cpp)**:
- *Model*: Qwen3.8-Flash-Next-Uncensored-i1-GGUF (i1-Q4_K_M).
- *Performance*: ~3.8-4.0 t/s decode (bottlenecked by PCIe x4 sync/graph splits), ~192 t/s prefill.
- *Note*: 30 t/s decode is unreachable via current PCIe x4/split-mode setup; requires mainline PR #28901 for capture-safe graphs.
## LLM Model Portfolio
- **frank-large (halogen)**: Qwen3.8-27B-ROCmFPX-Q8_0. Runs on Strix Halo (gfx1151).
- *KV Pool*: 524288 positions (~14.4 GiB). Admission is pool-bound, not slot-bound (caps at 3 simultaneous full-length requests).
- *Behavior*: Defaults to greedy. Stalls (full-CPU, no disk activity, no output) under co-tenancy with pinned trunk are documented behavior, not crashes.
- *Constraints*: maxTokens <= 65536. First request after restart may be silent ~45-60s while first-touching KV pool.
- **frank-small**: Qwen3.8-27B GSQ-RCO IQ3_S. Runs on RTX 3090 (M.2 dock). Defaults to sampling (temp 1.0, top_k 20, top_p 0.95).
- **ik_llamacpp**: mradermacher/Qwen3.8-Flash-Next-Uncensored-i1-GGUF (i1-Q4_K_M).
- *Backend*: CUDA (3090) + Vulkan (Strix Halo) split.
- *Performance*: ~3.8-4.0 t/s decode, ~192 t/s prefill.
- *Bottleneck*: PCIe x4 launch/sync overhead; CUDA graphs currently abort on hc ops (ggml_repeat_4d).
## Service Management (Quadlet & Podman)
- **Persistence**: `restart: unless-stopped` survives crashes, not explicit stops. Every container must have a Quadlet `.container` file for boot-persistence.
- **frank-large (HALOGEN)**: Rootless Quadlet. Weights pinned (~68 GiB). KV pool: 524288 positions (~14.4 GiB).
- *Stall Behavior*: Multi-minute full-CPU stalls (no disk/output) are documented behavior under co-tenancy with `HALOGEN_FLASH_PIN_TRUNK=1`. Do not restart.
- *First-touch*: 45-60s silence after restart as engine first-touches fresh KV pool.
- *Constraints*: `maxTokens` <= 65536. Prompt + max_tokens must fit KV pool.
- **frank-small**: Defaults to sampling (temp 1.0, top_k 20, top_p 0.95).
## Software Infrastructure
- **Podman**: Rootless deployment using Quadlet units for boot persistence. Note: `restart: unless-stopped` survives crashes, but not explicit stops (kernel power-off).
- **Authentik**: Anubis guard chain. Marreta app connected via ProxyProvider (fixed null flow crash).
- **AGENTS.md**: Structured as (1) Active-topology table, (2) Runbook pointers, (3) Key Lessons Learned.
## Networking & Auth
- **Marreta Auth Chain**: Caddy TLS → Anubis (:8923) → Authentik Outpost → Marreta (:8017).
- *Fix*: Populated `invalidation_flow`, `authentication_flow`, and `authorization_flow` to prevent Rust outpost serde crashes.
- *Probing*: Host-to-listener returns HTTP 000 (Caddy netns); probe inside netns or grep config for internal status.
## Operational Lessons
- **Memory**: `free` command lies about available memory (doesn't account for pinned/reserved weights).
- **Skills Discovery**: `omp` scans `~/.omp/agent/skills/`.
- **Root-Cause**: PCIe x4 dock provides ~29 GB/s, not 130 GB/s.
- **Logs**: Use `podman logs` or `journalctl --user -u` for rootless Quadlets.
## Durable Lessons
- **ROCm**: Use layer-split-not-tensor; mmap/PLE constraints apply; HIP env collisions (`TEMP`/`HOST`).
- **Memory**: `free` command lies about available memory (doesn't account for pinned/reserved weights).
- **PCIe**: M.2 x4 dock is ~29 GB/s; do not assume x16 bandwidth.
- **Skill Discovery**: `omp` scans `~/.omp/agent/skills/` only. New skills surface on the next session.
@@ -1 +1 @@
dankclaw/dankserver systems featuring ROCmFPX and llama.cpp. frank-large (HALOGEN) uses a 524288 KV pool and is managed via rootless Quadlets (mandatory for persistence). Key hardware fix: M.2 riser for R9700 chipset PCIe issues. Key software behavior: Halogen stalls are documented (don't restart), first-request silence is normal, and HIP env vars (TEMP/HOST) must be handled carefully. Marreta is secured via an Authentik/Anubis auth chain.
Host: dankclaw (Strix Halo + 3090) & dankserver (B650-E + R9700s). Models: frank-large (halogen, 524k KV pool, greedy), frank-small (sampling), ik_llamacpp (CUDA/Vulkan split). Infrastructure: Podman Quadlets (persistence), Authentik (Marreta chain). Key Fixes: RCCL requires CPU-attached lanes (M.2_2 riser). Halogen stalls are not crashes. `free` lies about pinned memory.
@@ -1,5 +1,15 @@
# Raw Memories
## 01a0ac72-2620-750f-82dd-79c84e00e98d
updated_at: 1789631572
DANKCLAW HARDWARE: AMD Strix Halo APU (gfx1151), Radeon 8060S iGPU. Has an M.2 dock slot used to carry an RTX 3090 at PCIe x4 (link downgraded from x16). This is distinct from dankserver (ASUS TUF GAMING B650-E WIFI) which has a free CPU-attached M.2_2 slot for an R9700 riser (~$30 M.2→PCIe x4 riser).
DANKCLAW LLM DEPLOYMENTS:
- frank-small: Qwen3.8-27B GSQ-RCO IQ3_S + MTP on RTX 3090 (M.2 dock, PCIe x4). Decode 61-82 t/s, prefill 430-1013 t/s. VRAM at 92% (22,614/24,576 MiB). PCIe utilization only ~3% during decode (compute-bound, not transport-bound). --parallel 1, 8 CPU threads.
- frank-large (halogen): runs on the iGPU (gfx1151), decode 37-48 t/s, MTP commit 1.60-1.88 tokens/round. Prefix caching confirmed working.
UNANSWERED QUESTION: User asked specifically about the M.2 slot in context of a Qwen Flash deployment running with pipeline parallelism on dankclaw. The assistant's response was aborted (OMP process exited) before answering. This likely refers to a llama.cpp pipeline-parallel setup where the Qwen Flash model's layers are split across the iGPU and the 3090 in the M.2 dock, using the M.2 slot as the interconnect between the two compute devices.
## 01a0ac6b-61a9-7505-b00a-52dd4cbb4ff3
updated_at: 1789599423
## Rootless Podman restart policy pitfall
@@ -0,0 +1,4 @@
thread_id: 01a0ac72-2620-750f-82dd-79c84e00e98d
updated_at: 1789631572
User asked about M.2 slots on dankclaw, clarified they meant the Qwen Flash pipeline-parallel deployment. Dankclaw is an AMD Strix Halo APU (gfx1151) with an M.2 dock carrying an RTX 3090 at PCIe x4. The M.2 slot docs in the repo are split: dankserver (B650-E, M.2_2 free for R9700 riser) vs dankclaw (M.2 dock for 3090). The Qwen Flash pipeline-parallel M.2 question was aborted before being answered.
@@ -1,4 +0,0 @@
Verifying the Marreta auth chain:
1. Probe `http://localhost:8017/` from host (expected 000, listener is in Caddy netns).
2. Check `authentik-proxy-provider-app-link` for null flows.
3. Ensure non-browser clients can bypass JS challenges or use backend datasource URLs.
@@ -1,4 +0,0 @@
Verify if the request fits the allocated KV pool:
1. Run `podman logs frank-large | grep 'kv pool:'`.
2. Compare 'reserved' count to 'requested' count.
3. Note: /health does not prove pool size; absence of WARNING is not evidence of headroom.
@@ -1,4 +1,7 @@
To retrieve logs for a rootless Quadlet service (e.g., frank-large):
1. Use `podman logs frank-large` for container-specific output.
2. Use `journalctl --user -u frank-large` for systemd-integrated output.
3. Use `podman logs frank-large 2>&1 | grep -E '^(dmalloc|kv pool):'` to filter for memory/allocations.
Retrieving logs for a rootless Quadlet container.
Specific considerations:
1. Use `podman logs <container>` for standard output.
2. Use `journalctl --user -u <unit_name>` for systemd-integrated logs.
3. Filter specifically for dmalloc/kv pool events to monitor memory state.
4. Note that rootless quadlet log retrieval has specific gotchas regarding standard output capturing in nested namespaces.
+1 -1
View File
@@ -20,7 +20,7 @@
- **OS/Kernel**: CachyOS Linux 7.2.0-1. Fixed `nvidia-modeset` semaphore deadlock blocking `niri` (GUI freeze/VT down) via `/etc/modprobe.d/nvidia-workarounds.conf` + rebuilt initramfs (`mkinitcpio -P`) + force-reboot.
## AI Agent & Model Configuration
- **Config Files**: Source of truth `~/.pi/agent/models.json` ↔ `~/.omp/agent/models.yml` (imported/generated). Edit both in lock-step unless using dedicated import.
- **Config Files**: `~/.omp/agent/models.yml` is the single source of truth (OMP is the primary harness; the pi-era dual-copy convention is retired).
- **Context Sizing**: Uses Ki-style multiples (`163840` = 160×1024). "200k" → `204800`. Update `contextWindow` and `maxTokens` together for `frank-default-small`.
- **Providers & Models**:
- `llamacpp (dankserver)` @ `http://192.168.0.235:7770/v1`: `frank-default-small` (Ornith-1.5-35B-A3B CRACK Q6_K, ngram-mod, reasoning true). Context: 204800.
+1 -1
View File
@@ -14,4 +14,4 @@
- Dankware (RTX 4070 Laptop, nvidia-open 610.57.04, kernel 7.2.0-1-cachyos, DynamicPowerManagement=2) suffers the known 610.x NVKMS DIFR-prefetch deadlock: nvidia-modeset/kthread_q livelocks in DifrPrefetchEventDeferredWork→nvWriteGpEntry holding the NVKMS API semaphore; any compositor (niri) atomic commit then wedges in D-state in ApplyModeSetConfig/nvkms_ioctl_from_kapi_try_pmlock. Symptoms: GUI frozen, no VT switch, SSH alive, nvidia-smi still answers (GPU idle P8, no Xid). Trigger: display-idle then flip/modeset. Unrecoverable in place — reboot via systemctl reboot --force --force. Candidate mitigations: NVreg_RegistryDwords="RMDisableDIFR=1" (one upstream report says ineffective) and DynamicPowerManagement=0. Bug class spans 595.71–610.57 upstream. _(context: 2026-08-30 GUI lockup diagnosis on dankware; user suspected nvidia modesetter, confirmed via hung-task stacks. Pending user decision on writing modprobe mitigation.)_
- When downloading large model shards (40GB) to dankclaw via SSH: 1. NEVER run rm on partial downloads — always clean up BEFORE starting the first download 2. Ensure only ONE wget process per file — if you see duplicate wget PIDs killing them with kill -9 before restarting, or use fuser to verify exclusivity 3. Use wget -c (continue) to resume partial downloads — SSH connections often drop mid-download on large files (~300s timeout) 4. Download sequentially (not in parallel) when using background task agents that may spawn duplicate processes, or coordinate downloads through a single agent session 5. Verify each file's size against expected values after download completes
- kingjones777's Qwen3.8-Flash-Next ROCmFP4 builds for Strix Halo (gfx1151) have three tiers: FAST (~88 GiB), STRIX_LEAN (~98.5 GiB, 3-shard), STRIX (~113.5 GiB). All are text-only — no vision tower, no mmproj, no fused MTP draft head. Uses TYPE_100/TYPE_101 ROCmFP4 tensor types (general.file_type=106), requires patched llama.cpp PR #27742 from ROCmFPX fork. STRIX_LEAN carries a 35.76 GiB PLE n-gram table streamed off SSD at runtime; ~63 GiB GTT for non-PLE weights, ~75 GiB at full 262K context. Uncensored variants exist from orcarouter but only for Qwen3.8-27B (not Flash-Next), and in non-ROCmFP4 format. _(context: User requested kingjones777/Qwen3.8-Flash-Next-Uncensored-ROCmFP4-STRIX_LEAN-GGUF for frank-default-large on dankclaw. Search revealed the repo doesn't exist; only the base STRIX_LEAN tier is available, and it's text-only with no MTP.)_
- Model provider config exists in TWO synchronized copies: ~/.pi/agent/models.json (source of truth) and ~/.omp/agent/models.yml (generated import; header comment states it is imported from the JSON). Any edit to providers, model ids, or display name labels must be applied to BOTH files in the same change or they silently drift. Validate after editing: jq -e '.providers|keys' models.json for the JSON and a YAML parse of the .yml. Label strings are NOT cached in ~/.omp/agent/models.db (model_cache table), so no cache flush is needed after label edits — new labels apply on the next config read.
- Model provider config is SINGLE-SOURCE: `~/.omp/agent/models.yml` (OMP is the primary harness). The pi-era dual-copy convention (`~/.pi/agent/models.json` as source of truth + generated YAML import) is retired — there is no second file to keep in sync. Validate edits with a YAML parse. Label strings are NOT cached in ~/.omp/agent/models.db (model_cache table), so no cache flush is needed after label edits — new labels apply on the next config read.
@@ -1,4 +1,4 @@
Current environment: `~/.omp` repo (main/develop), CachyOS + niri/Wayland + noctalia v5 (TOML-only, native). Desktop lock uses D-Bus msg; keybinds use v5 verbs; cursor is capitaine-cursors 48px. NPU deadlock fixed via nvidia-workarounds.conf.
AI Config: `~/.omp/agent/models.yml` & `~/.pi/agent/models.json` are locked. Edit both. Context uses Ki (200k=204800). Providers: `llamacpp dankserver` (frank-default-small, 204800 ctx) & `llamacpp dankclaw` (frank-default-large Qwen3.8, 262144 ctx, ngram-mod). NPU `gemma4-it:e4b` on :7771 rejects WebP.
AI Config: `~/.omp/agent/models.yml` is the single model registry (no second copy). Context uses Ki (200k=204800). Providers: `llamacpp dankserver` (frank-default-small, 204800 ctx) & `llamacpp dankclaw` (frank-default-large Qwen3.8, 262144 ctx, ngram-mod). NPU `gemma4-it:e4b` on :7771 rejects WebP.
Git: Stash before checkout when `agent/memories/` is dirty. Deploy via `deploy.sh` (stow, sync mode). GITEA_TOKEN in `~/.config/environment.d/secrets.env`. OMP migration complete: use `APPEND_SYSTEM.md`, `task` tool, auto-discovered skills.
Prioritize repo-tracked paths. v5 legacy v4 JSONs are inert.
@@ -1 +1 @@
Manages dual AI model configs (`~/.pi/agent/models.json` as source, `~/.omp/agent/models.yml` as import/generated). Always edit both in lock-step. Context sizes use Ki-style multiples (e.g., 200k = 204800). For `frank-default-small`, update `contextWindow` and `maxTokens` together. Validate with `jq` and `python3 -c "import yaml..."`. Providers: `llamacpp (dankserver)` & `llamacpp (dankclaw)`. NPU `gemma4-it:e4b` uses port 7771.
Manages the OMP model config (`~/.omp/agent/models.yml`, single source of truth). Context sizes use Ki-style multiples (e.g., 200k = 204800). For `frank-default-small`, update `contextWindow` and `maxTokens` together. Validate with `python3 -c "import yaml..."`. Providers: `llamacpp (dankserver)` & `llamacpp (dankclaw)`. NPU `gemma4-it:e4b` uses port 7771.
@@ -1,5 +1,5 @@
When updating context from 160k to 200k:
1. Convert to Ki: 200 × 1024 = 204800
2. Update `contextWindow` and `maxTokens` in both `~/.pi/agent/models.json` and `~/.omp/agent/models.yml`
2. Update `contextWindow` and `maxTokens` in `~/.omp/agent/models.yml`
3. No cache flush required; applies on next config read.
4. Validate with validation script.
@@ -1,9 +1,10 @@
#!/bin/bash
# Validate both JSON and YAML context/tokens match
JSON_VAL=$(jq -e '.providers."llamacpp (dankserver)".models[0] | .contextWindow, .maxTokens' ~/.pi/agent/models.json)
YAML_VAL=$(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'])")
if [ "$JSON_VAL" = "$YAML_VAL" ]; then
echo "Config in sync: $JSON_VAL"
# Validate the OMP model config (single source of truth) parses and reports
# the dankserver model's context/tokens.
YAML_VAL=$(python3 -c "import yaml; d=yaml.safe_load(open('$HOME/.omp/agent/models.yml')); m=d['providers']['llamacpp (dankserver)']['models'][0]; print(m['id'], m['contextWindow'], m['maxTokens'])")
if [ -n "$YAML_VAL" ]; then
echo "Config OK: $YAML_VAL"
else
echo "Mismatch detected. JSON: $JSON_VAL | YAML: $YAML_VAL"
echo "YAML parse failed or model missing."
exit 1
fi
+1 -1
View File
@@ -30,7 +30,7 @@ export LD_LIBRARY_PATH="/opt/cuda/lib64:/home/dank/GitPackages/llama.cpp/build:$
# GiTea
# Terminal Aliases
alias systemprompt="nvim ~/.pi/agent/SYSTEM.md"
alias systemprompt="nvim ~/.omp/agent/APPEND_SYSTEM.md"
# peon-ping quick controls
alias peon="bash /home/dank/.claude/hooks/peon-ping/peon.sh"
+1 -1
View File
@@ -7,7 +7,7 @@ bundle:
version: "0.1"
author: "pi agent system"
description: "Cached documentation for tools, configurations, and systems used during pi agent sessions."
root: "/home/dank/.pi/agent/docs"
root: "~/.omp/omp-docs"
generator:
# Index generation settings
+1 -1
View File
@@ -50,7 +50,7 @@ To make a repository work in both AGENTS.md and CLAUDE.md workflows, create a `C
## SYSTEM.md
`SYSTEM.md` sets the system-level role and behavior for an agent. It establishes the persona, the prime directive, and the binding rules. In this setup, `/home/dank/.pi/agent/SYSTEM.md` defines the Comrade Chief Designer persona and the ASD-STE100 voice rules.
`SYSTEM.md` sets the system-level role and behavior for an agent. It establishes the persona, the prime directive, and the binding rules. In the pi-era setup, `/home/dank/.pi/agent/SYSTEM.md` defined the Comrade Chief Designer persona and the ASD-STE100 voice rules; the live equivalent is `~/.omp/agent/APPEND_SYSTEM.md`.
Use `SYSTEM.md` for stable, cross-project rules. Use `AGENTS.md` for project-specific context. Do not duplicate content between them. Keep the division of labor clear.
+11 -9
View File
@@ -47,13 +47,15 @@ graph TD
## Note on the Live Default
`models.json` defines the live provider set. The main session provider is
`llamacpp`; the default model is `frank-default-large` (Dankclaw). Subagents
default to the local provider with `subagents.defaultModel = frank-default-small`
(Dankserver); larger roles map to `frank-default-large`. Two scopes own settings:
the user `~/.pi/settings.json` (main → Dankclaw/large) and the project
`/home/dank/.pi/agent/settings.json` (main → Dankserver/small). When the two
disagree, the project-scope `settings.json` in the agent home wins for the agent's
own main session; the user-scope file governs the interactive `pi` session.
In the pi era, `models.json` defined the live provider set: the main session
provider was `llamacpp` with default model `frank-default-large` (Dankclaw);
subagents defaulted to `frank-default-small` (Dankserver); larger roles mapped
to `frank-default-large`. Two scopes owned settings: the user
`~/.pi/settings.json` (main → Dankclaw/large) and the project
`/home/dank/.pi/agent/settings.json` (main → Dankserver/small); when they
disagreed, the project-scope file won for the agent's own main session.
> **Note:** This documentation describes the pi-coding-agent era. The system has since migrated to the OMP harness era. Configuration is now at `~/.omp/agent/config.yml` and `~/.omp/agent/models.yml` (imported from `~/.pi/agent/models.json`). Legacy `~/.pi/settings.json` and `~/.pi/agent/settings.json` remain as pi-era artifacts. New OMP-managed skills live in `~/.omp/agent/managed-skills/` alongside the legacy symlinked skills at `~/.pi/agent/skills/` → `~/.agents/skills/`.
> **Note:** This documentation describes the pi-coding-agent harness (config
> format, packages, skill system) as general reference material. The live
> harness is OMP at `~/.omp/`; OMP-managed skills live in
> `~/.omp/agent/managed-skills/`.
+1 -1
View File
@@ -20,7 +20,7 @@ timestamp: 2026-08-28
Web search, content extraction, and video understanding for Pi. It calls your self-hosted SearXNG first when one is configured, and falls through to other providers.
> **Active setup:** `~/.pi/web-search.json` locks search to SearXNG at `http://192.168.0.143:8081` (dankclaw), permits LAN fetches via `ssrf.allowRanges`, and sets `maxInlineContentChars` to 50000. The config file is cached in memory per process — a changed file takes effect on the next Pi session.
> **Pi-era setup:** `~/.pi/web-search.json` locked search to SearXNG at `http://192.168.0.143:8081` (dankclaw), permitted LAN fetches via `ssrf.allowRanges`, and set `maxInlineContentChars` to 50000. The config file is cached in memory per process — a changed file takes effect on the next Pi session.
---