# Config Page — Session Reference

Created: 2026-07-08
File: `/var/www/ops/config.html`
Domain: `ops.itpropartner.com`

## Page structure (4 cards)

### 1. Versions
Grid of version cards showing software versions. Populated from live API (`data.versions`) with embedded fallbacks:

| Component | Embedded | API-override |
|-----------|----------|-------------|
| Hermes | v0.18.0 | data.versions.hermes |
| Caddy | v2.11.4 | data.versions.caddy |
| Python | 3.13.5 | data.versions.python |
| Docker | 26.1.5 | data.versions.docker |
| OS | Debian 13.5 | data.versions.os |

### 2. Active Config Files
Table of key config files that are part of the hermetic backup:

| Path | Size | Modified | Backed Up |
|------|------|----------|-----------|
| /etc/caddy/Caddyfile | 2.8 KB | 2026-07-08 | ✓ |
| /root/.hermes/config.yaml | 3.3 KB | 2026-07-08 | ✓ |
| /etc/systemd/system/hermes-assistant.service | 295 B | 2026-07-08 | ✓ |
| /etc/systemd/system/hermes-browser.service | 495 B | 2026-07-07 | ✓ |
| /root/.hermes/scripts/ | 592 KB (51 files) | — | ✓ |

All backed up via `hermes-backup.sh` → Wasabi S3 (`hermes-vps-backups`).

### 3. Environment
Grid of system attributes (hostname, OS, kernel, uptime, CPU, memory, disk, Docker).

### 4. Infrastructure Diagram
Link card pointing to `/dependency-diagram.html` (teal-accented) — placeholder for future dependency diagram.

## Static data + API fallback architecture

The config page is the first ops portal page to use **embedded static data** rather than relying solely on the API. Rationale:

- File system stats (size, modified time, backup status) are not provided by the ops-data-collector
- These change infrequently — rebuilding the HTML is acceptable
- The page works fully when the API is offline (embedded data is always shown)

**Render sequence:**
1. Embedded `CONFIG_FILES` array → config files table (immediate)
2. Embedded `ENV_DATA` object → environment grid (immediate)
3. Embedded `VERSIONS_EMBEDDED` object → version cards (immediate)
4. API fetch → overrides version cards with live data (async)
5. API failure → embedded versions remain, non-fatal

## Embedded data categories for this page

### CONFIG_FILES (static, from file system stats)
- path, size, size_bytes, modified (ISO timestamp), backed_up (bool), backup_desc

### ENV_DATA (static, from live system)
- hostname, os, kernel, uptime, cpu, memory, disk, docker, hermes_path

### VERSIONS_EMBEDDED (fallback from live system)
- hermes, caddy, python, os, docker

## Design details

- File paths rendered in monospace (`<span class="mono">`)
- Backup status badges: green ✓ Yes / red ✗ No
- Version cards centered with uppercase labels, large value text
- Environment grid: 1-col mobile → 2-col tablet → 3-col desktop
- Shared stylesheet (`/css/ops.css`) referenced — no inline duplication
- Shared nav injected from `/nav.html`
- File mode fixed to 644 after creation

## Rebuilding

To regenerate this page with updated embedded data:
1. SSH into core
2. Gather current file stats (size, timestamps) via `stat`
3. Gather current system info (uptime, versions, disk, memory) via `df -h`, `free -h`, `hostname`, `cat /proc/uptime`
4. Update the `CONFIG_FILES`, `ENV_DATA`, and `VERSIONS_EMBEDDED` objects in the HTML
5. `chmod 644 /var/www/ops/config.html`
