docs: distill the retired workstation's KB pages into general pages

Frank's call: no per-host graveyard. The four /system/dankware/ pages carried
two pieces of knowledge that outlive the box, and one that does not.

Distilled:
- omp-docs/system/network.md (new) — LAN topology plus the multi-link resolver
  law: a client with two +DefaultRoute links flaps its DNS, and the fix is a
  static per-connection resolver, not resolved.conf. Keeps the
  flush-caches-loop verification, because one successful dig proves nothing.
- omp-docs/tools/niri/displays.md (new) — the multi-monitor rig: portrait
  transforms, absolute positions, auto-placed third panel, the iGPU
  render-node pin, and the three failure modes (duplicate output blocks,
  positions that do not reflow, a mode the panel cannot drive).

Dropped: the machine's own spec sheet (CPU/GPU/PCI/NVMe inventory for a box
Frank sold) and its quick-facts table. The OS and userspace facts it repeated
already live in tools/cachyos.md.

omp-docs/system/dankware/ moved to .AGENTTRASH/20260928-retired-workstation/
(not deleted; git history holds it too). system/index.md and the niri index
repoint; niri's [[displays]] wikilink now resolves to the new page instead of
the trashed one. kb-lint: 0 violations.
This commit is contained in:
Frank
2026-09-28 16:15:57 -07:00
parent 4e3d4d20e9
commit f1e0b6583d
8 changed files with 231 additions and 378 deletions
-123
View File
@@ -1,123 +0,0 @@
---
type: reference
title: Display Configuration
description: Three-monitor display setup on dankware — dual Samsung Odyssey G75F (portrait) and internal BOE panel.
tags:
- display
- monitors
- niri
- unverified
generated:
by: chief-designer/agent
at: 2026-08-26T00:00:00Z
status: stable
verified: 2026-08-28
# Display Configuration — dankware
Three displays in a horizontal arrangement. Two external Samsung Odyssey G75F monitors in portrait orientation flank the internal laptop panel.
---
## Layout
```
┌──────────────┬──────────────┬──────────────┐
│ │ │ │
│ DP-1 │ DP-3 │ eDP-1 │
│ Samsung │ Samsung │ BOE │
│ 1920x1200 │ 1920x1200 │ 2560x1600 │
│ Portrait │ Portrait │ Landscape │
│ 90° rotate │ 270° rotate │ 1.5x scale │
│ │ │ │
└──────────────┴──────────────┴──────────────┘
x=0,0 x=1200,0 auto-placed
```
---
## Display Specifications
### DP-1 — Samsung Odyssey G75F (Left)
| Property | Value |
|----------|-------|
| **Make** | Samsung Electric Company |
| **Model** | Odyssey G75F HNTY601056 |
| **Resolution** | 1920x1200 @ 59.95 Hz (preferred) |
| **Transform** | 90° (portrait) |
| **Position** | x=0, y=0 |
| **Scale** | 1.0 |
### DP-3 — Samsung Odyssey G75F (Center)
| Property | Value |
|----------|-------|
| **Make** | PNP(XYM) |
| **Model** | PM1601 |
| **Resolution** | 1920x1200 @ 59.95 Hz (preferred) |
| **Transform** | 270° (portrait) |
| **Position** | x=1200, y=0 |
| **Scale** | 1.0 |
### eDP-1 — Internal BOE Panel (Right)
| Property | Value |
|----------|-------|
| **Make** | BOE |
| **Model** | 0x0C06 |
| **Resolution** | 2560x1600 @ 240 Hz (preferred) |
| **Transform** | normal (landscape) |
| **Position** | auto-placed |
| **Scale** | 1.5 |
| **Physical Size** | 340x220 mm |
---
## Niri Configuration
**File:** `~/.config/niri/cfg/display.kdl`
```kdl
output "Samsung Electric Company Odyssey G75F HNTY601056" {
mode "3840x2160@60"
scale 1
transform "normal"
position x=0 y=0
}
output "DP-1" {
transform "90"
position x=0 y=0
}
output "DP-3" {
transform "270"
position x=1200 y=0
}
output "eDP-1" {
// no position - auto-placed to the right of DP-* outputs
}
```
---
## GPU Assignment
The Intel Arc iGPU handles display output. The render node is explicitly assigned:
```kdl
// In ~/.config/niri/cfg/misc.kdl
environment {
render-node "/dev/dri/renderD129" // Intel Arc iGPU
}
```
The NVIDIA RTX 4070 Mobile is available for compute tasks but does not drive displays.
---
## See Also
- [niri](../../tools/niri/index.md) — Compositor configuration + full niri config breakdown
-106
View File
@@ -1,106 +0,0 @@
---
type: reference
title: Hardware Specifications
description: Complete hardware specifications for dankware — Alienware m16 R2.
tags:
- hardware
- alienware
- specifications
- unverified
generated:
by: chief-designer/agent
at: 2026-08-26T00:00:00Z
verified: 2026-08-28
---
# Hardware Specifications — dankware
## System
| Property | Value |
|----------|-------|
| **Manufacturer** | Alienware |
| **Model** | Alienware m16 R2 |
| **BIOS Vendor** | Alienware |
## Processor
| Property | Value |
|----------|-------|
| **Model** | Intel Core Ultra 7 155H |
| **Architecture** | Meteor Lake (6p+8e cores) |
| **Threads** | 22 |
| **Architecture** | x86_64 |
## Graphics
| Device | PCI Address | Details |
|--------|-------------|---------|
| **Intel Arc** | `00:02.0` | Meteor Lake-P [Intel Arc Graphics] (rev 08) |
| **NVIDIA RTX 4070 Mobile** | `01:00.0` | AD106M [GeForce RTX 4070 Max-Q / Mobile] (rev a1) |
| **NVIDIA Audio** | `01:00.1` | AD106M High Definition Audio Controller |
**NVIDIA Driver:** 610.57.04
## Accelerators
| Device | PCI Address | Details |
|--------|-------------|---------|
| **NPU** | `00:0b.0` | Core Ultra 200H/200V Series NPU (rev 04) |
| **GNNA** | `00:08.0` | Meteor Lake-P Gaussian & Neural-Network Accelerator |
| **DTT** | `00:04.0` | Dynamic Tuning Technology |
## Memory
| Type | Size | Notes |
|------|------|-------|
| **RAM** | 62 GiB | System memory |
| **Swap** | 62 GiB | zram0 (compressed RAM swap) |
## Storage
| Device | Model | Size | Mount |
| **nvme0n1** | Samsung 990 EVO (2TB) | 1.8 TB | LUKS encrypted, `/` (4G boot, 1.8T root) |
**Root filesystem:** 1.8 TB total, ~1.2 TB available (~39% used).
## USB and Thunderbolt
| Device | PCI Address | Details |
|--------|-------------|---------|
| **USB xHCI** | `00:0d.0` | Core Ultra 200 Series USB xHCI |
| **Thunderbolt DMA** | `00:0d.3` | Core Ultra 200 Series Thunderbolt DMA1 |
| **USB 3.2** | `00:14.0` | Meteor Lake-P USB 3.2 Gen 2x1 xHCI |
## Network
| Device | Details |
| **Wi-Fi** | wlan0 — Intel Wi-Fi 7 BE202 (AX1775*) — connected to FRANKFI-5G (192.168.0.12/24) |
| **USB Ethernet** | enp0s13f0u1u1 — no carrier |
| **Built-in Ethernet** | enp47s0 (Killer E3000 2.5GbE) — UP, 192.168.0.226/24 |
## Other
| Device | PCI Address | Details |
|--------|-------------|---------|
| **Audio** | `00:1f.3` | Meteor Lake-P HD Audio Controller |
| **Card Reader** | `2e:00.0` | Realtek RTS525A PCIe Card Reader |
| **Sensor Hub** | `00:12.0` | Meteor Lake-P Integrated Sensor Hub |
| **CSME HECI** | `00:16.0` | Meteor Lake-P CSME HECI |
| **SMBus** | `00:1f.4` | Meteor Lake-P SMBus Controller |
---
## PCI Summary
```
├── Intel Host Bridge/DRAM (00:00.0)
├── Intel Arc Graphics (00:02.0) ──── iGPU
├── NVIDIA RTX 4070 Mobile (01:00.0) ── dGPU
├── Intel NPU (00:0b.0) ──── AI acceleration
├── Intel GNNA (00:08.0) ─── AI acceleration
├── Samsung NVMe PM9C1a (02:00.0) ── primary SSD (/ + /boot)
├── KIOXIA NVMe BG6 (2d:00.0) ── secondary SSD
├── Killer E3000 2.5GbE (2f:00.0) ── built-in Ethernet
├── Intel Wi-Fi 7 BE202 (30:00.0) ── Wi-Fi
└── Realtek Card Reader (2e:00.0)
```
-86
View File
@@ -1,86 +0,0 @@
# System Overview — dankware
**dankware** is an Alienware m16 R2 laptop. It runs CachyOS Linux with the Niri scrollable-tiling Wayland compositor and Noctalia Shell. It serves as the primary workstation for the Frank Program, running the pi coding agent locally and connecting to remote llama.cpp servers.
---
## Quick Facts
| Property | Value |
|----------|-------|
| **Hostname** | `dankware` |
| **System** | Alienware m16 R2 |
| **OS** | CachyOS (Arch-based rolling) |
| **Kernel** | `linux-cachyos 7.2.0-1` (EEVDF + LTO + AutoFDO + Propeller) |
| **LTS Kernel** | `linux-cachyos-lts 6.18.42-1` |
| **Desktop** | Niri 26.04 (Wayland) |
| **Shell** | Noctalia Shell 4.7.7 |
| **Terminal** | Ghostty 1.3.1 |
| **Shell (CLI)** | zsh (fish also installed) |
| **Display Manager** | SDDM |
| **Bootloader** | GRUB |
| **Init** | systemd (graphical.target) |
---
## Hardware Summary
| Component | Specification |
|-----------|---------------|
| **CPU** | Intel Core Ultra 7 155H (Meteor Lake, 22 threads) |
| **iGPU** | Intel Arc Graphics (Meteor Lake-P) |
| **dGPU** | NVIDIA GeForce RTX 4070 Laptop (AD106M, Max-Q) |
| **NVIDIA Driver** | 610.57.04 |
| **RAM** | 62 GiB |
| **Swap** | 62 GiB (zram0) |
| **Boot Disk** | Samsung 990 EVO (1.8 TB), /boot + LUKS-encrypted / |
| **Secondary Disk** | KIOXIA BG6 (953.9 GB) |
| **Root** | LUKS encrypted, ~1.2 TB available |
---
## Software Stack
### Compositor and Shell
- **Niri 26.04** — Scrollable-tiling Wayland compositor
- **Noctalia Shell 4.7.7** — Desktop shell built with Quickshell (qs 0.0.12)
- **Shelly Notifications** — Notification tray service
### Applications
- **Ghostty 1.3.1** — Terminal emulator
- **Firefox 153.0** — Primary browser
- **Chromium 150.0** — Secondary browser
- **Nautilus 50.2.2** — File manager
- **Neovim 0.12.4** — Text editor
- **Steam 1.0.0.86** — Gaming platform
### Audio
- **PipeWire 1.6.8** — Multimedia router
- **WirePlumber 0.5.15** — Session manager
- **pavucontrol** — Volume control GUI
### Screenshots and Recording
- **grim** — Wayland screenshot utility
- **slurp** — Screen region selector
- **swappy** —Screenshot annotator
- **wl-clipboard 2.3.0** — Wayland clipboard
- **hyprpicker** — Color picker
- **wf-recorder** — Screen recording
### Display Management
- **wlr-randr** — Display configuration utility
See [[hardware|hardware]] for full hardware details.
See [[displays|displays]] for the three-monitor layout.
See [[cachyos|cachyos]] for operating system details.
* [Display Configuration](displays.md) — Three-monitor display setup on dankware — dual Samsung Odyssey G75F (portrait) and internal BOE panel.
* [Hardware Specifications](hardware.md) — Complete hardware specifications for dankware — Alienware m16 R2.
* [Network Interfaces](network.md) — Network configuration for dankware — Wi-Fi, USB Ethernet, and local network topology.
-54
View File
@@ -1,54 +0,0 @@
---
type: reference
title: Network Interfaces
description: Network configuration for dankware — Wi-Fi, USB Ethernet, and local network topology.
tags:
- network
- interfaces
- wifi
- unverified
generated:
by: chief-designer/agent
at: 2026-08-26T00:00:00Z
verified: 2026-08-28
---
# Network Interfaces — dankware
## Active Interfaces
| Interface | Type | Status | Address | Connection |
| `wlan0` | Wi-Fi | Connected | 192.168.0.12/24 | FRANKFI-5G |
| `enp0s13f0u1u1` | USB Ethernet | Down (no carrier) | — | — |
| `enp47s0` | Built-in Ethernet (Killer E3000) | Connected | 192.168.0.226/24 | Wired connection 1 |
| `lo` | Loopback | Connected | 127.0.0.1/8 | lo |
## Network Manager
| Property | Value |
|----------|-------|
| **Tool** | nmcli 1.58.0 |
| **DNS** | systemd-resolved (127.0.0.53) |
| **mDNS** | Enabled (resolve) |
## Local Network
| Host | IP | Service | Port |
| **dankware** | 192.168.0.12 (Wi-Fi) / 192.168.0.226 (Built-in Eth) | This machine | — |
| **dankserver** | 192.168.0.235 | llama.cpp | 7770 |
| **dankclaw** | 192.168.0.143 | llama.cpp | 7770 |
## Services
| Service | Status |
|---------|--------|
| **sshd** | Active |
| **bluetooth** | Active (BlueZ 5.87) |
---
## See Also
- [[dankserver|dankserver]] — Primary llama.cpp server
- [[dankclaw|dankclaw]] — Secondary llama.cpp server
- ](../index.md) — System overview
+6 -8
View File
@@ -1,15 +1,13 @@
# System Documentation
Hardware, operating system, and network documentation for the Frank Program
infrastructure. dankware is the primary workstation; Dankserver and Dankclaw are
the llama.cpp inference servers it talks to.
infrastructure. A client workstation runs the desktop stack; Dankserver and
Dankclaw are the inference servers it talks to.
## Local System
- [System Overview](/system/dankware/index.md) — dankware: Alienware m16 R2 laptop running CachyOS with Niri Wayland.
- [Hardware Specifications](/system/dankware/hardware.md) — CPU, GPU, memory, storage, network controllers, and PCI devices for dankware.
- [Display Configuration](/system/dankware/displays.md) — Three-monitor setup: dual Samsung Odyssey G75F (portrait) plus the internal BOE panel.
- [Network Interfaces](/system/dankware/network.md) — Wi-Fi (Intel BE202), built-in Ethernet (Killer E3000), USB Ethernet, and local network topology.
- [Network](/system/network.md) — LAN topology, and the client-side DNS pinning rule for workstations with both Wi-Fi and Ethernet.
- [Workstation stack](/tools/cachyos.md) — operating system, packages, and userspace; [niri](/tools/niri/index.md) for the compositor and display rig.
## Network Systems
@@ -20,7 +18,7 @@ the llama.cpp inference servers it talks to.
```mermaid
graph TB
subgraph Local[dankware - Alienware m16 R2]
subgraph Local[Workstation - CachyOS + Niri]
A[Niri Wayland]
B[Noctalia Shell]
C[Ghostty Terminal]
@@ -39,7 +37,7 @@ graph TB
A --> B
```
## Related Knowledge Bases (sibling projects on dankware)
## Related Knowledge Bases (sibling project repos)
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.
+97
View File
@@ -0,0 +1,97 @@
---
type: reference
title: Network
description: LAN topology for the fleet and the client-side DNS pinning rule for multi-homed Linux workstations.
tags:
- network
- dns
- systemd-resolved
- workstation
- unverified
verified: 2026-08-28
---
# Network
How the LAN is addressed, which host answers what, and the one DNS rule that
bites every Linux workstation with both Wi-Fi and Ethernet plugged in.
---
## Topology
| Host | IP | Role |
|------|----|------|
| Router | 192.168.0.1 | DHCP; hands out the DNS server to clients |
| Dankclaw | 192.168.0.143 | Pi-hole DNS, Caddy edge, Gitea, large inference model |
| Dankserver | 192.168.0.235 | small inference model |
| Clients | DHCP from 192.168.0.0/24 | workstations, phones |
The router hands clients `192.168.0.143` as their DNS server; Pi-hole answers
every `*.franksdank.cloud` name with the LAN address of the box that serves
it. Names that resolve to the public WAN address time out on the LAN because
the G36 has no NAT loopback — a symptom that looks like "the network is
down" and is not. Full DNS mechanics live in the serverAppConfigs knowledge
base (`Infrastructure/LAN-DNS.md`); this page is the client-side view.
---
## The multi-link resolver rule
**A Linux client with two `+DefaultRoute` links will flap its DNS.**
NetworkManager marks both a wired and a Wi-Fi connection as default routes.
Both get the same DHCP DNS list from the router, and `systemd-resolved`
resolves queries against one "current" resolver *per link*. When the links
disagree — one landed on the Pi-hole address, the other on a DHCP-provided
upstream that answers with the public WAN IP — every lookup can return a
different address, and half of them time out on the LAN.
Enumerate the links and their resolvers before changing anything:
```bash
nmcli -t -f NAME,DEVICE connection show --active # one entry per default link
resolvectl status # per-link "Current DNS Server"
ip -br addr
```
The fix is to pin the LAN resolver **on each connection**, because
`/etc/systemd/resolved.conf`'s `DNS=` is only a per-link fallback and does
not override what the link itself was handed:
```bash
for c in "<wired connection>" "<wifi connection>"; do
nmcli connection modify "$c" ipv4.method auto \
ipv4.dns 192.168.0.143 \
ipv4.ignore-auto-dns yes \
ipv4.ignore-auto-routes no
done
nmcli connection up "<wired connection>"
nmcli connection up "<wifi connection>"
systemctl restart systemd-resolved
```
`method auto` keeps DHCP for address, gateway, and routes; `ignore-auto-dns
yes` makes the static resolver the only one used; `ignore-auto-routes no`
keeps the DHCP routes, so the dual-default traffic path survives.
Verify with a cache-clear loop — the name must return the LAN address on
every run, not on average:
```bash
for i in $(seq 1 10); do resolvectl flush-caches; dig romm.franksdank.cloud +short; done
```
A single successful `dig` proves nothing on a flapping resolver.
---
## Servers
- [Dankserver](/system/dankserver.md) — small inference model
- [Dankclaw](/system/dankclaw.md) — large inference model, DNS, proxy
## See Also
- [System Documentation](/system/index.md) — bundle navigation
- [CachyOS](/tools/cachyos.md) — NetworkManager, systemd-resolved, BlueZ
+126
View File
@@ -0,0 +1,126 @@
---
type: reference
title: Display Configuration
description: Niri output configuration for a multi-monitor desk rig — portrait transforms, position pinning, scale, and iGPU display ownership.
tags:
- niri
- display
- monitors
- rotation
verified: 2026-08-28
---
# Display Configuration
How a multi-monitor desk rig is configured in niri: portrait external panels
flanking a laptop panel, positions pinned by hand, and the integrated GPU kept
as the display owner.
**Config:** `~/.config/niri/cfg/display.kdl`
**Probe:** `wlr-randr` (installed by CachyOS) reports what the compositor
actually committed — connectors, preferred modes, transforms, scale, positions.
---
## The rig
Three outputs in a row: two external monitors rotated to portrait, one
internal laptop panel in landscape at the right.
```
┌──────────────┬──────────────┬──────────────┐
│ │ │ │
│ DP-1 │ DP-3 │ eDP-1 │
│ external │ external │ internal │
│ 1920x1200 │ 1920x1200 │ 2560x1600 │
│ Portrait │ Portrait │ Landscape │
│ 90° rotate │ 270° rotate │ 1.5x scale │
│ │ │ │
└──────────────┴──────────────┴──────────────┘
x=0,0 x=1200,0 auto-placed
```
| Output | Role | Transform | Position | Scale |
|--------|------|-----------|----------|-------|
| `DP-1` | External, left | `90` (portrait) | `x=0 y=0` | 1.0 |
| `DP-3` | External, center | `270` (portrait) | `x=1200 y=0` | 1.0 |
| `eDP-1` | Internal panel | none (landscape) | auto-placed | 1.5 |
The two portrait panels are 1200 px wide after rotation, which is why the
second one starts at `x=1200`. The internal panel declares no position at
all — niri auto-places it to the right of the explicitly positioned outputs.
That is the only reliable way to keep a third panel from landing on top of
the rig when a cable is re-seated.
---
## The config pattern
```kdl
output "DP-1" {
transform "90"
position x=0 y=0
}
output "DP-3" {
transform "270"
position x=1200 y=0
}
output "eDP-1" {
// no position — auto-placed to the right of the DP-* outputs
scale 1.5
}
```
Three rules learned the hard way:
1. **One output, one block.** A second block keyed by the make/model string
(`output "Samsung Electric Company …"`) that also sets `transform` fights
the connector-keyed block. Use the make/model form only to pin a `mode`
for an output whose connector name is unstable across boots, and never
set a transform in both places.
2. **Positions are absolute, not relational.** Niri does not reflow the rig
when one panel is disconnected — a missing output leaves a hole at its
coordinates. Verify with `wlr-randr` after any cable or dock change.
3. **Re-assert rotation after a config reload, then confirm.** A transform
silently reverting to landscape is the usual symptom of a duplicate
output block, not of a failed reload.
Modes must match what the panel reports. Check `wlr-randr` for the preferred
mode before writing a `mode` line; a `mode` the panel cannot drive leaves the
output dark or drops it.
---
## GPU assignment
The integrated GPU drives all display output; the discrete GPU is available
for compute but must not take the outputs. Pin the render node explicitly in
`~/.config/niri/cfg/misc.kdl`:
```kdl
environment {
render-node "/dev/dri/renderD129"
}
```
Without the pin, the session's render node follows probe order and can land
on the discrete GPU — which costs display-linked copies and, on hybrid
graphics laptops, is a common trigger of the suspend/resume deadlock covered
in the sleep-wake investigation report.
---
## Reload
`niri msg action load-config-file` reloads live. Never `SIGHUP` the process
— see [[tips]].
---
## See Also
- [Niri](/tools/niri/index.md) — compositor overview and config layout
- [[tips|tips]] — reload path and other gotchas
- [[cachyos|cachyos]] — operating system, including `wlr-randr`
+2 -1
View File
@@ -85,11 +85,12 @@ Column-based scrollable tiling. Columns are cycled with Mod+Left/Right (or Mod+H
| [[default-bindings|default-bindings.md]] | reference | Default key bindings organized by category |
| [[key-bindings-syntax|key-bindings-syntax.md]] | reference | KDL configuration syntax for key bindings |
| [[tips|tips.md]] | howto | Practical tips for working with niri |
| [[displays|displays.md]] | reference | Multi-monitor display rig: portrait transforms, positions, scale, iGPU display ownership |
---
## See Also
- [[noctalia-shell|noctalia-shell]] — Desktop shell integration
- [[displays|displays]] — Three-monitor setup
- [[displays|displays]] — Multi-monitor desk rig configuration
- [[cachyos|cachyos]] — Operating system