chore: adopt pre-existing working-tree state before trunk merge
Uncommitted machine/session edits (live config, models, docs drift) were blocking the merge of origin/main. Committed as-is to preserve them; the merge that follows resolves overlapping prose files toward upstream canonical, with local variants recoverable from this commit. Pre-merge copies also in .AGENTTRASH/pre-merge-2026-10-18/.
This commit is contained in:
1 parent
8702f3058d
commit
3713339ffc
14 files changed
+377
-216
No files matched your search
@@ -13,26 +13,32 @@ with YAML frontmatter, spec at `omp-docs/references/okf-spec.md`).
|
|||||||
(`dank/command-center` on the Dankclaw instance). There is no staging copy:
|
(`dank/command-center` on the Dankclaw instance). There is no staging copy:
|
||||||
**the checkout is the deployment.** Branch switches swap live config files out
|
**the checkout is the deployment.** Branch switches swap live config files out
|
||||||
from under the running agent — keep feature branches short-lived, and never end
|
from under the running agent — keep feature branches short-lived, and never end
|
||||||
a work session checked out on anything but `develop` or `main`.
|
a work session checked out on anything but `main`.
|
||||||
- Contents that belong here: `AGENTS.md`, `omp-docs/` (knowledge base),
|
- Contents that belong here: `AGENTS.md`, `omp-docs/` (knowledge base),
|
||||||
`scripts/` (small system utilities), `agent/` + `plugins/` (harness config and
|
`scripts/` (small system utilities), `agent/` + `plugins/` (harness config and
|
||||||
plugin manifests). Everything else under this directory is runtime state and is
|
plugin manifests). Everything else under this directory is runtime state and is
|
||||||
gitignored on principle — see `.gitignore`. History must mean "the configuration
|
gitignored on principle — see `.gitignore`. History must mean "the configuration
|
||||||
changed", not "the agent breathed".
|
changed", not "the agent breathed".
|
||||||
|
|
||||||
## Git-flow SDLC (full flow, from day one)
|
## Trunk-based SDLC (since 2026-10-18; replaces the old git-flow regime)
|
||||||
|
|
||||||
|
- `main` is the only long-lived branch. Frank is the only dev; `develop` and the
|
||||||
|
release-branch ceremony are retired — no `develop`, no back-merges, no
|
||||||
|
`release/X.Y.Z` branches.
|
||||||
|
- **Before every work item: fetch and branch off the freshest `origin/main`.**
|
||||||
|
If main moves under you, merge it into your branch (never rebase — Frank
|
||||||
|
dislikes the history rewrite).
|
||||||
- Work item = Gitea issue on `dank/command-center` (Gitea at 192.168.0.143:3000,
|
- Work item = Gitea issue on `dank/command-center` (Gitea at 192.168.0.143:3000,
|
||||||
owner `dank`). Small fixes may go straight to a branch; anything with more than
|
owner `dank`). Small fixes may go straight to a branch; anything with more than
|
||||||
one moving part gets an issue first.
|
one moving part gets an issue first.
|
||||||
- Branch naming: `<type>/<issue#>-<slug>`, type ∈ feat|fix|docs|chore.
|
- Branch naming: `<type>/<issue#>-<slug>`, type ∈ feat|fix|docs|chore.
|
||||||
Release cuts: `release/X.Y.Z` from `develop`; hotfixes: `hotfix/<slug>` from `main`.
|
- **Pull requests target `main` directly.** Merge with `--no-ff` so feature arcs
|
||||||
- **Merge, never rebase**, when updating a branch against a moved main — Frank
|
stay visible in history. **Never merge a PR without an explicit OK from Frank.**
|
||||||
dislikes the history rewrite. **Never merge a PR without an explicit OK from Frank.**
|
- **The moment a PR is open, open it in Frank's browser** — `xdg-open <PR-URL>`
|
||||||
- Merge into `develop` with `--no-ff` so feature arcs stay visible in history.
|
lands a tab in his Firefox; never make him hunt for it in Gitea.
|
||||||
- Releases: cut `release/X.Y.Z` from `develop`, verify, merge to `main`, tag
|
- Releases: tag `vX.Y.Z` straight on `main` after verifying; tags are the deploy
|
||||||
`vX.Y.Z`, back-merge `main` into `develop`. Tags are the deploy markers every
|
markers every other machine pulls to. Hotfixes are ordinary branches off the
|
||||||
other machine pulls to.
|
tag you are fixing forward from.
|
||||||
- Trash convention: never `rm` anything user-authored — move it to `.AGENTTRASH/`
|
- Trash convention: never `rm` anything user-authored — move it to `.AGENTTRASH/`
|
||||||
(gitignored). Deletion is a pruning session with Frank present.
|
(gitignored). Deletion is a pruning session with Frank present.
|
||||||
|
|
||||||
@@ -71,8 +77,8 @@ secret in every agent's context window on every machine that pulls this repo.
|
|||||||
| box | role | GPU | notes |
|
| box | role | GPU | notes |
|
||||||
|-----|------|-----|-------|
|
|-----|------|-----|-------|
|
||||||
| Dev workstation | client box, never runs inference | laptop iGPU + dGPU (non-unified) | mainline llama.cpp at `~/GitPackages/llama.cpp/build/bin/`; this repo lives here at `~/.omp` |
|
| Dev workstation | client box, never runs inference | laptop iGPU + dGPU (non-unified) | mainline llama.cpp at `~/GitPackages/llama.cpp/build/bin/`; this repo lives here at `~/.omp` |
|
||||||
| Dankclaw | bench target, runs the large serving model | Strix Halo APU — **unified memory** | ROCmFPX fork at `~/GitPackages/ROCmFPX/build-qwen38/bin/`; prod service `frank-default-large`, port 7770; ssh: `ssh dankclaw` |
|
| Dankclaw | bench target, secondary models + service stack | Strix Halo APU (**unified memory**) + RTX 3090 (moved over from Dankserver 2026-09) | prod services `frank-dragoon` (halogen-flash-server, :7770, iGPU) and `frank-zealot` (llama.cpp PrismML fork, :7771, 3090); runbooks in the serverAppConfigs vault (`~/Projects/serverAppConfig/serverAppConfigs-docs/LLM/`); ssh: `ssh dankclaw` |
|
||||||
| Dankserver | FreeToken box | RTX 3090 dGPU — non-unified | runs `frank-default-small`; ssh: `ssh dankserver` |
|
| Dankserver | main-model box | 2× Radeon AI PRO R9700 — non-unified (was RTX 3090 until 2026-09) | runs `frank-archon` (radiance, TP=2, :7770) — **this repo's operator session runs on it**; ssh: `ssh dankserver` |
|
||||||
|
|
||||||
## Environment gotchas
|
## Environment gotchas
|
||||||
|
|
||||||
@@ -84,9 +90,10 @@ secret in every agent's context window on every machine that pulls this repo.
|
|||||||
- SSH into both servers is BatchMode-capable from here:
|
- SSH into both servers is BatchMode-capable from here:
|
||||||
`ssh -o BatchMode=yes dankclaw '<read-only command>'` — read-only probes are
|
`ssh -o BatchMode=yes dankclaw '<read-only command>'` — read-only probes are
|
||||||
always allowed; state changes on remote boxes are not, without a per-run OK.
|
always allowed; state changes on remote boxes are not, without a per-run OK.
|
||||||
- `frank-default-large` on Dankclaw is a **production service** shared with this
|
- `frank-archon` (Dankserver), `frank-dragoon`, and `frank-zealot` (Dankclaw)
|
||||||
repo's operator: never stop, mask, or restart it (or any production service on
|
are **production services** shared with this repo's operator: never stop,
|
||||||
any box) without an explicit, current, per-run OK from Frank.
|
mask, or restart them (or any production service on any box) without an
|
||||||
|
explicit, current, per-run OK from Frank.
|
||||||
|
|
||||||
## File-organization doctrine (why this repo stays readable)
|
## File-organization doctrine (why this repo stays readable)
|
||||||
|
|
||||||
|
|||||||
+96
-21
@@ -1,5 +1,6 @@
|
|||||||
providers:
|
providers:
|
||||||
openrouterVariant: floor
|
openrouterVariant: online
|
||||||
|
fetch: auto
|
||||||
modelRoles:
|
modelRoles:
|
||||||
slow: llamacpp (dankclaw)/frank-dragoon:medium
|
slow: llamacpp (dankclaw)/frank-dragoon:medium
|
||||||
vision: llamacpp (dankclaw-3090)/frank-zealot:xhigh
|
vision: llamacpp (dankclaw-3090)/frank-zealot:xhigh
|
||||||
@@ -18,9 +19,10 @@ modelRoles:
|
|||||||
memory: llamacpp (dankclaw-3090)/frank-zealot:medium
|
memory: llamacpp (dankclaw-3090)/frank-zealot:medium
|
||||||
symbolPreset: nerd
|
symbolPreset: nerd
|
||||||
composer:
|
composer:
|
||||||
shape: claude
|
shape: band
|
||||||
|
tokenRate: true
|
||||||
theme:
|
theme:
|
||||||
dark: dark-terminal
|
dark: dark-gruvbox
|
||||||
light: light
|
light: light
|
||||||
setupVersion: 2
|
setupVersion: 2
|
||||||
browser:
|
browser:
|
||||||
@@ -57,8 +59,7 @@ retry:
|
|||||||
- openai-codex/gpt-5.5
|
- openai-codex/gpt-5.5
|
||||||
- xai-oauth/grok-4.5
|
- xai-oauth/grok-4.5
|
||||||
- web/ollama
|
- web/ollama
|
||||||
speech:
|
speech: []
|
||||||
[]
|
|
||||||
llamacpp (dankserver)/frank-archon:
|
llamacpp (dankserver)/frank-archon:
|
||||||
- llamacpp (dankclaw)/frank-dragoon
|
- llamacpp (dankclaw)/frank-dragoon
|
||||||
maxRetries: 10
|
maxRetries: 10
|
||||||
@@ -67,7 +68,7 @@ searxng:
|
|||||||
exa:
|
exa:
|
||||||
enabled: false
|
enabled: false
|
||||||
memory:
|
memory:
|
||||||
backend: local
|
backend: sharpshooter
|
||||||
autolearn:
|
autolearn:
|
||||||
enabled: true
|
enabled: true
|
||||||
autoContinue: true
|
autoContinue: true
|
||||||
@@ -75,12 +76,12 @@ compaction:
|
|||||||
remoteEndpoint: http://192.168.0.143:7771/v1/chat/completions
|
remoteEndpoint: http://192.168.0.143:7771/v1/chat/completions
|
||||||
methodOrder:
|
methodOrder:
|
||||||
- shake
|
- shake
|
||||||
|
- snapcompact
|
||||||
- soft
|
- soft
|
||||||
- handoff
|
- handoff
|
||||||
- snapcompact
|
|
||||||
- remote
|
- remote
|
||||||
idleThresholdTokens: 100000
|
idleThresholdTokens: 100000
|
||||||
thresholdPercent: 85
|
thresholdPercent: 95
|
||||||
idleEnabled: true
|
idleEnabled: true
|
||||||
thresholdTokens: -1
|
thresholdTokens: -1
|
||||||
dropUseless: false
|
dropUseless: false
|
||||||
@@ -90,43 +91,75 @@ compaction:
|
|||||||
enabled: true
|
enabled: true
|
||||||
experimentalContextManagement: false
|
experimentalContextManagement: false
|
||||||
interruptMode: immediate
|
interruptMode: immediate
|
||||||
defaultThinkingLevel: medium
|
defaultThinkingLevel: xhigh
|
||||||
hideThinkingBlock: false
|
hideThinkingBlock: false
|
||||||
proseOnlyThinking: true
|
proseOnlyThinking: false
|
||||||
terminal:
|
terminal:
|
||||||
showProgress: true
|
showProgress: true
|
||||||
disabledExtensions:
|
disabledExtensions: []
|
||||||
[]
|
|
||||||
statusLine:
|
statusLine:
|
||||||
separator: powerline
|
separator: powerline
|
||||||
preset: nerd
|
preset: custom
|
||||||
contextLine: embedded
|
contextLine: embedded
|
||||||
transparent: true
|
transparent: true
|
||||||
compactThinkingLevel: true
|
compactThinkingLevel: true
|
||||||
showHookStatus: true
|
showHookStatus: true
|
||||||
|
sessionAccent: true
|
||||||
|
leftSegments:
|
||||||
|
- session_name
|
||||||
|
- vim
|
||||||
|
- mode
|
||||||
|
- hostname
|
||||||
|
- path
|
||||||
|
- git
|
||||||
|
- pr
|
||||||
|
rightSegments:
|
||||||
|
- model
|
||||||
|
- cost
|
||||||
|
- context_pct
|
||||||
|
- time_spent
|
||||||
|
segmentOptions:
|
||||||
|
model:
|
||||||
|
showThinkingLevel: true
|
||||||
|
path:
|
||||||
|
abbreviate: true
|
||||||
|
stripWorkPrefix: true
|
||||||
|
maxLength: 120
|
||||||
|
git:
|
||||||
|
showBranch: false
|
||||||
|
showStaged: true
|
||||||
|
showUnstaged: true
|
||||||
|
showUntracked: true
|
||||||
tui:
|
tui:
|
||||||
textSizing: true
|
textSizing: true
|
||||||
codexResetFireworks: false
|
codexResetFireworks: false
|
||||||
hyperlinks: auto
|
hyperlinks: auto
|
||||||
tight: true
|
tight: true
|
||||||
|
resizeScrollback: rebuild
|
||||||
|
titleSpinner: pulse
|
||||||
display:
|
display:
|
||||||
shimmer: kitt
|
shimmer: kitt
|
||||||
smoothStreaming: true
|
smoothStreaming: true
|
||||||
showTokenUsage: true
|
showTokenUsage: true
|
||||||
|
pinnedAgents: collapsed
|
||||||
|
subagentLivePreview: true
|
||||||
task:
|
task:
|
||||||
showResolvedModelBadge: true
|
showResolvedModelBadge: true
|
||||||
maxConcurrency: 2
|
maxConcurrency: 3
|
||||||
agentModelOverrides:
|
agentModelOverrides:
|
||||||
designer: llamacpp (dankclaw-3090)/frank-zealot
|
designer: llamacpp (dankclaw-3090)/frank-zealot
|
||||||
librarian: llamacpp (dankclaw-3090)/frank-zealot
|
librarian: llamacpp (dankclaw-3090)/frank-zealot
|
||||||
reviewer: llamacpp (dankclaw-3090)/frank-zealot
|
reviewer: llamacpp (dankserver)/frank-archon
|
||||||
scout: llamacpp (dankclaw-3090)/frank-zealot
|
scout: llamacpp (dankserver)/frank-archon
|
||||||
security-reviewer: llamacpp (dankclaw-3090)/frank-zealot
|
security-reviewer: llamacpp (dankclaw)/frank-dragoon
|
||||||
sonic: llamacpp (dankclaw-3090)/frank-zealot
|
sonic: llamacpp (dankclaw-3090)/frank-zealot
|
||||||
task: llamacpp (dankclaw-3090)/frank-zealot
|
task: llamacpp (dankserver)/frank-archon
|
||||||
|
eager: default
|
||||||
|
enableLsp: true
|
||||||
snapcompact:
|
snapcompact:
|
||||||
systemPrompt: none
|
systemPrompt: none
|
||||||
toolResults: false
|
toolResults: false
|
||||||
|
shape: auto
|
||||||
extendedContext: false
|
extendedContext: false
|
||||||
ttsr:
|
ttsr:
|
||||||
contextMode: discard
|
contextMode: discard
|
||||||
@@ -136,12 +169,12 @@ checkpoint:
|
|||||||
enabled: true
|
enabled: true
|
||||||
readLineNumbers: true
|
readLineNumbers: true
|
||||||
startup:
|
startup:
|
||||||
showSplash: false
|
showSplash: true
|
||||||
changelogMode: summary
|
changelogMode: summary
|
||||||
update:
|
update:
|
||||||
channel: stable
|
channel: stable
|
||||||
features:
|
features:
|
||||||
unexpectedStopDetection: smart
|
unexpectedStopDetection: mechanical
|
||||||
stt:
|
stt:
|
||||||
submitTrigger: say-submit
|
submitTrigger: say-submit
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -160,6 +193,7 @@ images:
|
|||||||
- litterbox
|
- litterbox
|
||||||
edit:
|
edit:
|
||||||
mode: hashline
|
mode: hashline
|
||||||
|
fuzzyThreshold: 0.9
|
||||||
dev:
|
dev:
|
||||||
autoqaConsent: granted
|
autoqaConsent: granted
|
||||||
astGrep:
|
astGrep:
|
||||||
@@ -169,7 +203,7 @@ vault:
|
|||||||
tts:
|
tts:
|
||||||
localVoice: bm_george
|
localVoice: bm_george
|
||||||
speech:
|
speech:
|
||||||
enabled: false
|
enabled: true
|
||||||
mode: yield
|
mode: yield
|
||||||
enhanced: true
|
enhanced: true
|
||||||
voice: am_fenrir
|
voice: am_fenrir
|
||||||
@@ -178,6 +212,9 @@ secrets:
|
|||||||
read:
|
read:
|
||||||
renderMarkdown: true
|
renderMarkdown: true
|
||||||
toolResultPreview: true
|
toolResultPreview: true
|
||||||
|
defaultLimit: 1000
|
||||||
|
summarize:
|
||||||
|
prose: false
|
||||||
lsp:
|
lsp:
|
||||||
formatOnWrite: true
|
formatOnWrite: true
|
||||||
diagnosticsOnEdit: true
|
diagnosticsOnEdit: true
|
||||||
@@ -188,3 +225,41 @@ live:
|
|||||||
voice: vale
|
voice: vale
|
||||||
contextPromotion:
|
contextPromotion:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
title:
|
||||||
|
icons: emoji
|
||||||
|
generator: tiny
|
||||||
|
followUpMode: one-at-a-time
|
||||||
|
tools:
|
||||||
|
approvalMode: yolo
|
||||||
|
format: auto
|
||||||
|
marketplace:
|
||||||
|
autoUpdate: notify
|
||||||
|
bash:
|
||||||
|
allowCompoundCommands: true
|
||||||
|
gitGuard: true
|
||||||
|
bashInterceptor:
|
||||||
|
enabled: false
|
||||||
|
shellMinimizer:
|
||||||
|
sourceOutlineLevel: default
|
||||||
|
generate_image:
|
||||||
|
enabled: false
|
||||||
|
computer:
|
||||||
|
enabled: true
|
||||||
|
display: active
|
||||||
|
ratchet:
|
||||||
|
enabled: true
|
||||||
|
github:
|
||||||
|
enabled: true
|
||||||
|
security:
|
||||||
|
enabled: true
|
||||||
|
todo:
|
||||||
|
reminders: true
|
||||||
|
mcp:
|
||||||
|
notifications: false
|
||||||
|
plan:
|
||||||
|
defaultOnStartup: false
|
||||||
|
isolation:
|
||||||
|
backend: auto
|
||||||
|
worktree:
|
||||||
|
onStart: create
|
||||||
|
onExit: keep
|
||||||
+87
-63
@@ -16,25 +16,25 @@ providers:
|
|||||||
auth: none
|
auth: none
|
||||||
models:
|
models:
|
||||||
- id: frank-archon
|
- id: frank-archon
|
||||||
# Model id renamed from frank-primary on 2026-10-08 (official
|
# Model id renamed from frank-archon on 2026-10-08 (official
|
||||||
# unit-name scheme; the systemd service, scripts and runbooks keep
|
# unit-name scheme; the systemd service, scripts and runbooks keep
|
||||||
# the frank-primary name — service names are unchanged).
|
# the frank-archon name — service names are unchanged).
|
||||||
# Server-side compaction routes to compaction.remoteEndpoint in
|
# Server-side compaction routes to compaction.remoteEndpoint in
|
||||||
# config.yml (192.168.0.143:7771 — frank-zealot's 3090); the
|
# config.yml (192.168.0.143:7771 — frank-zealot's 3090); the
|
||||||
# compactionModel candidate keeps the wire model id valid there.
|
# compactionModel candidate keeps the wire model id valid there.
|
||||||
compactionModel: llamacpp (dankclaw-3090)/frank-zealot
|
compactionModel: llamacpp (dankclaw-3090)/frank-zealot
|
||||||
name: "frank-archon (dankserver)"
|
name: "frank-archon"
|
||||||
# Dankserver: BOTH Radeon AI PRO R9700s (gfx1201, TP=2 over the
|
# Dankserver: BOTH Radeon AI PRO R9700s (gfx1201, TP=2 over the
|
||||||
# 2026-09-20 board swap's root ports, wht6 wire). Engine:
|
# 2026-09-20 board swap's root ports, wht6 wire). Engine:
|
||||||
# radiance (StillDeadcode, Apache-2.0) from the digest-pinned
|
# radiance (StillDeadcode, Apache-2.0) from the digest-pinned
|
||||||
# stilldeadcode/radiance image (index digest sha256:4c3f4845..., 287
|
# stilldeadcode/radiance image (index digest sha256:4c3f4845..., 287
|
||||||
# MiB, kernels prebuilt for gfx1201), plain `podman run` through
|
# MiB, kernels prebuilt for gfx1201), plain `podman run` through
|
||||||
# scripts/serve-frank-primary.sh, root unit (User=dank, dank's
|
# scripts/serve-frank-archon.sh, root unit (User=dank, dank's
|
||||||
# rootless podman storage). Serving the OFFICIAL
|
# rootless podman storage). Serving the OFFICIAL
|
||||||
# Qwen/Qwen3.8-Flash-Next-FP8 at NATIVE modelopt block-FP8
|
# Qwen/Qwen3.8-Flash-Next-FP8 at NATIVE modelopt block-FP8
|
||||||
# precision — a rad-convert no-recipe pure copy into
|
# precision — a rad-convert no-recipe pure copy into
|
||||||
# qwen4exp-fp8-native.rad (172.76 GiB measured by plan-only), built by
|
# qwen4exp-fp8-native.rad (172.76 GiB measured by plan-only), built by
|
||||||
# scripts/build-frank-primary-rad.sh against a staging dir whose
|
# scripts/build-frank-archon-rad.sh against a staging dir whose
|
||||||
# config.json drops quantization_config so the shipped qwen4exp
|
# config.json drops quantization_config so the shipped qwen4exp
|
||||||
# plugin's (qwen4exp, "") selection key matches; per-weight
|
# plugin's (qwen4exp, "") selection key matches; per-weight
|
||||||
# encodings are untouched. Experts stream from a 40 GiB/rank
|
# encodings are untouched. Experts stream from a 40 GiB/rank
|
||||||
@@ -44,7 +44,7 @@ providers:
|
|||||||
# froggeric's fixed qwen3.8 v22.5
|
# froggeric's fixed qwen3.8 v22.5
|
||||||
# (scripts/qwen38-froggeric-v22.5.jinja) via
|
# (scripts/qwen38-froggeric-v22.5.jinja) via
|
||||||
# --override-chat-template. Rollback: git tag
|
# --override-chat-template. Rollback: git tag
|
||||||
# frank-primary-freetoken-pr587-20261005 (FreeToken, one card).
|
# frank-archon-freetoken-pr587-20261005 (FreeToken, one card).
|
||||||
contextWindow: 200000
|
contextWindow: 200000
|
||||||
# maxTokens must survive the harness compaction gap AND the chars/4
|
# maxTokens must survive the harness compaction gap AND the chars/4
|
||||||
# token-estimate under-run on code-heavy prompts. The clamp is
|
# token-estimate under-run on code-heavy prompts. The clamp is
|
||||||
@@ -96,8 +96,8 @@ providers:
|
|||||||
auth: none
|
auth: none
|
||||||
models:
|
models:
|
||||||
- id: frank-dragoon
|
- id: frank-dragoon
|
||||||
# Model id renamed from frank-large on 2026-10-08 (official
|
# Model id renamed from frank-dragoon on 2026-10-08 (official
|
||||||
# unit-name scheme; the service/unit/scripts keep the frank-large
|
# unit-name scheme; the service/unit/scripts keep the frank-dragoon
|
||||||
# name — service names are unchanged).
|
# name — service names are unchanged).
|
||||||
name: "frank-dragoon (dankclaw-gpu)"
|
name: "frank-dragoon (dankclaw-gpu)"
|
||||||
# Server-side compaction runs on the compaction.remoteEndpoint in
|
# Server-side compaction runs on the compaction.remoteEndpoint in
|
||||||
@@ -107,37 +107,45 @@ providers:
|
|||||||
compactionModel: llamacpp (dankclaw-3090)/frank-zealot
|
compactionModel: llamacpp (dankclaw-3090)/frank-zealot
|
||||||
# halogen-flash-server 0.16.2 (ghcr.io/peonist-ai/
|
# halogen-flash-server 0.16.2 (ghcr.io/peonist-ai/
|
||||||
# halogen-flash-server@sha256:0c61bf84, digest-pinned) serving the
|
# halogen-flash-server@sha256:0c61bf84, digest-pinned) serving the
|
||||||
# Quat3rnion ABLITERATED Swift1.5 finetune of peonist's
|
# Quat3rnion NATIVE v2 ABLITERATED conversion of orcarouter's pinned
|
||||||
# Qwen3.8-Flash-Next v2 checkpoint (qwen38-flash-next-v2-swift15-
|
# BF16 Qwen3.8-Flash-Next (qwen38-flash-next-v2-abliterated.hgn,
|
||||||
# abliterated.hgn, ~62 GiB resident, + REQUIRED n-gram table +
|
# ~62 GiB resident, + REQUIRED n-gram table + vision tower, both
|
||||||
# vision tower) on the Strix Halo iGPU: TWO slots at
|
# hardlinked from the swift15 dir) on the Strix Halo iGPU: TWO slots
|
||||||
# HALOGEN_CTX=262144 each with the MTP head ALWAYS ON
|
# over ONE 401,408-position KV pool (= 2 x ctx, raised 2026-10-18) at
|
||||||
|
# HALOGEN_CTX=200704 (the ceiling lowered from the card's 262,144 on
|
||||||
|
# 2026-10-17; ~10.8 GiB reserved where 200,704 cost 5.5, 262,144 cost
|
||||||
|
# 7.2 and 524,288 measured 14.6), with the MTP head ALWAYS ON
|
||||||
# (HALOGEN_SPEC_ADAPT=0 — the default adaptive policy halves
|
# (HALOGEN_SPEC_ADAPT=0 — the default adaptive policy halves
|
||||||
# decode). Card: 53-57 t/s greedy, ~1,640 t/s prefill at 34k, ~72%
|
# decode). Measured 2026-10-17: 50 t/s greedy decode, 1,604 t/s
|
||||||
# fewer thinking tokens than the censored 27B. ABLITERATED base
|
# cold prefill at 59k, NIAH 18/18. ABLITERATED base (no refusals:
|
||||||
# (refusals should not return) and VISION ON (OpenAI image_url
|
# 0/5 on the hostile census) and VISION ON (OpenAI image_url
|
||||||
# parts; >=256 px images or it answers "video"). Runbook:
|
# parts; >=256 px images or it answers "video"). Runbook:
|
||||||
# serverAppConfigs-docs/LLM/frank-large-flash-server-v2-swift15.md.
|
# serverAppConfigs-docs/LLM/frank-dragoon-flash-server-v2-native.md.
|
||||||
# Per-SLOT window the harness may fill — deliberately BELOW the
|
# Window the harness may fill — deliberately BELOW the engine
|
||||||
# engine ceiling (HALOGEN_CTX=262144): the clamp below leaves a
|
# ceiling (HALOGEN_CTX=200704, lowered from 262,144 on 2026-10-17):
|
||||||
# 45k gap that absorbs the estimate error.
|
# the clamp below leaves the 45k gap that absorbs the estimate error.
|
||||||
contextWindow: 217088
|
# Both slots SHARE one 401,408-position KV pool — exactly two full
|
||||||
|
# windows — so TWO maximum-length conversations can be resident at the
|
||||||
|
# same time (at the old pool == ctx 200,704 only two of <=100k could).
|
||||||
|
# The per-request ceiling is unchanged, so this window is unchanged.
|
||||||
|
contextWindow: 155648
|
||||||
# The clamp is max_tokens = min(maxTokens, contextWindow − est −
|
# The clamp is max_tokens = min(maxTokens, contextWindow − est −
|
||||||
# 4096); the chars/4 est UNDER-counts the rendered prompt by ~3 %
|
# 4096); the chars/4 est UNDER-counts the rendered prompt by ~3 %
|
||||||
# on code/agent traffic (measured 2026-10-07: est 152,938 ->
|
# on code/agent traffic (measured 2026-10-07: est 152,938 ->
|
||||||
# server 157,388). Worst-case request = ctx − 4096 + 3 % est
|
# server 157,388). Worst-case request = window − 4096 + 3 % est
|
||||||
# error ≈ 219k, inside the 262,144 engine ceiling with ~43k
|
# error ≈ 156.2k, inside the 200,704 engine ceiling with ~44k
|
||||||
# margin (robust to a 10 % under-count). Compaction fires at 85 %
|
# margin (robust to a ~25 % under-count). Compaction fires at 85 %
|
||||||
# of the window = 184,524 est ≈ 190k measured (Frank's 180k
|
# of the window = 132,300 est ≈ 136k measured — the 180k target of
|
||||||
# target) and rides on frank-zealot: input ≈ threshold −
|
# the 262,144 era is unreachable now (the window itself is 155,648)
|
||||||
# keepRecent(20k) ≈ 170k, inside its 200,704 slot.
|
# — and rides on frank-zealot: input ≈ threshold − keepRecent(20k)
|
||||||
# HALOGEN_MAX_TOKENS_CAP in frank-large.env must stay >= this.
|
# ≈ 112k, inside its 200,704 slot.
|
||||||
|
# HALOGEN_MAX_TOKENS_CAP in frank-dragoon.env must stay >= this.
|
||||||
maxTokens: 45056
|
maxTokens: 45056
|
||||||
reasoning: true
|
reasoning: true
|
||||||
# VISION ON as of 2026-10-06: the v2 vision tower loads beside the
|
# VISION ON as of 2026-10-06: the v2 vision tower loads beside the
|
||||||
# checkpoint (HALOGEN_VISION_TOWER; red-PNG probe verified on the
|
# checkpoint (HALOGEN_VISION_TOWER; red-PNG probe verified on the
|
||||||
# card). image_url content parts only — the legacy top-level
|
# card). image_url content parts only — the legacy top-level
|
||||||
# images field is the frank-secondary trap, do not repeat it here.
|
# images field is the frank-zealot trap, do not repeat it here.
|
||||||
input: [text, image]
|
input: [text, image]
|
||||||
compat:
|
compat:
|
||||||
# flash-server emits thinking as `reasoning_content` — same
|
# flash-server emits thinking as `reasoning_content` — same
|
||||||
@@ -155,7 +163,7 @@ providers:
|
|||||||
max: xhigh
|
max: xhigh
|
||||||
# The card's thinking recipe, on the wire. The flash-server
|
# The card's thinking recipe, on the wire. The flash-server
|
||||||
# engine HAS a server-side sampler (HALOGEN_TEMPERATURE/TOP_P/
|
# engine HAS a server-side sampler (HALOGEN_TEMPERATURE/TOP_P/
|
||||||
# TOP_K = 1.0 / 0.95 / 20 in frank-large.env) — these match it,
|
# TOP_K = 1.0 / 0.95 / 20 in frank-dragoon.env) — these match it,
|
||||||
# so per-request values are consistent, not load-bearing.
|
# so per-request values are consistent, not load-bearing.
|
||||||
extraBody:
|
extraBody:
|
||||||
temperature: 1.0
|
temperature: 1.0
|
||||||
@@ -167,35 +175,47 @@ providers:
|
|||||||
auth: none
|
auth: none
|
||||||
models:
|
models:
|
||||||
- id: frank-zealot
|
- id: frank-zealot
|
||||||
# Model id renamed from frank-secondary on 2026-10-08 (official
|
# Model id renamed from frank-zealot on 2026-10-08 (official
|
||||||
# unit-name scheme; the service/unit/scripts keep the
|
# unit-name scheme; the service/unit/scripts keep the
|
||||||
# frank-secondary name — service names are unchanged).
|
# frank-zealot name — service names are unchanged).
|
||||||
name: "frank-zealot (dankclaw-3090)"
|
name: "frank-zealot (dankclaw-3090)"
|
||||||
# Server-side compaction routes to compaction.remoteEndpoint in
|
# Server-side compaction routes to compaction.remoteEndpoint in
|
||||||
# config.yml (192.168.0.143:7771 — this endpoint); the
|
# config.yml (192.168.0.143:7771 — this endpoint); the
|
||||||
# compactionModel candidate keeps the wire model id valid there.
|
# compactionModel candidate keeps the wire model id valid there.
|
||||||
compactionModel: llamacpp (dankclaw-3090)/frank-zealot
|
compactionModel: llamacpp (dankclaw-3090)/frank-zealot
|
||||||
# Dankclaw's RTX 3090: llama.cpp (master, CUDA sm_86 build) serving
|
# Dankclaw's RTX 3090: llama.cpp PrismML fork build (vendor 10777,
|
||||||
# HauhauCS/Qwen3.5-9B-Uncensored-HauhauCS-Aggressive at Q6_K
|
# commit e3de71522 — the ONLY loader for this payload's custom tensor
|
||||||
# (7,359,259,008 B) — qwen35 dense hybrid (32 layers: 8 full-attention
|
# type 142 + prism.hadamard.* metadata, and the minimum build that
|
||||||
# + 24 Gated DeltaNet, 4 KV heads x 256 dim, native 262,144), TWO
|
# pairs MTP with a quantized V cache) serving
|
||||||
# conversations (--ctx-size 401408 / --parallel 2) at Frank's 200k cap
|
# prism-ml/Ternary-Bonsai-2-9B-gguf at PQ2_0 (2,675,410,720 B) WITH the
|
||||||
# each. Exact KV: f16 K + f16 V. Vision via the publisher's OWN
|
# MTP head in the file — qwen35 hybrid, 32 layers (8 full-attention +
|
||||||
# BF16 mmproj (921,704,448 B) — the model is natively multimodal.
|
# 24 Gated DeltaNet), 4 KV heads x 256 dim, native 262,144 — in THREE
|
||||||
# **MTP IS OFF** because the file carries no nextn/mtp tensors —
|
# conversations (--ctx-size 786432 / --parallel 3), each slot at the
|
||||||
# SPEC_TYPE=none strips both spec flags. Priced from the MiMo Q6_K
|
# model's TRAINED window.
|
||||||
# boots at this geometry (21,276/2,849 at ubatch 1024; 21,846/2,279 at
|
# KV is q8_0 K + q8_0 V (17 KiB/token over the 8 full layers =
|
||||||
# 2048). 2026-10-07 (late) swap from Gemma4-26B-A4B Q4_K_M (1x200,704).
|
# 13,056 MiB pool, ledger-exact); f16 KV would bill 26,112 MiB and
|
||||||
# Runbook:
|
# cannot boot this card. Boot ledger 17,876 used / 6,249 free. Vision
|
||||||
# serverAppConfigs-docs/LLM/frank-secondary-llama-qwen35-9b-q6k-2x200704.md.
|
# through the publisher's Q8_0 mmproj (624,229,664 B — Q8_0 is the
|
||||||
# contextWindow is the PER-SLOT window (Frank's cap): a longer
|
# publisher's requirement for concurrent image requests), whose
|
||||||
# prompt needs compaction.
|
# worst-case lands outside the engine's fit projection. **MTP OFF —
|
||||||
contextWindow: 200704
|
# measured, not assumed**: the draft context bills its own f16 KV over
|
||||||
|
# the WHOLE pool (3,072 MiB) and at ubatch 2048 that squeeze halves
|
||||||
|
# decode (167.2 → 109.2 t/s); SPEC_TYPE=draft-mtp + UBATCH_SIZE=1024 is
|
||||||
|
# the 213.5 t/s arm if the card ever has room. 2026-10-18 swap from
|
||||||
|
# Ternary-Bonsai-2-27B PQ2_0 at 2 × 200,704. Measured: 167.2 t/s
|
||||||
|
# single-stream greedy decode, 280.2 t/s across three concurrent
|
||||||
|
# streams, 2,877 t/s prefill at 106,418. Base-alignment: censored base
|
||||||
|
# lineage; unlike the 27B there is NO CRACK re-export matching this
|
||||||
|
# file. Runbook:
|
||||||
|
# serverAppConfigs-docs/LLM/frank-zealot-llama-prism-bonsai9-mtp.md.
|
||||||
|
# contextWindow is the PER-SLOT window (= the native 262,144): a longer
|
||||||
|
# prompt needs compaction — llama.cpp answers a 400, never truncates.
|
||||||
|
contextWindow: 262144
|
||||||
# Prompt + budget must fit inside the slot window; thinking counts
|
# Prompt + budget must fit inside the slot window; thinking counts
|
||||||
# against the budget. Compaction fires at 85 % of the window =
|
# against the budget. Compaction fires at 85 % of the window =
|
||||||
# 170,598 est; worst-case prompt + budget ≈ 170,598 × 1.03 +
|
# 222,822 est; worst-case prompt + budget ≈ 222,822 × 1.03 +
|
||||||
# 16,384 ≈ 192,100 ≤ 200,704 — a longer prompt is a 400 naming
|
# 16,384 ≈ 245,891 ≤ 262,144. This endpoint is the fleet's
|
||||||
# the limit, never a truncation.
|
# compaction hub: the widest window in the fleet.
|
||||||
maxTokens: 16384
|
maxTokens: 16384
|
||||||
reasoning: true
|
reasoning: true
|
||||||
input: [text, image]
|
input: [text, image]
|
||||||
@@ -204,29 +224,33 @@ providers:
|
|||||||
# `reasoning_content` — the same field the MiMo/Ornith eras used;
|
# `reasoning_content` — the same field the MiMo/Ornith eras used;
|
||||||
# harness reads unchanged.
|
# harness reads unchanged.
|
||||||
reasoningContentField: "reasoning_content"
|
reasoningContentField: "reasoning_content"
|
||||||
# The Qwen3.5 chat template has NO reasoning_effort variable (unlike
|
# Bonsai-2's template DOES read reasoning_effort (the Qwen3.5-9B
|
||||||
# the Qwen3.8-template endpoints, where an unmapped level is a hard
|
# template did not — the map used to be inert here): it accepts ONLY
|
||||||
# Jinja raise). llama.cpp passes chat_template_kwargs through to
|
# xhigh (default), medium, low and calls raise_exception on anything
|
||||||
# Jinja, and Jinja ignores variables a template never reads — so the
|
# else, so an unmapped harness level is a hard HTTP 500 on the role's
|
||||||
# map is inert here, kept so role-level overrides resolve identically
|
# first request, naming Jinja and not the model. The fold below is
|
||||||
# across the fleet.
|
# therefore load-bearing, identical to the frank-archon/dragoon law.
|
||||||
|
# llama.cpp passes chat_template_kwargs through to Jinja.
|
||||||
reasoningEffortMap:
|
reasoningEffortMap:
|
||||||
minimal: low
|
minimal: low
|
||||||
low: low
|
low: low
|
||||||
medium: medium
|
medium: medium
|
||||||
high: xhigh
|
high: xhigh
|
||||||
max: xhigh
|
max: xhigh
|
||||||
# The Qwen3.5 publisher recipe (model card, thinking mode):
|
# The payload's OWN sampling metadata (general.sampling.* in the
|
||||||
# temperature 0.6 / top_p 0.95 / top_k 20 / min_p 0. Non-thinking
|
# GGUF): temperature 1.0 / top_p 0.95 / top_k 20 — thinking-mode
|
||||||
# mode is 0.7/0.8/20/0 — the harness runs thinking mode.
|
# recipe, the same trio the other Qwen3.8-family endpoints carry.
|
||||||
|
# (The old 0.6 was the Qwen3.5-9B publisher's card, not this file.)
|
||||||
# extraBody is merged last and wins over the harness default.
|
# extraBody is merged last and wins over the harness default.
|
||||||
extraBody:
|
extraBody:
|
||||||
temperature: 0.6
|
temperature: 1.0
|
||||||
top_p: 0.95
|
top_p: 0.95
|
||||||
top_k: 20
|
top_k: 20
|
||||||
min_p: 0.0
|
min_p: 0.0
|
||||||
presence_penalty: 0.0
|
presence_penalty: 0.0
|
||||||
chat_template_kwargs:
|
chat_template_kwargs:
|
||||||
enable_thinking: true
|
enable_thinking: true
|
||||||
# (no preserve_thinking: that kwarg belongs to the Qwen3.8
|
# The template DOES read preserve_thinking: when false it drops
|
||||||
# templates; nothing in this template reads it)
|
# prior assistants' <think> blocks from history. Keep them —
|
||||||
|
# multi-turn tool traffic on this endpoint is the majority.
|
||||||
|
preserve_thinking: true
|
||||||
@@ -1,12 +1,18 @@
|
|||||||
# Core Documentation
|
# Core Documentation
|
||||||
|
|
||||||
These files define the structural conventions that govern the pi agent system itself. They are the grammar rules — boring until you break them, then devastating.
|
These files define the structural conventions that govern the agent system itself. They are the grammar rules — boring until you break them, then devastating.
|
||||||
|
|
||||||
|
> **Archive note (2026-10-18).** The settings pages (`settings.md`, `settings.json`)
|
||||||
|
> capture the retired **pi** harness configuration (`frank-default-*` endpoints,
|
||||||
|
> RTX 3090-era hardware) and are historical records. The live config is
|
||||||
|
> `agent/config.yml` + `agent/models.yml` in this repo; current fleet endpoints
|
||||||
|
> are on [System hosts](/system/index.md). The AGENTS.md format pages remain current.
|
||||||
|
|
||||||
## Concept Files
|
## Concept Files
|
||||||
|
|
||||||
* [AGENTS.md Format Specification](agents-md-format.md) — Canonical structure and conventions for the system-level instruction file that governs agent behavior.
|
* [AGENTS.md Format Specification](agents-md-format.md) — Canonical structure and conventions for the system-level instruction file that governs agent behavior.
|
||||||
* [AGENTS.md Index](index-doc.md) — Overview of the cached tool documentation system and how to add new entries.
|
* [AGENTS.md Index](index-doc.md) — Overview of the cached tool documentation system and how to add new entries.
|
||||||
* [Pi Settings System](settings.md) — Current system configuration: providers, models, packages, subagent overrides, and runtime options.
|
* [Pi Settings System](settings.md) — pi-era `settings.json` record (archive): providers, models, packages, subagent overrides.
|
||||||
|
|
||||||
## Change Tracking
|
## Change Tracking
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,43 @@ timestamp: 2026-08-28
|
|||||||
|
|
||||||
# Bundle Change Log
|
# Bundle Change Log
|
||||||
|
|
||||||
|
## 2026-10-18 — Fleet law: filed PRs open in Frank's browser immediately
|
||||||
|
|
||||||
|
Both repos' git rules now require it: the moment a PR is opened, `xdg-open <PR-URL>` drops a Firefox tab on the workstation (AGENTS.md § Trunk-based SDLC here; § Git Workflow step 6 in `dank/serverAppConfigs`, riding their PR #6 branch).
|
||||||
|
|
||||||
|
## 2026-10-18 — Trunk law: extension route closed unmerged; direct repo alignment instead
|
||||||
|
|
||||||
|
Built and live-verified a cwd-scoped `before_agent_start` extension (quote probes: fires under `~/Projects`, silent elsewhere; kept as `.AGENTTRASH/trunk-law.js`). **Operator closed PR #9 unmerged** in favor of editing each repo's own AGENTS.md. Durable finding from the exploration: every context-file provider (AGENTS.md walk-up, `.omp/` dirs, CLAUDE.md) resolves at or below the repo root — a `~/Projects/AGENTS.md` for ancestor scope can never load; user-level `APPEND_SYSTEM.md` broadcasts to *all* sessions. Second finding: **serverAppConfigs never had git-flow** — its AGENTS.md mandated no branch regime at all (direct commit+push); a trunk + PR law is being added there by PR in that repo, not corrected.
|
||||||
|
|
||||||
|
## 2026-10-18 — SDLC switched to trunk-based development
|
||||||
|
|
||||||
|
`develop` retired by operator decision (single-dev repo; the branch bought nothing and cost a back-merge every release). New law in AGENTS.md § *Trunk-based SDLC*: branch off the freshest `origin/main` before every work item, PRs target `main` directly, `--no-ff` merges, tags `vX.Y.Z` straight on main. No back-merges, no release branches. The last back-merge (`527596a`) lands with this switch; the managed skill `gitflow-back-merge-plumbing` is now historical.
|
||||||
|
|
||||||
|
## 2026-10-18 — Sibling-vault overlap census; system docs realigned to live ground truth
|
||||||
|
|
||||||
|
Census of `omp-docs/` against `~/Projects/serverAppConfig/serverAppConfigs-docs/` (subagent + live-ssh verification) found four contradicting pairs; all OURS-side stale pages corrected, THEIRS side flagged only (their repo, their PR flow). Ground truth from read-only probes on both boxes 2026-10-18.
|
||||||
|
|
||||||
|
* **Hardware drift corrected** (`system/dankserver.md`, `system/dankclaw.md` rewritten, `AGENTS.md` machine table): RTX 3090 moved Dankserver→Dankclaw 2026-09; dankserver now 2× Radeon AI PRO R9700 (7700X stays — the "board swap" story is false), 246 GiB RAM, no swap; dankclaw 121 GiB RAM + 64 GiB swap. Served models per live units: frank-archon (:7770 dankserver, radiance TP=2 iq4r), frank-dragoon (:7770 dankclaw, halogen NATIVE v2, iGPU), frank-zealot (:7771 dankclaw, llama.cpp PrismML, Ternary-Bonsai-2-27B PQ2_0, 3090). Both kernels 7.0.0-38-generic; dankclaw :7770 needs no auth.
|
||||||
|
* **Gitea pages corrected** (`tools/gitea/` index + 3 subpages): `gitea-caddy` quadlet retired — fleet Caddy fronts the domain; data tree is `/home/dank/Containers/gitea/{data,postgres,env}` (2026-09-01 standard), `/opt/gitea/` is a do-not-use leftover; LAN IP, live domain, no WAN address.
|
||||||
|
* **Pi-era pages demarcated as archive** (`pi/index.md`, `core/index.md` banners; `core/index.md` said settings.md was "Current"): `frank-default-small/large` endpoints, role tables, and 3090/4070 hardware rows now read as pi-era records. `tools/llama-cpp/index.md` fleet note modernized to the one remaining llama.cpp endpoint (zealot :7771).
|
||||||
|
* **Their-side staleness flagged, NOT edited** (for operator clarification): `Agent/OMP Harness.md` still says thresholdPercent 70 — live config is **95** (`agent/config.yml:84`); `index.md:18` says Dankserver Ubuntu 24.04 vs their own specs page 26.04; `Dankclaw/Stack.md` "current mapping (2026-09-03)" predates the ACTIVE dragoon/zealot runbooks it links beside; `index.md:548` links the superseded pi-era KB at `~/.pi/agent/docs/`.
|
||||||
|
* Consistent duplicates (no action): niri/noctalia desktop pages, Caddy reference. Divergence clarified: their "composer" = OpenWebUI chat box; ours = omp composer shape — unrelated subjects.
|
||||||
|
|
||||||
|
## 2026-10-18 — Status line docs truth audit (full-source re-verification)
|
||||||
|
|
||||||
|
Exhaustive claim-by-claim re-audit of [OMP Status Line Customization](/pi/statusline.md) against the minified `dist/cli.js` bundle plus a live screenshot matrix (band × {off, percentage, embedded}, claude × off). Page carries an **Audit log** section; four first-pass claims were false and are corrected (see there): claude's rule is *not* the context meter (meter is `box`/`band` only; the "red rule" was the session-accent filler), the "Tern-only" composer-bar claim was bogus (the readout is `composer.tokenRate`, default off), `segmentOptions` are **not** gated to `preset: custom` (only the segment arrays are), and the `mode` segment's states are Plan/Prewalk/Goal/Vibe/Loop (no yolo). Page expanded with: the 7-preset defaults table, per-shape `statusAttachment`/`bottomBar` model (8 built-ins + plugin shape registry), `contextLine` per-value behavior, the 27-segment catalog with triggers/options, `segmentOptions` schema, and the full `statusLine.*`/`composer.*` knob registry. The bundle's own "(box composer only)" knob description for `contextLine` is upstream-wrong — band honors it.
|
||||||
|
|
||||||
|
ServerAppConfigs-docs overlap census: flagged separately for the operator (morning report); no doc merged/changed on either side.
|
||||||
|
|
||||||
|
## 2026-10-18 — Status line rebuilt on custom segments; frank-archon display name slimmed
|
||||||
|
|
||||||
|
Interactive tune-up of the omp status bar (grilling session, live loop: config edit → watcher repaint → niri screenshot verify). New knowledge page: [OMP Status Line Customization](/pi/statusline.md).
|
||||||
|
|
||||||
|
* **Mechanics discovered:** `leftSegments`/`rightSegments` are inert unless `preset: custom` (fleet was on `nerd` with dead arrays; `segmentOptions` *do* merge under named presets); `composer.shape` routes them — `band` merges both arrays into one row above the editor (title rides the working row), `claude` splits them into top chip + bottom strip. The context meter exists **only in `box`/`band`** — `contextLine`: `off` plain rule, `embedded` hoists the context segment into the labeled inline meter (`60% ——— × 200K`), `percentage`/`annotated` paint an unlabeled proportional rule meter (all four live-verified); every other shape's rule is a constant session-accent filler. Working row (session title + tok/s readout gated by `composer.tokenRate`, default off) is composer chrome — model/thinking can never join it. Eight composer shapes ship in the bundle; plugins can register more.
|
||||||
|
* **Final bar (`band`, after a `claude` sojourn):** left = `session_name · vim · mode · hostname · path · git(no branch text) · pr`; right cluster in array order = `model · cost · time_spent` (`context_pct` hoists out of the run to paint the labeled inline meter `60% ——— × 200K` as a flexible spacer between the groups). Cut: tok/s duplicate, clock, cache trio, `context_total`, `subagents`, `session` hash, and `token_in`/`token_out` (cumulative totals live in `/session`). `path`: logical `project/worktree` label (`stripWorkPrefix: true`, kept after a live `false` trial of the full cwd); branch text dropped (worktree branches are autogenerated), dirty badges kept.
|
||||||
|
* **models.yml:** frank-archon display `name` slimmed to `"frank-archon"` (endpoint suffix dropped; `id` untouched).
|
||||||
|
* **Out of scope noted:** worktree name generation (`wt-<date>-<hash>`) is omp-internal; possible upstream feature request.
|
||||||
|
|
||||||
## 2026-10-09 — Blankpad DE redesign: desk profiles, keybind rework, Handy fleet wiring
|
## 2026-10-09 — Blankpad DE redesign: desk profiles, keybind rework, Handy fleet wiring
|
||||||
|
|
||||||
Branch `blankpad-de-redesign` (worktree `wt/de-redesign-20261009`). Full sweep + redesign of the niri/noctalia/Handy stack on blankpad.
|
Branch `blankpad-de-redesign` (worktree `wt/de-redesign-20261009`). Full sweep + redesign of the niri/noctalia/Handy stack on blankpad.
|
||||||
|
|||||||
@@ -1,13 +1,18 @@
|
|||||||
# Pi Configuration
|
# Pi Configuration
|
||||||
|
|
||||||
Documentation for the pi coding agent installation on ](../system/index.md).
|
> **Archive note (2026-10-18).** Most pages in this directory document the retired
|
||||||
Everything here is configured locally on the workstation; the LLM providers are the
|
> **pi** harness (settings.json / models.json, `frank-default-*` endpoints, verified
|
||||||
two llama.cpp servers (Dankserver, Dankclaw).
|
> 2026-08-28). The live harness is **omp** — its config is `agent/config.yml` +
|
||||||
|
> `agent/models.yml` in this repo, the current fleet endpoints are on
|
||||||
|
> [System hosts](/system/index.md), and omp-specific knowledge lands in pages like
|
||||||
|
> [OMP Status Line Customization](/pi/statusline.md) below. Read pi pages as
|
||||||
|
> historical records, not current state.
|
||||||
|
|
||||||
## Configuration Files
|
## Configuration Files
|
||||||
|
|
||||||
- [Pi Settings System (settings.json)](/core/settings.md) — Main `settings.json` reference. Providers, models, packages, subagent overrides.
|
- [Pi Settings System (settings.json)](/core/settings.md) — Main `settings.json` reference. Providers, models, packages, subagent overrides.
|
||||||
- [Pi Models Configuration](/pi/models.md) — `models.json` reference. Provider definitions, model specs, endpoints.
|
- [Pi Models Configuration](/pi/models.md) — `models.json` reference. Provider definitions, model specs, endpoints.
|
||||||
|
- [OMP Status Line Customization](/pi/statusline.md) — How presets, composer shapes, and segment arrays actually interact; the fleet's tuned bar.
|
||||||
|
|
||||||
## Extensions
|
## Extensions
|
||||||
|
|
||||||
|
|||||||
+45
-49
@@ -1,83 +1,79 @@
|
|||||||
---
|
---
|
||||||
type: reference
|
type: reference
|
||||||
title: Dankclaw
|
title: Dankclaw
|
||||||
description: Secondary inference server at 192.168.0.143. Runs llama.cpp (frank-default-large).
|
description: Inference and services box at 192.168.0.143 — frank-dragoon (halogen-flash-server, Strix Halo iGPU, :7770) and frank-zealot (llama.cpp on the RTX 3090, :7771), plus Gitea/Caddy/OpenWebUI services.
|
||||||
tags:
|
tags:
|
||||||
- network
|
- network
|
||||||
- llamacpp
|
- llamacpp
|
||||||
- inference
|
- inference
|
||||||
- server
|
- server
|
||||||
- comfyui
|
- comfyui
|
||||||
- unverified
|
|
||||||
generated:
|
generated:
|
||||||
by: chief-designer/agent
|
by: chief-designer/agent
|
||||||
at: 2026-08-26T00:00:00Z
|
at: 2026-08-26T00:00:00Z
|
||||||
verified: 2026-08-28
|
verified: 2026-10-18
|
||||||
---
|
---
|
||||||
|
|
||||||
# Dankclaw
|
# Dankclaw
|
||||||
|
|
||||||
Secondary llama.cpp inference server for the Frank Program. Serves larger models used by planner, worker, reviewer, oracle, and context-builder subagents.
|
Strix Halo mini-PC carrying the fleet's secondary models and most of the
|
||||||
|
service stack (Gitea, Caddy, OpenWebUI, SearXNG). Two GPU-class devices: the
|
||||||
|
Radeon 8060S iGPU with 119 GiB unified memory, and the RTX 3090 moved over
|
||||||
|
from Dankserver in September 2026.
|
||||||
|
|
||||||
## Connection Details
|
## Connection Details
|
||||||
|
|
||||||
| Property | Value |
|
| Property | Value |
|
||||||
|----------|-------|
|
|----------|-------|
|
||||||
| **Hostname** | dankclaw |
|
| **Hostname** | dankclaw |
|
||||||
| **IP Address** | 192.168.0.143 |
|
| **IP Address** | 192.168.0.143 (LAN) |
|
||||||
| **Port** | 7770 |
|
| **Auth** | none required on :7770 (verified 2026-10-18) |
|
||||||
| **Base URL** | `http://192.168.0.143:7770/v1` |
|
|
||||||
| **API** | OpenAI-compatible completions |
|
|
||||||
| **Authentication** | API key configured |
|
|
||||||
|
|
||||||
## Models
|
## Inference Services
|
||||||
|
|
||||||
| Model ID | Context Window | Reasoning | Input Types |
|
| Model ID | Unit | Endpoint | Engine / weights |
|
||||||
|----------|---------------|-----------|-------------|
|
|----------|------|----------|------------------|
|
||||||
| `frank-default-large` | 262,144 tokens | Yes | Text, *Image* (unverified) |
|
| `frank-dragoon` | `frank-dragoon.service` (root) | `:7770` | halogen-flash-server container — Quat3rnion NATIVE v2 abliterated Qwen3.8-Flash-Next, MTP spec decode, 2 slots over ONE 200,704-position pool, vision ON, **Strix Halo iGPU** (unified memory) |
|
||||||
|
| `frank-zealot` | `frank-zealot.service` (root) | `:7771` | llama.cpp (PrismML fork, build 10754) — Ternary-Bonsai-2-27B PQ2_0 GGUF (qwen35 hybrid), 2×200,704 slots, q8_0 K+V, mmproj vision, **RTX 3090** |
|
||||||
|
|
||||||
## Services
|
Harness-side context windows (`agent/models.yml`): dragoon 155,648,
|
||||||
|
zealot 200,704 per slot. The models.yml display labels "(dankclaw-gpu)" /
|
||||||
### llama.cpp
|
"(dankclaw-3090)" predate naming cleanup; the hardware column above is
|
||||||
|
current. Subagent roles `scout`, `sonic`, `designer`, `librarian`,
|
||||||
| Property | Value |
|
`security-reviewer` route to frank-zealot; `reviewer`/`task` run on
|
||||||
|----------|-------|
|
frank-archon (Dankserver).
|
||||||
| **Port** | 7770 |
|
|
||||||
| **Models** | `frank-default-large` |
|
|
||||||
|
|
||||||
## Hardware
|
|
||||||
|
|
||||||
| Property | Value |
|
|
||||||
|----------|-------|
|
|
||||||
| **CPU** | AMD Ryzen AI MAX+ 395 (16C/16T, Strix Halo) |
|
|
||||||
| **GPU** | Radeon 8060S integrated (gfx1151, amdgpu) |
|
|
||||||
| **RAM** | 119 GiB |
|
|
||||||
| **Storage** | Kingston SNV3S1000G NVMe (931.5 GB), ~676 GB free |
|
|
||||||
| **OS** | Ubuntu 26.04 LTS, kernel 7.0.0-30-generic |
|
|
||||||
| **ROCm** | 7.2.4 (driver: 7.0.0-30-generic) |
|
|
||||||
| **Python** | 3.14.4 (system) |
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
Dankclaw handles complex tasks delegated by subagent overrides. The `frank-default-large` model provides extended context. *Multimodal input support is unverified.*
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Health check
|
curl http://192.168.0.143:7770/v1/models # dragoon
|
||||||
curl http://192.168.0.143:7770/health
|
curl http://192.168.0.143:7771/v1/models # zealot
|
||||||
|
|
||||||
# Test with large model
|
|
||||||
curl http://192.168.0.143:7770/v1/chat/completions \
|
|
||||||
-H "Content-Type: application/json" \
|
|
||||||
-H "Authorization: Bearer <key>" \
|
|
||||||
-d '{"model":"frank-default-large","messages":[{"role":"user","content":"Hello"}],"max_tokens":32}'
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Related Knowledge Bases (sibling project on the workstation)
|
## Hardware (verified live 2026-10-18)
|
||||||
|
|
||||||
- **serverAppConfigs** — `/home/dank/Projects/serverAppConfigs/` — Podman deployment config for this host (AI, search, development, observability stack, incl. the Hermes compose service) **plus the LLM inference fleet** (frank-default-large, CIRU ROCmFPX llama.cpp, :7770). The former `vllmScripts` repo merged into it on 2026-08-22 (history preserved). Start at `/home/dank/Projects/serverAppConfigs/docs/index.md` (see `dankclaw/compose.yaml` + `docs/Dankclaw/`; LLM fleet at `docs/LLM/index.md`, deploy runbook at `docs/LLM/deployment.md`).
|
| Property | Value |
|
||||||
|
|----------|-------|
|
||||||
|
| **CPU/APU** | AMD Ryzen AI MAX+ 395 (Strix Halo, Radeon 8060S, gfx1151) |
|
||||||
|
| **dGPU** | NVIDIA GeForce RTX 3090 (moved from Dankserver 2026-09) |
|
||||||
|
| **RAM** | 121 GiB (mostly usable as GPU unified memory) |
|
||||||
|
| **Swap** | 64 GiB |
|
||||||
|
| **OS** | Ubuntu 26.04 LTS, kernel 7.0.0-38-generic |
|
||||||
|
|
||||||
|
The pre-rename story (`frank-default-large` on ROCmFPX llama.cpp/CIRU,
|
||||||
|
262,144-token context) was superseded by the 2026-10-08/09 model-id rename
|
||||||
|
and the dragoon/zealot engine swaps; the 119→121 GiB RAM figure follows the
|
||||||
|
live `free` reading.
|
||||||
|
|
||||||
|
## Related Knowledge Bases (sibling project)
|
||||||
|
|
||||||
|
- **serverAppConfigs** — deployment repo + vault, on this workstation at
|
||||||
|
`~/Projects/serverAppConfig/` (docs vault: `~/Projects/serverAppConfig/serverAppConfigs-docs/`).
|
||||||
|
Live runbooks: `LLM/frank-dragoon-flash-server-v2-native.md` and
|
||||||
|
`LLM/frank-zealot-llama-prism-bonsai2-pq20.md` — deploy-side source of
|
||||||
|
truth for engines, flags, and restart procedures. Service stack docs under
|
||||||
|
`Dankclaw/`, `Infrastructure/`.
|
||||||
|
|
||||||
## See Also
|
## See Also
|
||||||
|
|
||||||
- [[models|models]] — Provider definitions
|
- [[dankserver|dankserver]] — the main-model box (frank-archon)
|
||||||
- [[dankserver|dankserver]] — Primary server
|
- [/tools/gitea/index.md](/tools/gitea/index.md) — Gitea stack on this host
|
||||||
- [[network|network]] — Network topology
|
- [[network|network]] — Network topology
|
||||||
@@ -1,22 +1,24 @@
|
|||||||
---
|
---
|
||||||
type: reference
|
type: reference
|
||||||
title: Dankserver
|
title: Dankserver
|
||||||
description: Primary llama.cpp inference server at 192.168.0.235:7770, serving frank-default-small with 163,840-token context window.
|
description: Radiance inference server at 192.168.0.235:7770, serving frank-archon (Qwen3.8-Flash-Next iq4r, 2x R9700 TP=2, 200,000-token context).
|
||||||
tags:
|
tags:
|
||||||
- network
|
- network
|
||||||
- llamacpp
|
- llamacpp
|
||||||
- inference
|
- inference
|
||||||
- server
|
- server
|
||||||
- unverified
|
|
||||||
generated:
|
generated:
|
||||||
by: chief-designer/agent
|
by: chief-designer/agent
|
||||||
verified: 2026-08-28
|
verified: 2026-10-18
|
||||||
status: stable
|
status: stable
|
||||||
---
|
---
|
||||||
|
|
||||||
# Dankserver
|
# Dankserver
|
||||||
|
|
||||||
Primary llama.cpp inference server for the Frank Program. Serves `frank-default-small` — a fast, capable model with image support.
|
Primary inference server for the Frank Program. Serves `frank-archon`, the
|
||||||
|
main agent model, from a pair of Radeon AI PRO R9700s (tensor-parallel 2).
|
||||||
|
The RTX 3090 that used to live here was removed 2026-09-15 and now runs on
|
||||||
|
Dankclaw.
|
||||||
|
|
||||||
## Connection Details
|
## Connection Details
|
||||||
|
|
||||||
@@ -28,19 +30,24 @@ Primary llama.cpp inference server for the Frank Program. Serves `frank-default-
|
|||||||
| **Base URL** | `http://192.168.0.235:7770/v1` |
|
| **Base URL** | `http://192.168.0.235:7770/v1` |
|
||||||
| **API** | OpenAI-compatible completions |
|
| **API** | OpenAI-compatible completions |
|
||||||
| **Authentication** | None |
|
| **Authentication** | None |
|
||||||
|
| **Systemd unit** | `frank-archon.service` (root) |
|
||||||
|
|
||||||
## Model
|
## Model
|
||||||
|
|
||||||
| Property | Value |
|
| Property | Value |
|
||||||
|----------|-------|
|
|----------|-------|
|
||||||
| **Model ID** | `frank-default-small` |
|
| **Model ID** | `frank-archon` (display name `frank-archon`) |
|
||||||
| **Context Window** | 163,840 tokens |
|
| **Weights** | Qwen3.8-Flash-Next, radiance iq4r (publisher build) |
|
||||||
| **Reasoning** | Supported |
|
| **Engine** | radiance, tensor-parallel 2 across both R9700s |
|
||||||
| **Input Types** | Text, *Image* (unverified) |
|
| **Context Window** | 200,000 tokens (harness `models.yml`; served pool may differ — see runbook) |
|
||||||
|
|
||||||
|
`frank-medium` (former dual-GPU mid tier) is masked and retired.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Dankserver serves the small subagent model `frank-default-small`. Small subagent roles route here unless a role override picks a different model.
|
Dankserver carries the main-session model. Subagent role overrides in
|
||||||
|
`agent/models.yml` route here for `task` and `reviewer`; scout/sonic/designer
|
||||||
|
route to Dankclaw.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Health check
|
# Health check
|
||||||
@@ -49,27 +56,34 @@ curl http://192.168.0.235:7770/health
|
|||||||
# Quick test
|
# Quick test
|
||||||
curl http://192.168.0.235:7770/v1/chat/completions \
|
curl http://192.168.0.235:7770/v1/chat/completions \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d '{"model":"frank-default-small","messages":[{"role":"user","content":"Hello"}],"max_tokens":32}'
|
-d '{"model":"frank-archon","messages":[{"role":"user","content":"Hello"}],"max_tokens":32}'
|
||||||
```
|
```
|
||||||
|
|
||||||
## Hardware
|
## Hardware (verified live 2026-10-18)
|
||||||
|
|
||||||
| Property | Value |
|
| Property | Value |
|
||||||
|----------|-------|
|
|----------|-------|
|
||||||
| **CPU** | AMD Ryzen 7 7700X (8C/16T, Raphael) |
|
| **CPU** | AMD Ryzen 7 7700X (8C/16T, Raphael iGPU on board) |
|
||||||
| **GPU** | NVIDIA GeForce RTX 3090 (24 GiB VRAM, EVGA) |
|
| **GPU** | 2× AMD Radeon AI PRO R9700 (Navi 48, 32 GiB each) |
|
||||||
| **RAM** | 60 GiB |
|
| **RAM** | 246 GiB |
|
||||||
| **Swap** | 64 GiB (/swapfile) |
|
| **Swap** | effectively none (~0.1 GiB) — the 64 GiB swapfile is on Dankclaw, not here |
|
||||||
| **Storage** | Kingston SNV3S1000G NVMe (931.5 GB) + md0 RAID (6×18.2T Toshiba, /mnt/entropy, 91T) |
|
| **Storage** | 7× 18.2 TB HDD + 1.8 TB NVMe (layout owned by the deploy repo) |
|
||||||
| **OS** | Ubuntu 26.04 LTS, kernel 7.0.0-30-generic |
|
| **OS** | Ubuntu 26.04.1 LTS, kernel 7.0.0-38-generic |
|
||||||
| **NVIDIA Driver** | 595.84 |
|
|
||||||
|
|
||||||
## Related Knowledge Bases (sibling project on the workstation)
|
The old page (verified 2026-08-28) listed an RTX 3090, 60 GiB RAM, and a
|
||||||
|
64 GiB swapfile here; all three were superseded by the 2026-09 hardware swap.
|
||||||
|
|
||||||
- **serverAppConfigs** — `/home/dank/Projects/serverAppConfigs/` — Podman deployment config for this host (media and library stack: RomM, Copyparty, Calibre-Web) **plus the LLM inference fleet** (frank-default-small, llama.cpp, :7770). The former `vllmScripts` repo merged into it on 2026-08-22 (history preserved). Start at `/home/dank/Projects/serverAppConfigs/docs/index.md` (see `dankserver/compose.yaml` + `docs/Dankserver/`; LLM fleet at `docs/LLM/index.md`, deploy runbook at `docs/LLM/deployment.md`).
|
## Related Knowledge Bases (sibling project)
|
||||||
|
|
||||||
|
- **serverAppConfigs** — deployment repo + vault, on this workstation at
|
||||||
|
`~/Projects/serverAppConfig/` (docs vault: `~/Projects/serverAppConfig/serverAppConfigs-docs/`).
|
||||||
|
Podman/quadlet deploy config for both servers plus the LLM inference fleet.
|
||||||
|
The live frank-archon runbook (engine flags, KV pool sizing, restart
|
||||||
|
procedures) is `LLM/frank-archon-radiance-qwen38-iq4r.md` in that vault —
|
||||||
|
it, not this page, is the deploy-side source of truth.
|
||||||
|
|
||||||
## See Also
|
## See Also
|
||||||
|
|
||||||
- [[models|models]] — Provider definitions
|
- [[dankclaw|dankclaw]] — the other inference box (dragoon + zealot)
|
||||||
- [[dankclaw|dankclaw]] — Secondary server
|
|
||||||
- [[network|network]] — Network topology
|
- [[network|network]] — Network topology
|
||||||
|
- [/pi/statusline.md](/pi/statusline.md) — where these models surface in the TUI
|
||||||
@@ -11,8 +11,8 @@ Dankclaw are the inference servers it talks to.
|
|||||||
|
|
||||||
## Network Systems
|
## Network Systems
|
||||||
|
|
||||||
- [Dankserver](/system/dankserver.md) — Primary llama.cpp inference server at 192.168.0.235:7770, serving `frank-default-small` (163,840-token context). AMD Ryzen 7 7700X, RTX 3090, Ubuntu 26.04.
|
- [Dankserver](/system/dankserver.md) — Main-model inference server at 192.168.0.235:7770, serving `frank-archon` (radiance Qwen3.8-Flash-Next, 200K ctx). AMD Ryzen 7 7700X, 2× Radeon AI PRO R9700, Ubuntu 26.04.
|
||||||
- [Dankclaw](/system/dankclaw.md) — Secondary inference server at 192.168.0.143:7770, serving `frank-default-large` (262,144-token context). AMD Ryzen AI MAX+ 395 (Strix Halo), Ubuntu 26.04, ROCm.
|
- [Dankclaw](/system/dankclaw.md) — Secondary inference + services box at 192.168.0.143: `frank-dragoon` (:7770, halogen-flash-server on the Strix Halo iGPU) and `frank-zealot` (:7771, llama.cpp on the RTX 3090). AMD Ryzen AI MAX+ 395, Ubuntu 26.04.
|
||||||
|
|
||||||
## Infrastructure Diagram
|
## Infrastructure Diagram
|
||||||
|
|
||||||
@@ -26,8 +26,8 @@ graph TB
|
|||||||
end
|
end
|
||||||
|
|
||||||
subgraph Network[192.168.0.0/24]
|
subgraph Network[192.168.0.0/24]
|
||||||
E[dankserver<br/>192.168.0.235:7770<br/>frank-default-small]
|
E[dankserver<br/>192.168.0.235:7770<br/>frank-archon]
|
||||||
F[dankclaw<br/>192.168.0.143:7770<br/>frank-default-large]
|
F[dankclaw<br/>192.168.0.143:7770 dragoon<br/>:7771 zealot]
|
||||||
end
|
end
|
||||||
|
|
||||||
D --> E
|
D --> E
|
||||||
@@ -42,7 +42,7 @@ graph TB
|
|||||||
The fleet has one sibling OKF knowledge base outside this bundle. Read it for
|
The fleet has one sibling OKF knowledge base outside this bundle. Read it for
|
||||||
deployment and inference details. This bundle links to it from the server pages.
|
deployment and inference details. This bundle links to it from the server pages.
|
||||||
|
|
||||||
* **serverAppConfigs** — `/home/dank/Projects/serverAppConfigs/` (index: `/home/dank/Projects/serverAppConfigs/docs/index.md`). Podman deployment configuration for both servers: compose files, Caddy reverse proxy, deploy scripts, bats tests, and the Obsidian-vault service docs (Dankclaw, Dankserver, Architecture, Infrastructure) — **plus the LLM inference fleet** (merged from the former `vllmScripts` repo on 2026-08-22, history preserved): llama.cpp on Dankserver (:7770, `frank-default-small`) and CIRU ROCmFPX llama.cpp on Dankclaw (:7770, `frank-default-large`). LLM fleet docs: `docs/LLM/index.md`; deploy runbook: `docs/LLM/deployment.md`.
|
* **serverAppConfigs** — deploy repo + Obsidian vault, on this workstation at `~/Projects/serverAppConfig/` with docs in `~/Projects/serverAppConfig/serverAppConfigs-docs/` (root `index.md` at the vault top — the old `docs/` prefix is gone). Podman deployment configuration for both servers: compose/quadlet files, Caddy reverse proxy, deploy scripts, bats tests, and the vault service docs (Dankclaw, Dankserver, Architecture, Infrastructure) — **plus the LLM inference fleet** (merged from the former `vllmScripts` repo on 2026-08-22, history preserved): radiance frank-archon on Dankserver (:7770), halogen frank-dragoon (:7770) and llama.cpp frank-zealot (:7771) on Dankclaw. The vault's `LLM/` runbooks are the deploy-side source of truth; this bundle documents the agent/harness side.
|
||||||
|
|
||||||
## Related
|
## Related
|
||||||
|
|
||||||
|
|||||||
@@ -5,13 +5,12 @@ description: Gitea container architecture, network topology, and Caddy reverse p
|
|||||||
tags:
|
tags:
|
||||||
- gitea
|
- gitea
|
||||||
- architecture
|
- architecture
|
||||||
- unverified
|
verified: 2026-10-18
|
||||||
verified: 2026-08-28
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Gitea Architecture
|
# Gitea Architecture
|
||||||
|
|
||||||
Three quadlet-managed containers on a shared private Podman network (rootless, user `dank`). Gitea connects to PostgreSQL via network DNS. Caddy proxies HTTP/S to Gitea.
|
Two quadlet-managed containers (Gitea, PostgreSQL) on a shared private Podman network (rootless, user `dank`). Gitea connects to PostgreSQL via network DNS. The fleet Caddy (separate stack, see [/caddy/index.md](/caddy/index.md)) proxies HTTP/S to Gitea — the old dedicated `gitea-caddy` container is retired.
|
||||||
|
|
||||||
## Network Topology
|
## Network Topology
|
||||||
|
|
||||||
@@ -63,10 +62,10 @@ Key environment variables:
|
|||||||
- `DATABASE_HOST=gitea-postgres` (network DNS)
|
- `DATABASE_HOST=gitea-postgres` (network DNS)
|
||||||
- `DATABASE_NAME=gitea`
|
- `DATABASE_NAME=gitea`
|
||||||
- `DATABASE_USER=gitea`
|
- `DATABASE_USER=gitea`
|
||||||
- `DATABASE_PASSWD` from `/opt/gitea/.env` (mode 0600)
|
- `DATABASE_PASSWD` from `/home/dank/Containers/gitea/env` (mode 0600)
|
||||||
- `USER_UID=1000`, `USER_GID=1000`
|
- `USER_UID=1000`, `USER_GID=1000`
|
||||||
|
|
||||||
Gitea writes `/data/gitea/conf/app.ini` on first start (host: `/opt/gitea/data/gitea-gitea/gitea/conf/app.ini`). The `[database] HOST` and `PASSWD` lines in app.ini override the env vars. When you rename the database container, edit the `HOST` line in app.ini as well.
|
Gitea writes `/data/gitea/conf/app.ini` on first start (host: `/home/dank/Containers/gitea/data/gitea/conf/app.ini`). The `[database] HOST` and `PASSWD` lines in app.ini override the env vars. When you rename the database container, edit the `HOST` line in app.ini as well.
|
||||||
|
|
||||||
## Ports
|
## Ports
|
||||||
|
|
||||||
|
|||||||
@@ -1,24 +1,23 @@
|
|||||||
---
|
---
|
||||||
type: reference
|
type: reference
|
||||||
title: Gitea Data Persistence
|
title: Gitea Data Persistence
|
||||||
description: Gitea data persistence, volume mounts, ownership, and backup strategy on dankclaw.
|
description: Gitea data persistence, volume mounts, ownership, and backup strategy on dankclaw (Containers/gitea layout).
|
||||||
tags:
|
tags:
|
||||||
- gitea
|
- gitea
|
||||||
- data
|
- data
|
||||||
- unverified
|
verified: 2026-10-18
|
||||||
verified: 2026-08-28
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Gitea Data Persistence
|
# Gitea Data Persistence
|
||||||
|
|
||||||
All data lives on host bind mounts under `/opt/gitea/data/`. Containers are ephemeral. Quadlet stops remove the container (`podman run --rm --replace`). The next start recreates it. Data survives.
|
All data lives on host bind mounts under `/home/dank/Containers/gitea/` (fleet storage standard since 2026-09-01; quadlet units re-pointed from the old `/opt/gitea/data/` tree, which lingers on disk as a leftover — never write to it). Containers are ephemeral. Quadlet stops remove the container (`podman run --rm --replace`). The next start recreates it. Data survives.
|
||||||
|
|
||||||
## Volume Layout
|
## Volume Layout
|
||||||
|
|
||||||
| Host Path | Container Mount | Contents |
|
| Host Path | Container Mount | Contents |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `/opt/gitea/data/gitea-gitea/` | `/data` | Git repositories, avatars, attachments, LFS objects, `app.ini` |
|
| `/home/dank/Containers/gitea/data/` | `/data` (gitea-server) | Git repositories, avatars, attachments, LFS objects, `app.ini` |
|
||||||
| `/opt/gitea/data/gitea-postgres/` | `/var/lib/postgresql/data` | PostgreSQL WAL, tables, indexes |
|
| `/home/dank/Containers/gitea/postgres/` | `/var/lib/postgresql/data` (gitea-postgres) | PostgreSQL WAL, tables, indexes |
|
||||||
|
|
||||||
## Ownership
|
## Ownership
|
||||||
|
|
||||||
@@ -37,7 +36,7 @@ podman exec --user 1000 gitea-server sed -i 's/old/new/' /data/gitea/conf/app.in
|
|||||||
Tar the entire data directory. This captures Gitea repos and PostgreSQL data in one archive.
|
Tar the entire data directory. This captures Gitea repos and PostgreSQL data in one archive.
|
||||||
|
|
||||||
```
|
```
|
||||||
tar czf gitea-backup-$(date +%F).tar.gz -C /opt/gitea data/
|
tar czf gitea-backup-$(date +%F).tar.gz -C /home/dank/Containers/gitea data/ postgres/
|
||||||
```
|
```
|
||||||
|
|
||||||
### PostgreSQL-only backup
|
### PostgreSQL-only backup
|
||||||
@@ -48,17 +47,17 @@ Use `pg_dump` for a portable SQL dump. Useful for restoring to a different Postg
|
|||||||
podman exec -e PGPASSWORD="$GITEA_DB_PASSWORD" gitea-postgres pg_dump -U gitea gitea > gitea-db-$(date +%F).sql
|
podman exec -e PGPASSWORD="$GITEA_DB_PASSWORD" gitea-postgres pg_dump -U gitea gitea > gitea-db-$(date +%F).sql
|
||||||
```
|
```
|
||||||
|
|
||||||
Set `PGPASSWORD` from `/opt/gitea/.env` (mode 0600).
|
Set `PGPASSWORD` from `/home/dank/Containers/gitea/env` (mode 0600, `GITEA_DB_PASSWORD`).
|
||||||
|
|
||||||
### Restore procedure
|
### Restore procedure
|
||||||
|
|
||||||
1. Stop the stack: `systemctl --user stop gitea-server gitea-postgres`
|
1. Stop the stack: `systemctl --user stop gitea-server gitea-postgres`
|
||||||
2. Restore data: `tar xzf backup.tar.gz -C /opt/gitea/`
|
2. Restore data: `tar xzf backup.tar.gz -C /home/dank/Containers/gitea/`
|
||||||
3. Start the stack: `systemctl --user start gitea-postgres gitea-server`
|
3. Start the stack: `systemctl --user start gitea-postgres gitea-server`
|
||||||
|
|
||||||
## Data Growth
|
## Data Growth
|
||||||
|
|
||||||
- Git repositories grow with each commit and push. Monitor with `du -sh /opt/gitea/data/gitea-gitea/git/repositories/`.
|
- Git repositories grow with each commit and push. Monitor with `du -sh /home/dank/Containers/gitea/data/git/repositories/`.
|
||||||
- PostgreSQL WAL files accumulate. VACUUM via `podman exec gitea-postgres psql -U gitea -c "VACUUM;"`.
|
- PostgreSQL WAL files accumulate. VACUUM via `podman exec gitea-postgres psql -U gitea -c "VACUUM;"`.
|
||||||
- Gitea's log files grow with usage.
|
- Gitea's log files grow with usage.
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
# Gitea on dankclaw
|
# Gitea on dankclaw
|
||||||
|
|
||||||
Private Git hosting on dankclaw. Three quadlet-managed containers in the rootless podman session of user `dank`: Gitea, PostgreSQL, Caddy.
|
Private Git hosting on dankclaw. Two quadlet-managed containers in the rootless podman session of user `dank`: Gitea and PostgreSQL, sharing a dedicated network unit. The former `gitea-caddy` container is **retired** — the canonical fleet Caddy (`caddy.service`, see [/caddy/index.md](/caddy/index.md)) fronts `gitea.franksdank.cloud`; do not recreate the retired unit.
|
||||||
|
|
||||||
**Host:** dankclaw (71.227.227.172)
|
**Host:** dankclaw (192.168.0.143 LAN)
|
||||||
**Config:** `~/.config/containers/systemd/gitea-{postgres,server,caddy}.container` + `gitea.network`
|
**Config:** `~/.config/containers/systemd/gitea-{postgres,server}.container` + `gitea.network`
|
||||||
**Local access:** `http://dankclaw:3000`
|
**Local access:** `http://dankclaw:3000` (verified 2026-10-18)
|
||||||
**Domain:** `https://gitea.franksdank.cloud` (DNS pending)
|
**Domain:** `https://gitea.franksdank.cloud` (live; served by fleet Caddy, DNS-01 TLS)
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ Private Git hosting on dankclaw. Three quadlet-managed containers in the rootles
|
|||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| `gitea-server` | `gitea-server.service` | 3000 (HTTP), 2222 (SSH) | Git web UI, API, SSH daemon |
|
| `gitea-server` | `gitea-server.service` | 3000 (HTTP), 2222 (SSH) | Git web UI, API, SSH daemon |
|
||||||
| `gitea-postgres` | `gitea-postgres.service` | 5432 (internal) | Database |
|
| `gitea-postgres` | `gitea-postgres.service` | 5432 (internal) | Database |
|
||||||
| `gitea-caddy` | `gitea-caddy.service` | 80, 443 | Reverse proxy, auto-TLS |
|
| (network) | `gitea-network.service` | — | quadlet `gitea.network` bring-up |
|
||||||
|
|
||||||
The containers share the private network `systemd-gitea` (quadlet `gitea.network`, DNS enabled). The automatic `podman` default network has DNS disabled; do not run the stack on it.
|
The containers share the private network `systemd-gitea` (quadlet `gitea.network`, DNS enabled). The automatic `podman` default network has DNS disabled; do not run the stack on it.
|
||||||
|
|
||||||
@@ -23,21 +23,21 @@ All commands run as `dank` on dankclaw.
|
|||||||
|
|
||||||
| Action | Command |
|
| Action | Command |
|
||||||
|---|---|
|
|---|---|
|
||||||
| Start all | `systemctl --user start gitea-postgres gitea-server gitea-caddy` |
|
| Start all | `systemctl --user start gitea-postgres gitea-server` |
|
||||||
| Stop all | `systemctl --user stop gitea-caddy gitea-server gitea-postgres` |
|
| Stop all | `systemctl --user stop gitea-server gitea-postgres` |
|
||||||
| Restart Gitea only | `systemctl --user restart gitea-server` |
|
| Restart Gitea only | `systemctl --user restart gitea-server` |
|
||||||
| Follow logs | `podman logs -f gitea-server` or `journalctl --user -u gitea-server -f` |
|
| Follow logs | `podman logs -f gitea-server` or `journalctl --user -u gitea-server -f` |
|
||||||
| Check status | `systemctl --user status gitea-postgres gitea-server gitea-caddy` |
|
| Check status | `systemctl --user status gitea-postgres gitea-server` |
|
||||||
|
|
||||||
## Data Persistence
|
## Data Persistence
|
||||||
|
|
||||||
All data lives on host bind mounts under `/opt/gitea/data/`. Containers are ephemeral. Stopping a quadlet unit removes its container; the next start recreates it. Volumes survive.
|
All data lives on host bind mounts under `/home/dank/Containers/gitea/` (fleet storage standard since 2026-09-01; verified live 2026-10-18). Containers are ephemeral. Stopping a quadlet unit removes its container; the next start recreates it. Volumes survive. The old `/opt/gitea/` tree remains on disk as a leftover — do not use it.
|
||||||
|
|
||||||
| Volume Path | Container Mount | Contents |
|
| Path | Contents |
|
||||||
|---|---|---|
|
|---|---|
|
||||||
| `/opt/gitea/data/gitea-gitea/` | `/data` | Git repositories, app.ini, attachments |
|
| `/home/dank/Containers/gitea/data/` | Git repositories, app.ini, attachments |
|
||||||
| `/opt/gitea/data/gitea-postgres/` | `/var/lib/postgresql/data` | PostgreSQL data files |
|
| `/home/dank/Containers/gitea/postgres/` | PostgreSQL data files |
|
||||||
| `/opt/gitea/data/caddy/data/` | `/root/.local/share/caddy` | Caddy configuration, TLS certs |
|
| `/home/dank/Containers/gitea/env` | EnvironmentFile (mode 0600; `GITEA_DB_PASSWORD`) |
|
||||||
|
|
||||||
See [[data-persistence|data-persistence]] for backup and restore.
|
See [[data-persistence|data-persistence]] for backup and restore.
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ See [[management|management]] for boot persistence details and troubleshooting.
|
|||||||
|
|
||||||
## Repo Copies
|
## Repo Copies
|
||||||
|
|
||||||
The quadlet files, Caddyfile, and `.env.example` are tracked in the `serverAppConfigs` repo under `dankclaw/gitea/`. The live password lives only in `/opt/gitea/.env` on the host (mode 0600).
|
The quadlet files and `.env` templates are tracked in the `serverAppConfigs` deploy repo; the sibling vault page `Infrastructure/Gitea.md` (in `~/Projects/serverAppConfig/serverAppConfigs-docs/`) is the deploy-side source of truth. Secrets live only on the host under `Containers/gitea/` (mode 0600), never in either docs tree.
|
||||||
|
|
||||||
## See Also
|
## See Also
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,7 @@ tags:
|
|||||||
- gitea
|
- gitea
|
||||||
- management
|
- management
|
||||||
- quadlet
|
- quadlet
|
||||||
- unverified
|
verified: 2026-10-18
|
||||||
verified: 2026-08-28
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Gitea Management
|
# Gitea Management
|
||||||
@@ -45,8 +44,8 @@ After editing a quadlet file: run `systemctl --user daemon-reload`, then restart
|
|||||||
| File | Path |
|
| File | Path |
|
||||||
|---|---|
|
|---|---|
|
||||||
| Quadlet units | `~/.config/containers/systemd/gitea-*.container`, `gitea.network` |
|
| Quadlet units | `~/.config/containers/systemd/gitea-*.container`, `gitea.network` |
|
||||||
| Secrets | `/opt/gitea/.env` (mode 0600, `GITEA_DB_PASSWORD`) |
|
| Secrets | `/home/dank/Containers/gitea/env` (mode 0600, `GITEA_DB_PASSWORD`) — quadlet `EnvironmentFile` |
|
||||||
| Gitea app config | `/opt/gitea/data/gitea-gitea/gitea/conf/app.ini` (container-owned, UID 100999) |
|
| Gitea app config | `/home/dank/Containers/gitea/data/gitea/conf/app.ini` (container-owned, UID 100999) |
|
||||||
|
|
||||||
Repo copies: `serverAppConfigs/dankclaw/gitea/` (quadlet files, `.env.example`). Copy edits to the target, then `daemon-reload` + restart.
|
Repo copies: `serverAppConfigs/dankclaw/gitea/` (quadlet files, `.env.example`). Copy edits to the target, then `daemon-reload` + restart.
|
||||||
|
|
||||||
@@ -62,7 +61,7 @@ Gitea handles database migrations automatically on startup. PostgreSQL version b
|
|||||||
|
|
||||||
### Gitea cannot reach the database
|
### Gitea cannot reach the database
|
||||||
|
|
||||||
Check the `[database] HOST` line in `/opt/gitea/data/gitea-gitea/gitea/conf/app.ini`. It must be `gitea-postgres:5432`. app.ini overrides the `DATABASE_HOST` env var.
|
Check the `[database] HOST` line in `/home/dank/Containers/gitea/data/gitea/conf/app.ini`. It must be `gitea-postgres:5432`. app.ini overrides the `DATABASE_HOST` env var.
|
||||||
|
|
||||||
Then check name resolution from the container:
|
Then check name resolution from the container:
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ llama-server -hf ggml-org/gemma-3-1b-it-GGUF
|
|||||||
|
|
||||||
**Defaults**: Listens on `127.0.0.1:8080`. Single slot (one concurrent request).
|
**Defaults**: Listens on `127.0.0.1:8080`. Single slot (one concurrent request).
|
||||||
|
|
||||||
> **System note:** On this network the Pi inference hosts do not use the default port. Pi serves `frank-default-small` (dankserver) and `frank-default-large` (dankclaw), each on port `7770`. The local Ornith host runs on port `8080`. See [Pi Models Configuration](../../pi/models.md).
|
> **System note:** On this network the fleet inference hosts do not use the default port. As of 2026-10 the only llama.cpp endpoint is `frank-zealot` on dankclaw **:7771** (PrismML fork build); `frank-dragoon` (dankclaw :7770, halogen-flash-server) and `frank-archon` (dankserver :7770, radiance) are different engines — see [System hosts](/system/index.md). The pi-era `frank-default-small`/`frank-default-large` llama.cpp pair (each :7770) is retired; [Pi Models Configuration](../../pi/models.md) is a pi-era archive.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user