Proteus · Fleet Infrastructure

N5 — capacity & service inventory

Minisforum N5 · TrueNAS SCALE 25.10
Ryzen 7 255 · 16c/32t · 16 GB RAM
tailnet 100.100.91.47 · LAN 192.168.2.160
snapshot 2026-07-05 10:43 · up 4h13m
Point-in-time snapshot, not a live feed — the durable version is the deferred Cycle-1 dashboard (pantheon-dashboard + Supabase health table). Per-service memory is process RSS (Docker socket is root-gated over tailnet SSH), so sched-mcp and Plex fall below the top-RSS cutoff and show as <67 MB. Numbers are the box's real state at capture.
RAM available
4.2 GiB
of 13 usable · 9.3 used  above 2G gate
Swap in use
0 B
of 8 GiB  ↓ from 665 MiB Jul-3
CPU load (1m)
0.13
16 cores · ~0.8%  idle
ZFS pools
4 / 4
all ONLINE · max cap 34%  healthy

Memory budget

the sole bottleneck — CPU & disk have ample headroom
ARC 4.3G
OBS 1.1G
SVC 1.2G
MEDIA
SYSTEM
cache 2.2G
FREE 4.2G
ZFS ARC (cap 6.0G) Obs keystone Fleet services Media TrueNAS system buff/cache available

Running services & MCPs

bar = RSS relative to docling (933 MB, top consumer)
Service / processPortMemory (RSS)MBNote
Fleet services — proteus ≈1.2 GiB · deploy/n5/
docling-serve:5001
933 doc-processing MCP — largest single app
openbao (bao):8200
106 keystone · do-not-touch
apollo-hub (bun):8788
102 bun server.js
media-manager:8765
92 dashboard — jellyfin-removal target
sched-mcp:8090
<67 scheduling MCP · N5 pilot
yt-transcript-worker
0 not running · staged #242
Observability keystone ≈1.1 GiB · do-not-touch
victoria-metrics:8428
343 TSDB · 12-mo retention
alloy:12345
208 Grafana Alloy collector
netdatalocal
154 host metrics agent
grafana:3000
120 dashboards
loki:3100
93 log store
victoria-logs:9428
<67 log TSDB
Media ≈0.7 GiB · Plex-only
Sonarr:8989
355 TV automation
Radarr:7878
154 film automation
Plex Media Server:32400
<67 idle · direct-play, no transcode
Jellyfin:8096
off killed — port absent ✓
TrueNAS system — not fleet-owned ≈1.3 GiB + ARC
middlewared
~1100 asyncio 626 + zettarepl 208 + workers
dockerd
75 container runtime
tailscaled
75 tailnet

Storage pools

zpool · all ONLINE, status clean
PoolSizeAllocFreeCapacityRole
tank7.27 T1.40 T5.87 T
19%
backups gold-tier (immutable)
media3.62 T1.24 T2.39 T
34%
movies/TV · single-disk SMR = SPOF (#198)
fast928 G9.99 G918 G
1%
NVMe · container datasets
boot-pool57.5 G6.46 G51.0 G
11%
OS

Bottleneck read

  • ConstraintRAM only. 4.2 GiB free above a 2 GiB deploy-halt gate → ~2.2 GiB real headroom.
  • Not itCPU idle (0.8% of 16c); pools ≤34%; swap 0.
  • ARC4.26 GiB, hard-capped at 6 GiB — tuned, won't balloon.
  • Heaviestdocling-serve 933 MB · obs stack aggregate ~1.1 GiB.
  • Deferredn8n + Grafana-heavy work gated on 16→32 GB upgrade — can't fit today.

Operating cost

  • HardwareOwned (capex) — no per-service meter. Power draw not instrumented.
  • Groq APIUsage-billed (Whisper). $0 so far — transcript worker not live.
  • TailscaleScoped OAuth client — fabric plan (#165).
  • VPSHostinger n8n billed separately — not on this box.
  • Surfaced?Nowhere. No cost view exists across any surface.

How N5 is surfaced today

the gap this snapshot fills by hand

Observed live

  • ZFS pool health + capacity — Talos truenas-n5 probe
  • Service identity/ownership — fleet_services SSOT
  • Deploy intent — deploy/n5/ git dir
  • In-box metrics/logs — local Grafana + Victoria (on-box only)

No live surface

  • RAM / swap headroom — prose snapshot only, re-measured by hand
  • Per-container memory / CPU attribution
  • MCP liveness on N5 (docling, sched-mcp)
  • Cost / power draw — tracked nowhere
  • Consolidated operator pane — designed (Cycle 1), unbuilt