# Concepts — Topic Index

> Atomic knowledge articles extracted from Claude Code sessions.
> Each article covers one distinct concept, pattern, or technique.

| Article | Summary | Source | Updated |
|---------|---------|--------|---------|
| [[wiki/concepts/librechat-openid-auth]] | LibreChat v0.8.4 OpenID/OAuth auth internals — ALLOW_SOCIAL_REGISTRATION, openidId requirement, state mismatch diagnosis | daily/2026-04-15.md | 2026-04-15 |
| [[wiki/concepts/msal-vanilla-js-pkce]] | MSAL.js v5 UMD script-tag PKCE for SPAs without bundlers — Azure portal platform type, Node.js JWKS validation | daily/2026-04-15.md | 2026-04-15 |
| [[wiki/concepts/shell-static-deploy-patterns]] | Shell deploy scripts for static frontends — cp -r vs glob, Apache reload requirement, setup vs deploy distinction | daily/2026-04-15.md | 2026-04-15 |
| [[wiki/concepts/fish-shell-path-config]] | Fish shell PATH configuration — /usr/local/bin not in default PATH, fish_add_path, SSH aliases as Fish functions | daily/2026-04-15.md | 2026-04-15 |
| [[wiki/concepts/microsoft-graph-api-mailbox-migration]] | Graph API app-only (client credentials) flow for reading shared mailboxes — Mail.Read.All, EML download, pagination | daily/2026-04-16.md | 2026-04-16 |
| [[wiki/concepts/mailcow-maildir-import]] | Mailcow Maildir volume path, rsync import, chown 5000:5000, mandatory doveadm index — without indexing IMAP shows nothing | daily/2026-04-16.md | 2026-04-16 |
| [[wiki/concepts/fastapi-mongodb-role-migration]] | Adding UserRole enum + MongoDB schema validator migration + idempotent seed in FastAPI lifespan | daily/2026-04-16.md | 2026-04-16 |
| [[wiki/concepts/monorepo-deploy-script-pitfall]] | deploy.sh checking backend/.git / frontend/.git silently skips git pull in monorepos — fix: single git pull at root | daily/2026-04-16.md | 2026-04-16 |
| [[wiki/concepts/nextjs-basepath-auth-redirects]] | Next.js basePath requires all auth redirect strings to include the prefix — middleware and API routes don't auto-prepend | daily/2026-04-16.md | 2026-04-16 |
| [[wiki/concepts/python-service-deployment-dotenv]] | Python service deploy checklist — venv pip install after git pull, .env.example → .env for new config.py requirements | daily/2026-04-16.md | 2026-04-16 |
| [[wiki/concepts/openai-max-completion-tokens]] | OpenAI newer models reject `max_tokens` — must use `max_completion_tokens` in both raw API calls and internal wrappers | daily/2026-04-17.md | 2026-04-17 |
| [[wiki/concepts/fish-abbr-patterns]] | Fish `abbr` expands visibly (git/docker/uv), `alias` for transparent replacements (ls/cat); forgit conflict resolution | daily/2026-04-17.md | 2026-04-17 |
| [[wiki/concepts/bitbucket-mcp-atlassian]] | Bitbucket MCP via aashari/mcp-server-atlassian-bitbucket; GitHub MCP is GitHub-only; Atlassian API tokens replace App Passwords | daily/2026-04-17.md | 2026-04-17 |
| [[wiki/concepts/proxmox-mcp-server]] | canvrno/ProxmoxMCP is the best community Proxmox MCP server; install to global Claude Code config for any-project access | daily/2026-04-18.md | 2026-04-18 |
| [[wiki/concepts/proxmox-vm-management-methods]] | Proxmox VM creation approaches — SSH+qm (ad-hoc), REST API, Terraform, Ansible, MCP; when to use each | daily/2026-04-18.md | 2026-04-18 |
| [[wiki/concepts/home-assistant-proxmox-install]] | HAOS on Proxmox via community-scripts one-liner — Default Settings, VM specs, why VM over LXC | daily/2026-04-19.md | 2026-04-19 |
| [[wiki/concepts/homepage-proxmox-widget-quirks]] | Homepage v0.10.9 proxmox widget quirks — type field required, pnpm start, duplicate env vars, SSL, ARP; replaced by Dashy | daily/2026-04-19.md | 2026-04-19 |
| [[wiki/concepts/lxc-arp-cache-api-failures]] | Stale ARP cache entries in LXC cause silent API failures — ip neigh flush dev eth0 is the fix | daily/2026-04-19.md | 2026-04-19 |
| [[wiki/concepts/nodejs-ssl-system-trust-store]] | Node.js ignores Linux system trust store — NODE_TLS_REJECT_UNAUTHORIZED=0 or NODE_EXTRA_CA_CERTS must be in systemd unit | daily/2026-04-19.md | 2026-04-19 |
| [[wiki/concepts/tailscale-dns-homelab]] | Tailscale Global Nameserver + Override local DNS makes internal domains resolve on mobile via AdGuard | daily/2026-04-19.md | 2026-04-19 |
| [[wiki/concepts/remote-server-dotfiles-bootstrap]] | Full-stack remote dotfiles bootstrap via sshpass r() helper — Fish, Starship, Neovim, CLI tools, fnm, conf.d pattern | daily/2026-04-19.md | 2026-04-19 |
| [[wiki/concepts/homarr-proxmox-integration]] | Homarr Proxmox integration cert trust — PVE root CA in trusted-certificates/, Termix SSH REST API, docker-socket-proxy | daily/2026-04-19.md | 2026-04-19 |
| [[wiki/concepts/export-endpoint-filter-pattern]] | PDF/CSV exports must receive variant_ids from frontend — frontend-only selection is invisible to backend renderers | daily/2026-04-20.md | 2026-04-20 |
| [[wiki/concepts/ollama-lxc-ram-requirements]] | Ollama in LXC loads Intel oneAPI toolkit (~1.8 GB overhead) even on CPU-only inference — minimum 6 GB RAM for 7B model | daily/2026-04-21.md | 2026-04-21 |
| [[wiki/concepts/beszel-monitoring-deployment]] | Beszel hub + agent deployment across Proxmox host and LXC containers — Ed25519 key auth, port assignment, systemd setup | daily/2026-04-21.md | 2026-04-21 |
| [[wiki/concepts/adguard-dns-rewrites-homelab]] | AdGuard DNS rewrites for *.ai-impress.com wildcard → NPM IP; single entry covers all internal services | daily/2026-04-21.md | 2026-04-21 |
| [[wiki/concepts/prometheus-joules-watts-gotcha]] | rate(joules_total) already returns watts — multiplying by 1000 causes W→kW display bug in Grafana dashboards | daily/2026-04-21.md | 2026-04-21 |
| [[wiki/concepts/old-gpu-sysfs-metrics]] | AMD GCN 1.0 (Oland) and Intel HD 630 don't expose gpu_busy_percent via sysfs — temperatures still available via hwmon | daily/2026-04-21.md | 2026-04-21 |
| [[wiki/concepts/chartjs-time-axis-adapter]] | Chart.js type:time axis requires chartjs-adapter-date-fns registered — without it chart silently fails to render | daily/2026-04-21.md | 2026-04-21 |
| [[wiki/concepts/uptime-kuma-socketio-management]] | Uptime Kuma has no REST API — uses Socket.IO; management done via SQLite directly | daily/2026-04-21.md | 2026-04-21 |
| [[wiki/concepts/proxmox-container-502-misdiagnosis]] | 502 Bad Gateway ≠ dead container — often nginx misconfiguration inside CT; always confirm visually before destructive actions | daily/2026-04-21.md | 2026-04-21 |

| [[wiki/concepts/git-includeif-per-remote]] | Git includeIf hasconfig:remote.*.url auto-applies correct email per remote — GitHub vs Bitbucket/work without per-repo config | daily/2026-04-23.md | 2026-04-23 |
| [[wiki/concepts/dns-youtube-ad-blocking]] | DNS-based ad blocking cannot block YouTube ads — Google serves ads and content from the same domains; uBlock Origin / ReVanced required | daily/2026-04-23.md | 2026-04-23 |
| [[wiki/concepts/adguard-blocklist-setup]] | AdGuard Home blocklist upgrade: default 1 list → 5 lists (AdAway, HaGeZi Multi Pro++, OISD Big, HaGeZi TIF); ~2.2M domains | daily/2026-04-23.md | 2026-04-23 |

| [[wiki/concepts/claude-code-schedule-skill-account-type]] | /schedule skill requires claude.ai login account — API-only users need launchd/cron as fallback | daily/2026-04-24.md | 2026-04-24 |
| [[wiki/concepts/memory-compiler-mac-migration]] | Migrating memory-compiler between Mac users — PROJECTS_ROOT, Python version, Fisher conf.d, cc-collector hyphen bug | daily/2026-04-24.md | 2026-04-25 |
| [[wiki/concepts/immich-lxc-ram-oom]] | Immich in LXC needs 8 GB RAM — 6 GB causes OOM; OOMPolicy=continue + MemoryMax=7G for auto-recovery | daily/2026-04-24.md | 2026-04-24 |
| [[wiki/concepts/systemd-memory-oom-policy]] | systemd MemoryMax + OOMPolicy=continue + RestartSec pattern for auto-recovery of memory-constrained services | daily/2026-04-24.md | 2026-04-24 |
| [[wiki/concepts/proxmox-lxc-autostart]] | LXC containers don't start after PVE reboot unless "Start at boot" (--onboot 1) is explicitly enabled | daily/2026-04-24.md | 2026-04-24 |

| [[wiki/concepts/fish-fisher-conf-d-conflict]] | Fisher plugin manager conflict when conf.d/ files are manually copied — delete and run fisher update to reinstall cleanly | daily/2026-04-22.md | 2026-04-22 |
| [[wiki/concepts/macos-python-version-hooks]] | macOS system /usr/bin/python3 = 3.9; Path\|None syntax requires 3.10+; Claude Code hooks must use /opt/homebrew/bin/python3 | daily/2026-04-22.md | 2026-04-22 |

| [[wiki/concepts/preflight-record-pattern]] | preflight(estimate) → AI call → record(actual) — the 3-step AI cost-tracking pattern with budget enforcement | ai-cost-tracker | 2026-04-27 |
| [[wiki/concepts/lazy-user-mirror]] | User mirror created on first AI event, not on user creation — minimal integration surface, source project stays owner | ai-cost-tracker | 2026-04-27 |
| [[wiki/concepts/sync-with-outbox]] | Sync HTTP + SQLite outbox: record() never blocks the AI pipeline; background flusher retries up to 10x | ai-cost-tracker | 2026-04-27 |
| [[wiki/concepts/litellm-pricing-source]] | LiteLLM model_prices JSON as auto-updating LLM price source — why scraping provider sites is fragile | ai-cost-tracker | 2026-04-27 |

<!-- Articles added automatically by compile.py -->
<!-- Format: | [[concepts/slug]] | One-line summary | daily/YYYY-MM-DD.md | date | -->
