Docs: system pages realigned to live ground truth; sibling-vault overlap census

Census against serverAppConfigs-docs + read-only ssh probes on both boxes
(2026-10-18). Corrections to OURS, flags only for THEIRS:

- Hardware drift: RTX 3090 moved dankserver->dankclaw 2026-09; dankserver
  now 2x Radeon AI PRO R9700 (Ryzen 7 7700X stays), 246 GiB RAM, no swap;
  dankclaw 121 GiB RAM + 64 GiB swap. Served: frank-archon radiance TP=2
  (:7770 dankserver), frank-dragoon halogen NATIVE v2 (:7770 dankclaw
  iGPU), frank-zealot llama.cpp PrismML Ternary-Bonsai-2-27B PQ2_0
  (:7771 dankclaw, 3090). Kernel 7.0.0-38 both; dankclaw :7770 no auth.
- Gitea: gitea-caddy quadlet retired (fleet Caddy fronts the domain);
  data tree moved to /home/dank/Containers/gitea/ (2026-09-01 standard),
  /opt/gitea is a do-not-use leftover; LAN IP + live domain.
- pi-era pages (core/settings, pi/models + role tables) demarcated as
  ARCHIVE with banners; llama-cpp fleet note modernized.
- AGENTS.md machine-facts table corrected (it still routed prod warnings
  at frank-default-large).

Their-side staleness flagged in the changelog entry for the operator,
not edited: OMP Harness thresholdPercent 70 (live is 95), Ubuntu 24.04
OS table, 2026-09-03 stack mapping, superseded pi-KB backlink.

Refs #5
This commit is contained in:
Frank
2026-10-18 03:39:56 -07:00
parent 72a3dbbe08
commit ae82aa00e4
12 changed files with 151 additions and 123 deletions
+8 -2
View File
@@ -1,12 +1,18 @@
# 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
* [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.
* [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
+10
View File
@@ -11,6 +11,16 @@ timestamp: 2026-08-28
# Bundle Change Log
## 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.
+7 -3
View File
@@ -1,8 +1,12 @@
# Pi Configuration
Documentation for the pi coding agent installation on ](../system/index.md).
Everything here is configured locally on the workstation; the LLM providers are the
two llama.cpp servers (Dankserver, Dankclaw).
> **Archive note (2026-10-18).** Most pages in this directory document the retired
> **pi** harness (settings.json / models.json, `frank-default-*` endpoints, verified
> 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
+45 -49
View File
@@ -1,83 +1,79 @@
---
type: reference
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:
- network
- llamacpp
- inference
- server
- comfyui
- unverified
generated:
by: chief-designer/agent
at: 2026-08-26T00:00:00Z
verified: 2026-08-28
verified: 2026-10-18
---
# 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
| Property | Value |
|----------|-------|
| **Hostname** | dankclaw |
| **IP Address** | 192.168.0.143 |
| **Port** | 7770 |
| **Base URL** | `http://192.168.0.143:7770/v1` |
| **API** | OpenAI-compatible completions |
| **Authentication** | API key configured |
| **IP Address** | 192.168.0.143 (LAN) |
| **Auth** | none required on :7770 (verified 2026-10-18) |
## Models
## Inference Services
| Model ID | Context Window | Reasoning | Input Types |
|----------|---------------|-----------|-------------|
| `frank-default-large` | 262,144 tokens | Yes | Text, *Image* (unverified) |
| Model ID | Unit | Endpoint | Engine / weights |
|----------|------|----------|------------------|
| `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
### llama.cpp
| Property | Value |
|----------|-------|
| **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.*
Harness-side context windows (`agent/models.yml`): dragoon 155,648,
zealot 200,704 per slot. The models.yml display labels "(dankclaw-gpu)" /
"(dankclaw-3090)" predate naming cleanup; the hardware column above is
current. Subagent roles `scout`, `sonic`, `designer`, `librarian`,
`security-reviewer` route to frank-zealot; `reviewer`/`task` run on
frank-archon (Dankserver).
```bash
# Health check
curl http://192.168.0.143:7770/health
# 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}'
curl http://192.168.0.143:7770/v1/models # dragoon
curl http://192.168.0.143:7771/v1/models # zealot
```
## 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
- [[models|models]] — Provider definitions
- [[dankserver|dankserver]] — Primary server
- [[dankserver|dankserver]] — the main-model box (frank-archon)
- [/tools/gitea/index.md](/tools/gitea/index.md) — Gitea stack on this host
- [[network|network]] — Network topology
+36 -22
View File
@@ -1,22 +1,24 @@
---
type: reference
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:
- network
- llamacpp
- inference
- server
- unverified
generated:
by: chief-designer/agent
verified: 2026-08-28
verified: 2026-10-18
status: stable
---
# 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
@@ -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` |
| **API** | OpenAI-compatible completions |
| **Authentication** | None |
| **Systemd unit** | `frank-archon.service` (root) |
## Model
| Property | Value |
|----------|-------|
| **Model ID** | `frank-default-small` |
| **Context Window** | 163,840 tokens |
| **Reasoning** | Supported |
| **Input Types** | Text, *Image* (unverified) |
| **Model ID** | `frank-archon` (display name `frank-archon`) |
| **Weights** | Qwen3.8-Flash-Next, radiance iq4r (publisher build) |
| **Engine** | radiance, tensor-parallel 2 across both R9700s |
| **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
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
# Health check
@@ -49,27 +56,34 @@ curl http://192.168.0.235:7770/health
# Quick test
curl http://192.168.0.235:7770/v1/chat/completions \
-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 |
|----------|-------|
| **CPU** | AMD Ryzen 7 7700X (8C/16T, Raphael) |
| **GPU** | NVIDIA GeForce RTX 3090 (24 GiB VRAM, EVGA) |
| **RAM** | 60 GiB |
| **Swap** | 64 GiB (/swapfile) |
| **Storage** | Kingston SNV3S1000G NVMe (931.5 GB) + md0 RAID (6×18.2T Toshiba, /mnt/entropy, 91T) |
| **OS** | Ubuntu 26.04 LTS, kernel 7.0.0-30-generic |
| **NVIDIA Driver** | 595.84 |
| **CPU** | AMD Ryzen 7 7700X (8C/16T, Raphael iGPU on board) |
| **GPU** | 2× AMD Radeon AI PRO R9700 (Navi 48, 32 GiB each) |
| **RAM** | 246 GiB |
| **Swap** | effectively none (~0.1 GiB) — the 64 GiB swapfile is on Dankclaw, not here |
| **Storage** | 7× 18.2 TB HDD + 1.8 TB NVMe (layout owned by the deploy repo) |
| **OS** | Ubuntu 26.04.1 LTS, kernel 7.0.0-38-generic |
## 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
- [[models|models]] — Provider definitions
- [[dankclaw|dankclaw]] — Secondary server
- [[dankclaw|dankclaw]] — the other inference box (dragoon + zealot)
- [[network|network]] — Network topology
- [/pi/statusline.md](/pi/statusline.md) — where these models surface in the TUI
+5 -5
View File
@@ -11,8 +11,8 @@ Dankclaw are the inference servers it talks to.
## 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.
- [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.
- [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 + 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
@@ -26,8 +26,8 @@ graph TB
end
subgraph Network[192.168.0.0/24]
E[dankserver<br/>192.168.0.235:7770<br/>frank-default-small]
F[dankclaw<br/>192.168.0.143:7770<br/>frank-default-large]
E[dankserver<br/>192.168.0.235:7770<br/>frank-archon]
F[dankclaw<br/>192.168.0.143:7770 dragoon<br/>:7771 zealot]
end
D --> E
@@ -42,7 +42,7 @@ graph TB
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.
* **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
+4 -5
View File
@@ -5,13 +5,12 @@ description: Gitea container architecture, network topology, and Caddy reverse p
tags:
- gitea
- architecture
- unverified
verified: 2026-08-28
verified: 2026-10-18
---
# 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
@@ -63,10 +62,10 @@ Key environment variables:
- `DATABASE_HOST=gitea-postgres` (network DNS)
- `DATABASE_NAME=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`
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
+9 -10
View File
@@ -1,24 +1,23 @@
---
type: reference
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:
- gitea
- data
- unverified
verified: 2026-08-28
verified: 2026-10-18
---
# 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
| Host Path | Container Mount | Contents |
|---|---|---|
| `/opt/gitea/data/gitea-gitea/` | `/data` | 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/data/` | `/data` (gitea-server) | Git repositories, avatars, attachments, LFS objects, `app.ini` |
| `/home/dank/Containers/gitea/postgres/` | `/var/lib/postgresql/data` (gitea-postgres) | PostgreSQL WAL, tables, indexes |
## 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 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
@@ -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
```
Set `PGPASSWORD` from `/opt/gitea/.env` (mode 0600).
Set `PGPASSWORD` from `/home/dank/Containers/gitea/env` (mode 0600, `GITEA_DB_PASSWORD`).
### Restore procedure
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`
## 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;"`.
- Gitea's log files grow with usage.
+16 -16
View File
@@ -1,11 +1,11 @@
# 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)
**Config:** `~/.config/containers/systemd/gitea-{postgres,server,caddy}.container` + `gitea.network`
**Local access:** `http://dankclaw:3000`
**Domain:** `https://gitea.franksdank.cloud` (DNS pending)
**Host:** dankclaw (192.168.0.143 LAN)
**Config:** `~/.config/containers/systemd/gitea-{postgres,server}.container` + `gitea.network`
**Local access:** `http://dankclaw:3000` (verified 2026-10-18)
**Domain:** `https://gitea.franksdank.cloud` (live; served by fleet Caddy, DNS-01 TLS)
## 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-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.
@@ -23,21 +23,21 @@ All commands run as `dank` on dankclaw.
| Action | Command |
|---|---|
| Start all | `systemctl --user start gitea-postgres gitea-server gitea-caddy` |
| Stop all | `systemctl --user stop gitea-caddy gitea-server gitea-postgres` |
| Start all | `systemctl --user start gitea-postgres gitea-server` |
| Stop all | `systemctl --user stop gitea-server gitea-postgres` |
| Restart Gitea only | `systemctl --user restart gitea-server` |
| 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
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 |
|---|---|---|
| `/opt/gitea/data/gitea-gitea/` | `/data` | Git repositories, app.ini, attachments |
| `/opt/gitea/data/gitea-postgres/` | `/var/lib/postgresql/data` | PostgreSQL data files |
| `/opt/gitea/data/caddy/data/` | `/root/.local/share/caddy` | Caddy configuration, TLS certs |
| Path | Contents |
|---|---|
| `/home/dank/Containers/gitea/data/` | Git repositories, app.ini, attachments |
| `/home/dank/Containers/gitea/postgres/` | PostgreSQL data files |
| `/home/dank/Containers/gitea/env` | EnvironmentFile (mode 0600; `GITEA_DB_PASSWORD`) |
See [[data-persistence|data-persistence]] for backup and restore.
@@ -49,7 +49,7 @@ See [[management|management]] for boot persistence details and troubleshooting.
## 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
+4 -5
View File
@@ -6,8 +6,7 @@ tags:
- gitea
- management
- quadlet
- unverified
verified: 2026-08-28
verified: 2026-10-18
---
# Gitea Management
@@ -45,8 +44,8 @@ After editing a quadlet file: run `systemctl --user daemon-reload`, then restart
| File | Path |
|---|---|
| Quadlet units | `~/.config/containers/systemd/gitea-*.container`, `gitea.network` |
| Secrets | `/opt/gitea/.env` (mode 0600, `GITEA_DB_PASSWORD`) |
| Gitea app config | `/opt/gitea/data/gitea-gitea/gitea/conf/app.ini` (container-owned, UID 100999) |
| Secrets | `/home/dank/Containers/gitea/env` (mode 0600, `GITEA_DB_PASSWORD`) — quadlet `EnvironmentFile` |
| 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.
@@ -62,7 +61,7 @@ Gitea handles database migrations automatically on startup. PostgreSQL version b
### 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:
+1 -1
View File
@@ -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).
> **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.
---