- UNAS layout decoded from the user's tree: services/<svc>/ is the
homelab-wide docker config store (every container follows the same
pattern — immich, karakeep, nextcloud, ntfy, paperless-ai, pocketid,
shelfmark, stremio, traccar, vaultwarden, gluetun). Nexa MUST follow
the same pattern at services/nexa/. backup/<svc>/ for snapshots.
Pinned in CLAUDE.md and docs/12 #31.
- Stale services flagged for retirement: services/siyuan/ (migrated to
Obsidian) and services/open-webui/ (unused, only LobeHub is alive).
Drops the "two LLM UIs" item (#15) — it's now "retire open-webui".
- Hard-blocklist for any Nexa indexer pinned in CLAUDE.md:
_sortMe/wallet/**, *.gpg/asc/key/pem/kdbx/credentials/secret, plus
the Nextcloud appdata dir.
- Three new "future user-facing wins" surfaced from the tree:
Paperless-AI as a Phase-2.x triage helper for _sortMe/Downloads/,
media/Recipes/ (~300 entries) as the showcase RAG corpus, and
Paperless-AI's existing ChromaDB as a potential read-from source
rather than re-embedding scanned docs.
- Housekeeping campaign in docs/12 §35-37: consolidate postgres,
audit UNAS-everywhere, S3 archive tier on s3.nuclide.systems.
- Phase 6 added to the roadmap: "Nexa as homelab steward". Polls
Dockge/docker/Proxmox, diffs vs documented state, emits a daily
drift report. Most of the housekeeping campaign becomes
semi-automatic once 6.1-6.3 ship.
- New docs/13-information-wishlist.md packages the still-needed
inventory as 5-6 paste-and-run tasks, each with explicit "📍 Where"
markers (which shell or which UI) and what it unblocks. Highest
leverage = Task 1 (read an existing compose stack to lock Q19).
- docs/index.md TOC extended to 13 rows.
Also fixed numbering drift in docs/12 (duplicate #28, missing #17/#18)
and added Q19 to docs/11 covering the SMB-share verification step.
Decision (Q15 resolved): start with text-only via TEI + bge-m3 in Phase 3.1,
prepare data shapes so Phase 3.2 (visual collection via infinity + jina-clip-v2)
is a pure additive operation — no rename, no schema migration, no n8n rewiring.
Concretely:
- Qdrant collection renamed nexa_knowledge → nexa_knowledge_text (1024-dim
for bge-m3) with modality-aware payload (modality, source_type, media_uri,
graph_iri, content_hash, context). Visual placeholder schema committed
alongside (qdrant_schema_visual.json, 768-dim, jina-clip-v2).
- Image attachments captured in 3.1 are recorded in GraphDB as nexa:Note with
nexa:modality "image" + nexa:pendingVisualIndex true; the 3.2 backfill
workflow picks them up and embeds. No data lost between phases — the queue
is the GraphDB itself.
- RDF schema (docs/08) gains nexa:modality, nexa:mediaUri,
nexa:vectorCollection, nexa:pendingVisualIndex from day one.
- docs/02 roadmap split: 3.1 = text RAG (Path A), 3.2 = visual collection
(Path C), 3.4 = Ontotext GraphDB.
- docs/09 grows a "Phase add-on: visual collection (Phase 3.2)" section with
the TEI→infinity swap, second collection create, LiteLLM second model
registration, and the SPARQL-driven backfill query.
- New open questions: Q16 (queue ergonomics + does SAIA already proxy an
embed model?), Q17 (reuse Immich's CLIP for photo-library queries?).
- docs/03 + CLAUDE.md updated so future runs use the new collection names
and don't re-decide the staging.