Commit Graph
5 Commits
Author SHA1 Message Date
Claude b5a749224d Unified search: Kiwix offline + DDG live with freshness detection
Replaced three separate tools (search_docs, web_search, search) with
a smart unified search() that:
- Always hits Kiwix first (instant, offline, no rate limit)
- Checks query for freshness keywords (latest, 2026, release, CVE, etc)
- If time-sensitive: also hits DDG, flags "prefer live results"
- If timeless (algorithms, docs, concepts): Kiwix only, skips web hit
- If Kiwix returns nothing: falls back to DDG automatically

Model sees both result sets with clear guidance on which to trust.
Keeps read_doc() for reading full Kiwix articles and web_search()
for explicit live-only queries when verifying offline currency.

130GB of ZIMs earn their keep on timeless topics (no rate limit,
instant, complete articles). DDG covers everything else.

https://claude.ai/code/session_01PtYTPherSJaxDEVPgF6Nxu
2026-03-22 18:17:51 +00:00
Claude ba1c7fd68d Add search layer: Kiwix offline docs + DuckDuckGo web search
The model can now search before it generates:

MCP tools (available via Open WebUI + Claude Code):
- search_docs(query): searches Kiwix ZIM files (Wikipedia, Stack Overflow,
  DevDocs, Arch Wiki) — instant, offline, no rate limits
- read_doc(path): reads full article content from Kiwix results
- web_search(query): DuckDuckGo search, no API key needed

Open WebUI native search:
- ENABLE_RAG_WEB_SEARCH=true + RAG_WEB_SEARCH_ENGINE=duckduckgo
- Switched from SearXNG (not in stack) to DDG (zero config)

Search priority: Kiwix first (offline, fast) → DDG fallback (live web)

All 3 setup scripts updated:
- duckduckgo-search added to mcp_requirements.txt
- KIWIX_URL=http://kiwix:80 added to MCP container env
- curl added to MCP container deps (for sync script)
- Open WebUI DDG search enabled by default

https://claude.ai/code/session_01PtYTPherSJaxDEVPgF6Nxu
2026-03-22 18:13:49 +00:00
Claude 8989815afa Wire in GPU optimizations and Gitea↔GitHub sync
Ollama config (all 3 setup scripts):
- Models updated from Qwen 2.5 → Qwen 3.5 series (Feb 2026)
- Auto-detect multi-GPU: TOTAL_VRAM = per-card × count
- KV cache quantization (q8_0) + flash attention enabled by default
- Context windows scaled by total VRAM (4K→128K)
- RAG server CHAT_MODEL now uses detected model variable

Gitea↔GitHub sync (new):
- gitea-github-sync.sh: bidirectional mirror with --init wizard
- Modes: --pull-only, --push-only, --list (dry run), --repo single
- Auto-discovers repos from both platforms via API
- Systemd timer: --install-timer [interval] for scheduled sync
- MCP tool: gitea_github_sync() for on-demand from Claude/WebUI
- Sync script mounted read-only into mcp-server container
- .env gets GITEA_URL variable for sync script
- curl added to mcp-server container deps

https://claude.ai/code/session_01PtYTPherSJaxDEVPgF6Nxu
2026-03-22 17:47:05 +00:00
Claude a4f2adc50a fix mcp-server crash and Kiwix FQDN resolution
mcp_server.py / local-ai-setup.sh:
  FastMCP.get_asgi_app() was removed in mcp 1.x — replace with
  sse_app(), which returns the same Starlette ASGI app for SSE
  transport.  Fixes the crash loop the container was stuck in.

laptop_full_setup.sh Caddyfile:
  $(hostname).local requires mDNS (Avahi/Bonjour) to resolve from a
  proxy machine, which is often not available on all LAN clients.
  Replace every occurrence with $LOCAL_IP (the machine's LAN IP)
  so the generated Caddyfile.example works reliably regardless of
  mDNS support.

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-21 15:03:27 +00:00
Claude 0f6d09db12 Refactor setup: new/update detection, split Python servers, add MCP server
- laptop_full_setup.sh now handles both fresh install and updates cleanly
  (detects existing install, --force flag to overwrite config files)
- server.py: standalone RAG server with AST-aware code chunking (Python),
  pattern-split for JS/TS/Go, /ingest/repo and /webhook/gitea|github endpoints
- mcp_server.py: new MCP server (port 8002/SSE) with Claude Code-equivalent
  tools: bash, file ops, ripgrep search, git ops, Gitea API, GitHub API,
  RAG repo ingest
- docker-compose: adds mcp-server service, workspace volume, env_file for tokens
- .env preserved on update (tokens never overwritten)
- GPU: OLLAMA_NUM_GPU=999 auto-adapts to any VRAM size (no hard-coded 6GB)
- ZIM downloads remain in kiwix_download.sh (separate, large files)

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-20 12:50:59 +00:00