The LXC was originally provisioned with the Dockge helper-script template, but the user moved on to Arcane. Dozzle stays as the log viewer (different role, not redundant). - docs/09 step 3: deployment goes via Arcane UI (not Dockge); reworded the deploy block accordingly. - docs/11 Q19: read the reference compose from Arcane, not Dockge. - docs/12 #33: was "stacks live in Dockge"; now "Arcane manages stacks, Dockge is stale, retire it" with the same tar-then-remove pattern as SiYuan and Open-WebUI. - docs/12 housekeeping campaign + #36: "walk every Arcane stack" rather than Dockge. - docs/13 Task 1: stack inventory comes from the Arcane UI (compose.yaml + .env screenshot/copy) rather than `ls /opt/stacks/` which was the Dockge default. The shell command for `docker ps -a` stays. - docs/02 Phase 6.1: Nexa polls Arcane (not Dockge) for inventory sync. - CLAUDE.md infra block: Arcane is the active manager, Dozzle is the log viewer, Dockge is stale; added services/dockge/ to the stale list alongside siyuan and open-webui.
4.3 KiB
02 — Roadmap & Phases
Iterative build-out, value-first. Each phase is shippable on its own.
Phase 1 — The Spine (connectivity)
Focus: datapath between Memos, n8n and SAIA. Milestone: Nexa replies on Memos and answers simple questions.
- 1.1 Memos ↔ n8n bridge — webhook ingress, content filter, comment-back.
- 1.2 SAIA integration — call LiteLLM proxy from n8n; chat via Memos comments.
- 1.3 Git-sync — periodic export of n8n workflows into this repo.
Phase 2 — Senses (input channels)
Focus: e-mail filter and the Work-vs-Personal router. Milestone: Nexa distinguishes work tasks from personal tasks without manual tags.
- 2.1 Email butler — filter & summarize the ~20 daily personal mails.
- 2.2 RSS morning digest — curated daily summary in Memos.
- 2.3 Bluesky antenna — store liked posts as knowledge snippets.
Phase 3 — Memory (Qdrant & RAG)
Focus: Qdrant + graph layer for retrieval-augmented answers. Milestone: RAG works — Nexa answers from archived notes; images captured today are queued for visual indexing later.
- 3.1 Text RAG (Path A) — TEI +
bge-m3, single Qdrant collectionnexa_knowledge_text.#nexa:askreads it before answering. Image attachments are recorded asnexa:NotewithpendingVisualIndexbut not embedded yet. - 3.2 Visual collection (Path C) — swap TEI → infinity, add
jina-clip-v2, createnexa_knowledge_visual, backfill all queued image notes. RAG workflow gets a parallel branch for visual hits. See 09 § "Phase add-on: visual collection". - 3.3 S3 long-term archive — Qdrant snapshots (both collections) to the S3 server.
- 3.4 Ontotext GraphDB — SPARQL pillar; structural queries combined with vector hits in
#nexa:ask. See 08.
Phase 4 — Motor (organization & action)
Focus: calendar integration and time-boxing. Milestone: Nexa proactively proposes morning focus slots in the work calendar.
- 4.1 Nextcloud Tasks sync — bidirectional status sync (Memos ↔ NC Tasks).
- 4.2 Time-boxing agent — calendar-aware slot suggestions.
- 4.3 Karakeep curation — automated review cycle for saved links.
Phase 5 — Daily integration (polish)
Focus: Home Assistant Voice and monitoring. Milestone: Nexa speaks via HA-Voice and surfaces critical system states proactively.
- 5.1 HA Voice — Wake-word integration, Wyoming protocol.
- 5.2 System monitoring — Proxmox / Backrest alerts into the Memos system feed via ntfy.
Phase 6 — Nexa as homelab steward
Focus: Nexa actively maintains the homelab inventory instead of being told manually.
Milestone: Nexa runs a daily drift report — what changed, what's stale, what's missing — and turns it into actionable comments under a pinned [STEWARD] memo.
- 6.1 Inventory sync — Nexa polls Arcane /
docker ps/ Proxmox API on a schedule and stores the running-state snapshot in GraphDB (nexa:Service,nexa:LastSeen,nexa:DataPath, …). - 6.2 Drift detection — diff against the documented desired state in this repo (
docs/12,CLAUDE.md, the housekeeping campaign at #35–37). Emit findings as structured Memos comments: "open-webuilast used 38 d ago — retire?", "Containerfoohas noservices/foo/bind — schedule UNAS migration?". - 6.3 Steward commands —
#nexa:retire <svc>(tar tobackup/, stop, archive the stack),#nexa:document <svc>(template a CLAUDE.md entry),#nexa:wishlist-status(which entries in docs/13 are still needed). - 6.4 Self-update of docs — when the user resolves an open question via Memos, Nexa proposes the corresponding edit to
docs/11-open-questions.mdas a PR-ready diff (the doc itself becomes a Nexa-managed surface).
This phase is what turns Nexa from "an assistant that answers questions" into "an assistant that takes care of its own runtime", and it's the natural home for the cross-cutting housekeeping campaign — most of those items become semi-automatic once 6.1–6.3 ship.