Sage local LLM chat tool — Docker Compose stack (Ollama + FastAPI). Provides REST/SSE API, React web UI with React Router (Chat + KB Chat pages). Three memory modes (anonymous, session, persistent). SSE streaming chat, model management, GPU metrics. KB system: ChromaDB vector store, Ollama embeddings (nomic-embed-text), RAG-powered Q&A with citation sources. KB Chat UI with source selector, inline article preview, wiki launch links. Syncs persistent data to MariaDB on drogher. Hardened: read_only, cap_drop ALL, no-new-privileges, internal network for Ollama. LAN alias: sage-prod.internal (also sage-trunk.internal). Model routing config lives at ~/working/sage/config/settings-{prod,trunk}.json under routing.task_profiles; profiles are reloaded per-call (no restart needed). Note: the extract task profile carries a quality≥4 minimum (as of 2026-04-20) — without it qwen3.5:2b (max_context 4096) outscores qwen3.5:9b whenever input fits, producing fragmented output on chunked work. See wiki: Sage Inference Queue → Task profiles.