## Key Facts - **Integrations (Updated)**: - **Outlook:** Configured OAuth for personal (`alexw@outlook.dk` / `alex_mormor@hotmail.com`) and O365 (`alexander@warme.dk`). - **Cloudflare:** API token configured for `warme.dk` and `alw.dk` DNS management. - **Models (current):** Primary is **Claude Sonnet** (`anthropic/claude-3-5-sonnet-latest`). Added multi-provider fallbacks: **Gemini CLI** (`gemini-3-pro-preview`), **OpenRouter** (Kimi K2.5 / Arcee; Qwen :free last due to rate limits). **Codex** is used mainly for coding (quota-based). Added a fast **QuickClaw** agent (Gemini Flash→Pro). - **Fallback chain (Feb 4, 2026):** Promoted Copilot Sonnet 4.5 and Copilot GPT-5.2 to top fallback slots; Gemini Pro re-added at #3; context window set to 1M to match Gemini 3 Pro Preview capacity. - **UniFi:** Issues noted with firewall rule listing (auth/container problems). - **Email Processing:** Interrupted task on February 1 due to script error in `scripts/email_sweep.sh`. - **Context Management**: Aggressive pruning/compaction tuning in config (cache-ttl pruning + memory flush before compaction) to avoid long-session blowups; still recommend task threads for long days. - **Weekly Limits**: Set for models based on reported usage with checks in place. - **CLI backends/skills:** Added Codex CLI backend; created `copilot-cli-agent` skill (uses `gh copilot` locally, defaults to Claude Sonnet 4.5, strict-output mode available). Claude CLI backend added but depends on CLI login/quota. - **Cooldowns** for Codex and Claude implemented to prevent immediate reuse. - **James backbone:** Redis-based event bus + watcher (CPU/mem/disk/Docker + GPU VRAM alerts), analyst agent (Ollama JSON + heuristic fallback), and policy engine publishing allow/deny decisions. Systemd units + docs added in `james/`. ## Known Issues - **`memory_search` embeddings broken:** Using placeholder `OPENAI_API_KEY` (starts with `your_ap...`). Need to set real key or switch to local embeddings provider. - **Gemini CLI rate-limit behavior:** Pro/Flash can hit quota and hang in a retry loop instead of failing cleanly.