Files
nexa/CLAUDE.md
T
Claude a1e14c64c3 Apply Q1–Q3 decisions: GraphDB/SPARQL, reuse Qdrant, self-host embeddings via TEI
- Q1 → Ontotext GraphDB (SPARQL). docs/08 fully rewritten with RDF schema,
  example SPARQL queries (transitive deps via property paths, time-windowed
  topic counts, cross-pillar joins via nexa:vectorId).
- Q2 → reuse qdrant_scientific with nexa_* collection prefix; docs/09 step 2
  now points there explicitly.
- Q3 → no OpenAI embeddings. Self-host on the docker host. Use TEI
  (HuggingFace text-embeddings-inference) — single Rust binary, ~500 MB image,
  OpenAI-compatible — instead of Ollama, since we only need embeddings.
- docs/09 Phase-3.4 add-on simplified to a single Ontotext compose snippet
  (Neo4j option dropped) plus repo creation curl.
- docs/11 Q3 marked resolved; new Q15 picks the model (bge-m3 vs nomic-embed)
  and adds the open question of whether SAIA already proxies an embedding
  model that would let us skip TEI entirely.
- docs/03 + CLAUDE.md updated with the new decisions so future runs don't
  re-litigate.
2026-05-04 21:26:08 +00:00

3.1 KiB

Instructions for Claude (and other agents)

This file tells future automated runs what they need to know about this repo.

Repo conventions

  • Documentation: all docs live in /docs/ and are numbered. Entry point is docs/index.md. When you add a doc, give it the next free NN- prefix and add a row to the index TOC.
  • Runtime artifacts: live in nexa-core/ (workflows, prompts, configs, scripts). Don't put .md documentation in there — link from /docs/ instead.
  • Source-of-truth: if a doc duplicates content from nexa-core/config/*.md, delete the duplicate. Single source of truth.

Real infrastructure (verified from screenshots, May 2026)

  • Proxmox host nuc at 192.168.1.20:8006 (PVE 9.1.9).
    • LXC 102 dns (AdGuard) — internal DNS, rewrites for *.nuclide.systems.
    • LXC 103 backrest — backup orchestration.
    • LXC 104 docker — main docker host at 192.168.1.40 (40 containers).
    • LXC 105 nextcloud — Nextcloud at nc.nuclide.systems.
    • LXC 106 octoprint — currently Exited; flagged in docs/11.
    • LXC 108 zoraxy — reverse proxy at 192.168.1.4:8000, TLS for *.nuclide.systems.
    • VM 100 haos — Home Assistant.
  • Already-running services on docker host (don't redeploy):
    • Memos :5230, n8n :5678, LiteLLM :4000 (UI LobeHub :3210), Qdrant (qdrant_scientific), ntfy :7998, Karakeep/Hoarder, Vaultwarden :11001, Pocket-ID :1411, Immich, Audiobookshelf, Paperless-ngx, Traccar, Prowlarr, plus MCP containers (crawl4ai-mcp, markitdown-mcp, papersearch-mcp).
  • Decided for Nexa (don't re-litigate without user input):
    • Vector store: reuse qdrant_scientific with nexa_* collection prefix.
    • Embeddings: TEI (HF text-embeddings-inference), self-hosted, bge-m3 candidate (Q15 still pending the model name).
    • Graph store: Ontotext GraphDB (SPARQL/RDF), Phase 3.4.
    • Chat model: SAIA via LiteLLM virtual key.

When working on Nexa

  1. Read docs/index.md first — it's the navigator.
  2. Open questions first. Before writing code or workflow JSON, scan docs/11-open-questions.md. If your task touches an unanswered Q, stop and ask rather than picking a default. Append new blockers to that doc as [ ] Q-NN.
  3. Optimization findings. When you spot infrastructure improvements, add them to docs/12-optimization-opportunities.md as a numbered bullet — don't just mention them in commit messages.
  4. Never inline secrets in workflow JSON or .env committed to git. Use n8n credentials, LiteLLM virtual keys, or (longer term) Vaultwarden.
  5. Keep deployment minimal. The default answer to "do we need a new container?" is no — the existing stack covers most needs.

Branch policy

  • This branch is claude/organize-docs-deployment-7N4v2. Push only here unless told otherwise.
  • New work for an unrelated feature → new branch under claude/<topic>.