Estimator: Immich peak 3,290 -> 3,983 MB from the 4,000-photo import (R-1147, operator yes 2026-10-18); Immich alone on 8 GB now 'does not fit'
gates / gates (push) Successful in 7m17s

Rebuilt sizing-data.json; data cache-bust v5; SIZING.md table and the pinned test cases moved
with it. Before/after: audits/day-2026-10-18/P6-before-after.md.
This commit is contained in:
2026-10-18 14:36:14 +02:00
parent 3332eb0919
commit 37cb83c166
23 changed files with 285 additions and 15 deletions
@@ -0,0 +1,8 @@
tester-1-d70be4 agent_update:
uploaded signed op to the hub jobs queue
tester-1-d70be4 agent_config_update:
uploaded signed op to the hub jobs queue
demo-felhom-8363b5 agent_update:
uploaded signed op to the hub jobs queue
demo-felhom-8363b5 agent_config_update:
uploaded signed op to the hub jobs queue
@@ -0,0 +1,10 @@
tester-1: felhom-agent 0.159.2 | demo-felhom: felhom-agent 0.159.2 | 12:25:17
Oct 18 14:23:46 felhom felhom-agent[3912599]: time=2026-10-18T14:23:46.774+02:00 level=WARN msg="signedjobs: signed op COMPLETED" job=c9b02a094671155e op=agent_update
Oct 18 14:23:48 felhom felhom-agent[3912599]: time=2026-10-18T14:23:48.727+02:00 level=WARN msg="osupdate: capability probe after the config bundle" ok=75 total=75 degraded=""
Oct 18 14:23:48 felhom felhom-agent[3912599]: time=2026-10-18T14:23:48.728+02:00 level=WARN msg="signedjobs: signed op COMPLETED" job=fa2a707792f561ed op=agent_config_update
Oct 18 14:24:52 felhom felhom-agent[1371657]: time=2026-10-18T14:24:52.767+02:00 level=WARN msg="selfupdate: update committed" version=0.159.2 wrapper=""
Oct 18 14:25:00 demo-felhom felhom-agent[2419165]: time=2026-10-18T14:25:00.552+02:00 level=WARN msg="signedjobs: signed op COMPLETED" job=9d4397117eeed3b9 op=agent_update
Oct 18 14:25:01 demo-felhom felhom-agent[2419165]: time=2026-10-18T14:25:01.930+02:00 level=WARN msg="osupdate: capability probe after the config bundle" ok=75 total=75 degraded=""
Oct 18 14:25:01 demo-felhom felhom-agent[2419165]: time=2026-10-18T14:25:01.930+02:00 level=WARN msg="signedjobs: signed op COMPLETED" job=63f8321055a65cb8 op=agent_config_update
[exited with code 0]
@@ -0,0 +1,23 @@
Oct 18 13:12:26 demo-hp felhom-agent[3566597]: time=2026-10-18T13:12:26.461+02:00 level=INFO msg="backup: space preflight passed" vmid=9201 target=local last_archive_bytes=6916890749 need_bytes=9719855260 avail_bytes=12123615232
Oct 18 13:12:27 demo-hp felhom-agent[3566597]: time=2026-10-18T13:12:27.526+02:00 level=INFO msg="local-api: backup reached snapshotted (app may resume)" vmid=9201 target=local job=backup-9201-1792321945880394998
Oct 18 13:18:22 demo-hp felhom-agent[3566597]: time=2026-10-18T13:18:22.853+02:00 level=INFO msg="janitor: stale-lock sweep deferred — a heavy operation is in flight" busy=backup:local
Oct 18 13:19:59 demo-hp felhom-agent[3566597]: time=2026-10-18T13:19:59.260+02:00 level=INFO msg="backup: completed" vmid=9201 target=local archive=local:backup/vzdump-lxc-9201-2026_10_18-13_12_26.tar.zst size_bytes=6938307162 uncovered_volumes=2
Oct 18 13:19:59 demo-hp felhom-agent[3566597]: time=2026-10-18T13:19:59.260+02:00 level=INFO msg="local-api: backup job complete" vmid=9201 target=local job=backup-9201-1792321945880394998 archive=local:backup/vzdump-lxc-9201-2026_10_18-13_12_26.tar.zst
Oct 18 13:19:59 demo-hp felhom-agent[3566597]: time=2026-10-18T13:19:59.266+02:00 level=INFO msg="local-api: no OS leg after a manual backup — it follows the night's own backup (R-899)" vmid=9201 job=backup-9201-1792321945880394998
== sudo felhom-thin-check lines since the trigger:
0
== sudo lines since the trigger (any helper):
26 COMMAND=/usr/bin/chown
36 COMMAND=/usr/bin/lsblk
98 COMMAND=/usr/bin/lxc-info
78 COMMAND=/usr/bin/mkdir
8 COMMAND=/usr/bin/wg
36 COMMAND=/usr/sbin/blkid
75 COMMAND=/usr/sbin/lvs
16 COMMAND=/usr/sbin/nft
57 COMMAND=/usr/sbin/pct
150 COMMAND=/usr/sbin/smartctl
[exited with code 0]
== control: the night's backup on agent 0.159.1 (2026-10-18 04:33 local) ran the check:
Oct 18 04:33:15 demo-hp sudo[1664888]: felhom-agent : PWD=/ ; USER=root ; COMMAND=/usr/local/sbin/felhom-thin-check pve data
@@ -0,0 +1,3 @@
== trigger 2026-10-18T11:11:36Z (local 2026-10-18 13:11:36)
200
{"data": {"started": true}, "ok": true}
@@ -0,0 +1,5 @@
felhom-agent 0.159.1
Oct 18 04:43:52 demo-hp felhom-agent[3320002]: time=2026-10-18T04:43:52.498+02:00 level=INFO msg="osupdate: wrapper" line="os-apply: DONE rc=0 seconds=0 upgraded=0 (nothing to do)"
Oct 18 04:43:53 demo-hp felhom-agent[3320002]: time=2026-10-18T04:43:53.613+02:00 level=INFO msg="osupdate: DONE" run=20261018T024228Z layer=pve vmid=9201 ring=0 trigger=night outcome=nothing healthy=true reason="" upgraded=0 pending=1 not_covered=0 restart_needed=11 reboot_needed=false wrapper_seconds=16.3
Oct 18 05:23:06 demo-hp felhom-agent[3320002]: time=2026-10-18T05:23:06.521+02:00 level=INFO msg="backup: restore-test evaluated — nothing due" verdicts="local: no settled archive yet — nothing to prove (newborn or still settling); felhom-pbs: newest settled archive (landed 2026-10-15T20:38:47Z) is already proven"
Oct 18 11:23:06 demo-hp felhom-agent[3320002]: time=2026-10-18T11:23:06.557+02:00 level=INFO msg="backup: restore-test evaluated — nothing due" verdicts="local: no settled archive yet — nothing to prove (newborn or still settling); felhom-pbs: newest settled archive (landed 2026-10-15T20:38:47Z) is already proven"
@@ -0,0 +1,4 @@
wrote envelope to /dev/null
uploaded signed op to the hub jobs queue
wrote envelope to /dev/null
uploaded signed op to the hub jobs queue
@@ -0,0 +1,8 @@
felhom-agent 0.159.2 11:08:30
Oct 18 13:08:17 demo-hp felhom-agent[3320002]: time=2026-10-18T13:08:17.765+02:00 level=WARN msg="signedjobs: signed op COMPLETED" job=763e0b8971dff83c op=agent_update
Oct 18 13:08:18 demo-hp felhom-os-apply[3566414]: os-apply: BUNDLE DONE agent=0.159.2 written=0 same=30 self-check=ok signers-created=False
Oct 18 13:08:18 demo-hp felhom-agent[3320002]: time=2026-10-18T13:08:18.862+02:00 level=INFO msg="osupdate: wrapper" line="os-apply: BUNDLE DONE agent=0.159.2 written=0 same=30 self-check=ok signers-created=False"
Oct 18 13:08:19 demo-hp felhom-agent[3320002]: time=2026-10-18T13:08:19.883+02:00 level=WARN msg="osupdate: capability probe after the config bundle" ok=75 total=75 degraded=""
Oct 18 13:08:19 demo-hp felhom-agent[3320002]: time=2026-10-18T13:08:19.884+02:00 level=WARN msg="signedjobs: signed op COMPLETED" job=268dfe26d949094f op=agent_config_update
[exited with code 0]
@@ -0,0 +1,2 @@
felhom-agent sha256 4d98868e922d6c10665a6c0da9323e8627ea9c589094e81d27d741e625d9d8f9
felhom-config-bundle.json sha256 477704ea2980948433ffc34bb59f008cc11410fd9683d386bfd3e2f085d55bc9
@@ -0,0 +1,102 @@
[release-agent] building 0.159.2 …
[release-agent] built ok: sha256 4d98868e922d6c10665a6c0da9323e8627ea9c589094e81d27d741e625d9d8f9
[release-agent] config bundle built: sha256 477704ea2980948433ffc34bb59f008cc11410fd9683d386bfd3e2f085d55bc9
[release-agent] tagging v0.159.2 at 65c1994 …
[release-agent] publishing …
[publish-agent] publishing /tmp/felhom-agent-bMXfqp (16007752 bytes, sha256 4d98868e922d6c10…) → https://gitea.dooplex.hu/api/packages/admin/generic/felhom-agent/0.159.2/felhom-agent
[publish-agent] pre-delete existing artifact: HTTP 404 (404/204 expected)
[publish-agent] upload OK (HTTP 201)
[publish-agent] round-trip GET verified (sha256 matches)
[publish-agent] DONE. Record in the hub operator UI (Configs → Day-0 artifacts): agent 0.159.2 / 4d98868e922d6c10665a6c0da9323e862AGENT_VERSION=0.159.2
AGENT_SHA256=4d98868e922d6c10665a6c0da9323e8627ea9c589094e81d27d741e625d9d8f9
pre-push [felhom-agent]: running scripts/agent_gates.py --fast ...
agent_gates — 4 gate(s) [--fast]
--fast SKIPPED (deliberate periodic runs, never in a hook): published, gate-decoys
==============================================================================
== gate: reuse-refs (reuse_refs_check.py /mnt/5_hdd/felhom.eu/git/felhom-agent)
==============================================================================
note [felhom-agent] line 189: localapi/debuglogs_test.go (resolved by suffix → internal/localapi/debuglogs_test.go)
note [felhom-agent] line 205: hub/internal/store/dr_recipe.go (cross-repo → felhom.eu/hub/internal/store/dr_recipe.go)
OK [felhom-agent]: 117 cited paths — exact 115, suffix 1, ambiguous 0, cross-repo 1, FAILED 0 (siblings searched: app-catalog-felhom.eu, cc-secrets, felhom-controller, felhom.eu, felhom.eu-media, felhom.eu-sizing-push, felhom.eu-wt-sizing)
==============================================================================
== gate: instructions (instructions_gate.py /mnt/5_hdd/felhom.eu/git/felhom-agent)
==============================================================================
instructions_gate: /mnt/5_hdd/felhom.eu/git/felhom-agent
CLAUDE.md effective lines : 108 (ceiling 200)
version literals : 0
TEMPORARY blocks : 0
rule files : 6 (5 path-scoped)
workspace file : SYMLINK -> felhom.eu/documentation/runbooks/workspace-CLAUDE.md (resolves to the versioned copy)
memory index : 200 lines (ceiling 200), 24953 bytes (ceiling 25600)
memory index content : 28 version literal(s), 3 host address(es), 0 expired statement(s) [WARN only]
memory topic files : 181 indexed, 4 orphaned, 41 archived
register citations : 6 cited, 1109 register items known
WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:31: version literal '0.14.0' — the fleet is not uniform, so it is stale within a day. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing.
- **[restic 0.14.0 `--verify` is size+mtime, NOT content](restic-0140-verify-and-lock-sema
WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:89: version literal '0.142.0' — the fleet is not uniform, so it is stale within a day. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing.
- [Offsite continuity](offsite-continuity-2026-07-17.md) — ctrl 0.142.0 orphan guard + hub
WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:89: version literal '0.60.0' — the fleet is not uniform, so it is stale within a day. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing.
- [Offsite continuity](offsite-continuity-2026-07-17.md) — ctrl 0.142.0 orphan guard + hub
WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:96: version literal '0.152.0' — the fleet is not uniform, so it is stale within a day. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing.
- **[Hub operator UI: CC uses its token HUB_TOKEN, not the password](hub-operator-ui-basic
WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:100: version literal '0.90.1' — the fleet is not uniform, so it is stale within a day. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing.
- [Agent 0.90.1 is wrapper-only](agent-0901-is-wrapper-only.md) — do NOT publish the binar
WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:102: version literal '0.144.0' — the fleet is not uniform, so it is stale within a day. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing.
- [SMB „Megosztás" R-7 slice 1](smb-sharing-r7-slice1-2026-07-18.md) — ctrl 0.144.0 + felh
WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md: ... and 22 more version literal(s) — full list from the tally counts above.
WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:58: host address '192.168.0.192' — operations/nodes.md is the single home for these. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing.
- [hub.felhom.eu resolves to the LAN here](hub-resolves-to-lan-on-dooplex-network.md) — 19
WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:77: host address '167.233.158.164' — operations/nodes.md is the single home for these. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing.
- [Offsite PBS box RAM ceiling](offsite-pbs-box-ram-ceiling-2026-07-27.md) — **root SSH =
WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory/MEMORY.md:185: host address '192.168.0.180' — operations/nodes.md is the single home for these. Not a failure: Claude writes this file between sessions, so this warning is aimed at the model that will next edit it, not at whoever is pushing.
- **CC runs ON DooPlex** (192.168.0.180) — repos `/mnt/5_hdd/felhom.eu/git/felhom-*`, buil
WARNING: /mnt/5_hdd/felhom.eu/git/.claude-memory: 4 top-level topic file(s) are not referenced by MEMORY.md, so nothing will ever read them: f10-demo-hp-offsite-resolved-2026-07-23.md, launcher-v0163-2026-07-24.md, peti-return-p1-stop-2026-07-13.md, stopped-not-fault-v0164-2026-07-24.md
instructions_gate: OK (11 warning(s))
==============================================================================
== gate: release-complete (check-release-complete.py)
==============================================================================
check-release-complete — the newest CHANGELOG version is a complete release
newest CHANGELOG version: v0.159.1
ok tag v0.159.1 -> 5c3b218822, an ancestor of HEAD
ok package 0.159.1 is downloadable
check-release-complete: v0.159.1 is tagged, placed and published.
==============================================================================
== gate: observations (observations_gate.py /mnt/5_hdd/felhom.eu/git/felhom-agent)
==============================================================================
observations gate OK — REPORT.md has no observations section (nothing to check)
==============================================================================
== summary
==============================================================================
reuse-refs OK (exit 0)
instructions OK (exit 0)
release-complete OK (exit 7ea9c589094e81d27d741e625d9d8f9
[release-agent] config bundle published (HTTP 201)
[release-agent] pushing v0.159.2 …
remote: . Processing 1 references
remote: Processed 1 references in total
To https://gitea.dooplex.hu0)
observations OK (exit 0)
all agent gates OK
pre-push [felhom-agent]: gates OK - push proceeding.
RELEASED — and installable, verified by download, not by this script's own say-so.
version : 0.159.2
tag : v0.159.2
sha256 : 4d98868e922d6c10665a6c0da9323e8627ea9c589094e81d27d741e625d9d8f9
bundle : 477704ea2980948433ffc34bb59f008cc11410fd9683d386bfd3e2f085d55bc9 (felhom-config-bundle.json — vouch it with the agent)
NOT VOUCHED. Vouching is what points machines at this version and stays you/admin/felhom-agent.git
* [new tag] v0.159.2 -> v0.159.2
[release-agent] verifying by independent download …
r deliberate act:
hub operator UI → Configs → Day-0 artifacts. Until then boxes keep installing the previous one.
@@ -0,0 +1,4 @@
== published installer read back 2026-10-18T12:32:10Z
SCRIPT_VERSION="1.34.0" # the SINGLE version source (F-1): -h and the run banners follow it.
served sha256 df722ee49f38da595e7c7017aa932b45853696c5282bc408b67a5fb8f141b67a
tag sha256 df722ee49f38da595e7c7017aa932b45853696c5282bc408b67a5fb8f141b67a
@@ -0,0 +1,28 @@
# Website calculator — Immich before/after (2026-10-18)
Immich peak: **3,290 MB → 3,983 MB** (the kernel in-use figure from the 4,000-photo import, all four containers; the heap alone peaked at 2,777 MB). Immich typical: **1,557 MB, unchanged** (rest after the import: 1,230 MB heap — the raise-only rule keeps the higher). Headroom ×1.5, guest rule and platform unchanged.
## Immich alone — peak with the platform: 3,760 → 4,453 MB
| Machine | guest memory | before | after |
|---|---|---|---|
| 8 GB | 4,096 MB | fits, but tight | does not fit **(changes)** |
| 12 GB | 7,580 MB | fits well | fits well |
| 16 GB | 11,676 MB | fits well | fits well |
| 24 GB | 19,868 MB | fits well | fits well |
| 32 GB | 28,060 MB | fits well | fits well |
| 48 GB | 44,444 MB | fits well | fits well |
| 64 GB | 60,828 MB | fits well | fits well |
## Family starter set — peak with the platform: 6,021 → 6,714 MB
| Machine | guest memory | before | after |
|---|---|---|---|
| 8 GB | 4,096 MB | does not fit | does not fit |
| 12 GB | 7,580 MB | fits, but tight | fits, but tight |
| 16 GB | 11,676 MB | fits well | fits well |
| 24 GB | 19,868 MB | fits well | fits well |
| 32 GB | 28,060 MB | fits well | fits well |
| 48 GB | 44,444 MB | fits well | fits well |
| 64 GB | 60,828 MB | fits well | fits well |
@@ -0,0 +1,27 @@
=== demo-hp (enkisfelhom.hu)
containers: 24 running; not healthy/running: traefik Up 2 days;
unhealthy: 0
2026/10/18 11:09:36 updater.go:855: [INFO] [selfupdate] Post-update startup: update successful (0.329.0 → 0.330.0)
allow-list refusals since start: 0
2026/10/18 11:09:36 sync.go:142: [INFO] [sync] Initial sync: Sablonok naprakészek — nincs változás
installed apps (stacks with app.yaml): 12
public https://felhom.enkisfelhom.hu/login: 200
public https://files.enkisfelhom.hu/: 200
=== demo-felhom (demo-felhom.eu)
containers: 9 running; not healthy/running: traefik Up 2 days;
unhealthy: 0
2026/10/18 11:09:25 [INFO] [selfupdate] Post-update startup: update successful (0.329.0 → 0.330.0)
allow-list refusals since start: 0
2026/10/18 11:09:26 [INFO] [sync] Initial sync: Sablonok naprakészek — nincs változás
installed apps (stacks with app.yaml): 5
public https://felhom.demo-felhom.eu/login: 200
public https://files.demo-felhom.eu/: 200
=== tester-1 (enkicsifelhom.hu)
containers: 10 running; not healthy/running: traefik Up 2 days;
unhealthy: 0
2026/10/18 11:09:35 [INFO] [selfupdate] Post-update startup: update successful (0.329.0 → 0.330.0)
allow-list refusals since start: 0
2026/10/18 11:09:36 [INFO] [sync] Initial sync: Sablonok naprakészek — nincs változás
installed apps (stacks with app.yaml): 3
public https://felhom.enkicsifelhom.hu/login: 200
public https://files.enkicsifelhom.hu/: 200
@@ -0,0 +1,12 @@
== global floor 2026-10-18T11:10:59Z
HTTP/1.1 303 See Other
Location: /configuration?flash=floor_set
clear tester-1:
HTTP/1.1 303 See Other
Location: /customers/tester-1?flash=floor_set
clear demo-hp:
HTTP/1.1 303 See Other
Location: /customers/demo-hp?flash=floor_set
clear demo-felhom:
HTTP/1.1 303 See Other
Location: /customers/demo-felhom?flash=floor_set
@@ -0,0 +1,9 @@
set tester-1:
HTTP/1.1 303 See Other
Location: /customers/tester-1?flash=floor_set
set demo-hp:
HTTP/1.1 303 See Other
Location: /customers/demo-hp?flash=floor_set
set demo-felhom:
HTTP/1.1 303 See Other
Location: /customers/demo-felhom?flash=floor_set
@@ -0,0 +1,3 @@
('min_controller_version', '0.330.0')
('min_controller_version_declared_min_agent', '0.330.0=0.158.1')
per-box floors set: 0
@@ -0,0 +1,2 @@
OK http://torrent.demo-felhom.eu/r1033-check?q=1 -> 301 https://torrent.demo-felhom.eu/r1033-check?q=1
== every public name redirects http -> https
@@ -25,7 +25,7 @@ Samba is not in the floor: it runs only when sharing is switched on. Evidence: `
<!-- apps-table: generated by tools/render_table.py -->
| App | Typical MB | Peak MB | Catalog request / limit | CPU class | CPU rest % | Busiest minute % | Source |
|---|---|---|---|---|---|---|---|
| Immich (`immich`) | 1,557 | 3,290 | 2,048 / 4,480 | heavy-in-bursts | 0.74 | 74.2 | onboarding ! |
| Immich (`immich`) | 1,557 | 3,983 (raised 2026-10-18) | 2,048 / 4,480 | heavy-in-bursts | 0.74 | 74.2 | onboarding ! |
| Grimmory (`grimmory`) | 451 | 1,095 | 600 / 1,408 | medium | 0.83 | 22.0 | onboarding ! |
| Karakeep (`karakeep`) | 372 | 1,050 | 700 / 2,816 | light | 0.6 | 2.9 | onboarding ! |
| Cal.com (`calcom`) | 800 | 950 | 200 / 1,792 | light | 0.14 | 1.8 | onboarding |
@@ -95,7 +95,7 @@ Samba is not in the floor: it runs only when sharing is switched on. Evidence: `
unmeasured = catalog value. `!` = two sources' peaks differ by more than 50 %; the higher is used (all values:
`evidence/apps-table.json`). `—` = not installable today (hidden / abandoned), no bench.
**The five largest peaks:** Immich 3,290 · Grimmory 1,095 · Karakeep 1,050 · Cal.com 950 · Dawarich 890 MB.
**The five largest peaks:** Immich 3,983 (3,290 until 2026-10-18) · Grimmory 1,095 · Karakeep 1,050 · Cal.com 950 · Dawarich 890 MB.
**Raised with the HP check (2026-10-14, operator ruling A, R-1009):** 23 figures of 64 apps took the second machine's higher
figure (HP t740, `audits/sizing-check-2026-10-14/hp-figures.json`); none went down. Each raised figure is named in
`sizing.json` → `raised_by_hp` (the figure, what it was, what it is). The table above already holds the raised figures.
@@ -184,14 +184,16 @@ a backup at the same time can slow it down · **does not fit:** guest < peak. Pe
<!-- sizing-verdicts: generated from the rule; scripts/test_build_sizing_web.py checks this table (24 GB column added 2026-10-13, estimator v2) -->
| Selection | Peak | 8 GB | 16 GB | 24 GB | 32 GB |
|---|---|---|---|---|---|
| Household set | 5.9 GB | does not fit | fits well | fits well | fits well |
| Household set | 6.6 GB | does not fit | fits well | fits well | fits well |
| Household set without Immich | 2.7 GB | fits, but tight | fits well | fits well | fits well |
| Immich alone | 3.7 GB | fits, but tight | fits well | fits well | fits well |
| All 63 apps | 21.9 GB | does not fit | does not fit | does not fit | fits, but tight |
| Immich alone | 4.3 GB | does not fit | fits well | fits well | fits well |
| All 63 apps | 22.5 GB | does not fit | does not fit | does not fit | fits, but tight |
<!-- /sizing-verdicts -->
- **8 GB:** the household set without Immich fits, but tight; Immich alone fits, but tight; the whole household set does not fit.
- **8 GB:** the household set without Immich fits, but tight; Immich alone does not fit (since 2026-10-18); the whole household set does not fit.
- **16 GB:** the whole household set fits well.
- **32 GB:** the household set fits well; all 63 apps at once fit, but tight.
2026-10-14: raised with the HP check (operator ruling A); one verdict became stricter — household set without Immich on 8 GB, by 0.5 MB.
2026-10-18 (R-1147, operator yes): **Immich's peak raised 3,290 → 3,983 MB** from a 4,000-photo import on scratch guest 9202 (`audits/night-2026-10-18/P6/`: the four containers' `memory.current` summed — it includes file cache, so it sits above `used`; the heap alone peaked at 2,777 MB, and the server was OOM-killed twice at its old 2 GB limit). Typical unchanged (1,557; rest after the import 1,230 heap). One verdict became stricter: **Immich alone on 8 GB — does not fit** (4.3 GB > the 4.0 GB guest).
@@ -372,7 +372,7 @@
"slug": "immich",
"display_name": "Immich",
"mem_typical_mb": 1557,
"mem_peak_mb": 3290,
"mem_peak_mb": 3983,
"cpu_class": "heavy-in-bursts",
"cpu_note": "only while it reads new photos: thumbnails, face and search indexing (200 photos took about 6 minutes)",
"source": "onboarding",
@@ -389,6 +389,16 @@
"was": 3061,
"now": 3290
}
],
"raised_by_large_library": [
{
"field": "peak",
"was": 3290,
"now": 3983,
"date": "2026-10-18",
"why": "a 4,000-photo import on scratch guest 9202 (demo-hp): the four containers' memory.current summed, at its peak (heap alone 2,777 MB); the server was OOM-killed twice at its old 2 GB limit — felhom.eu documentation/audits/night-2026-10-18/P6/; operator yes 2026-10-18 12:16 and again for the before/after table",
"basis": "memory.current (includes file cache) — above `used`, so it leans to the safe side"
}
]
},
{