diff --git a/omp-docs/system/dankware/displays.md b/omp-docs/system/dankware/displays.md deleted file mode 100644 index e724b92..0000000 --- a/omp-docs/system/dankware/displays.md +++ /dev/null @@ -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 diff --git a/omp-docs/system/dankware/hardware.md b/omp-docs/system/dankware/hardware.md deleted file mode 100644 index 279ed74..0000000 --- a/omp-docs/system/dankware/hardware.md +++ /dev/null @@ -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) -``` diff --git a/omp-docs/system/dankware/index.md b/omp-docs/system/dankware/index.md deleted file mode 100644 index 6acbb9b..0000000 --- a/omp-docs/system/dankware/index.md +++ /dev/null @@ -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. diff --git a/omp-docs/system/dankware/network.md b/omp-docs/system/dankware/network.md deleted file mode 100644 index b03fd57..0000000 --- a/omp-docs/system/dankware/network.md +++ /dev/null @@ -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 diff --git a/omp-docs/system/index.md b/omp-docs/system/index.md index a006c22..72f0bab 100644 --- a/omp-docs/system/index.md +++ b/omp-docs/system/index.md @@ -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. diff --git a/omp-docs/system/network.md b/omp-docs/system/network.md new file mode 100644 index 0000000..6f4ca87 --- /dev/null +++ b/omp-docs/system/network.md @@ -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 "" ""; 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 "" +nmcli connection up "" +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 diff --git a/omp-docs/tools/niri/displays.md b/omp-docs/tools/niri/displays.md new file mode 100644 index 0000000..69a44fa --- /dev/null +++ b/omp-docs/tools/niri/displays.md @@ -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` diff --git a/omp-docs/tools/niri/index.md b/omp-docs/tools/niri/index.md index bb24054..0f683db 100644 --- a/omp-docs/tools/niri/index.md +++ b/omp-docs/tools/niri/index.md @@ -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