- kiwix_download.sh: add Ask Ubuntu, Super User, Unix & Linux SE, Server Fault
- mcp_server.py: add kiwix_search tool — models can now query all offline ZIMs
- local-ai-setup.sh: pass KIWIX_URL env to MCP container, add kiwix dependency
https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
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
- 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