123 Commits
Author SHA1 Message Date
haylan f40a2cff65 Merge remote-tracking branch 'origin/research/connecting-cloud-providers' 2026-09-02 20:04:44 +02:00
haylan 64243c65d7 Merge pull request 'fix(downloader): run as root to fix permission denied on models volume' (#18) from fix/downloader-permission-denied into main
Reviewed-on: #18
2026-09-02 18:03:59 +00:00
haylanandClaude-Bot 7863b04787 fix(downloader): run as root to fix permission denied on models volume
The curlimages/curl image drops to non-root curl_user (uid 100) by
default, but the models named volume is created root-owned by Docker,
so writes into it failed with 'Permission denied'.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q2CR8yawSf7pwAVYnjwFea
2026-09-02 20:03:38 +02:00
haylan 2ac4e91862 feat(chore): impelmented seecret generation 2026-09-02 19:51:54 +02:00
haylanandClaude-Bot 993f11d6de research: Claude Pro subscription vs Anthropic API for gateway backends
Answers whether the $20/mo Claude Pro subscription can be used as a
LiteLLM backend instead of a pay-per-token Anthropic API key. Finding:
no — Pro/Max OAuth credentials are contractually restricted to Claude
Code / native Anthropic apps (Consumer ToS + Usage Policy, actively
enforced server-side since March 2026). Documents the supported path:
a separate Anthropic Console API key as a model_list entry, same shape
as the existing llama.cpp entry. Same pattern applies to other
providers (ChatGPT Plus, Gemini subscriptions).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 08:51:38 +02:00
haylanandClaude-Bot f300c5b034 research: evaluate voidllm as a LiteLLM proxy replacement
Verified against the live GitHub repo/docs (not secondhand): real,
active, functioning AI gateway, ~5 months old, effectively
single-maintainer, BSL 1.1. Fails two of the requirements from
docs/research/proxy-tool-choice.md / issue #9 — no Anthropic Messages
inbound endpoint (VoidLLM's own docs say Claude Code's LLM traffic
can't be routed through it) and no request-priority/queuing feature.
Recommendation: stay on LiteLLM.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 08:42:23 +02:00
haylan 487573c533 Add build plan documentation for 4x Radeon AI PRO R9700 rackmount LLM server 2026-08-25 07:20:58 +02:00
haylanandClaude-Bot 5cb34b19f3 Migrate Open WebUI and coding CLIs to the AI proxy (resolves #15)
Open WebUI now points at litellm instead of llama-server directly, using a
provisioned virtual key. llama-server's host port is dropped (internal-only
on the ai-stack network) since the proxy is the only intended entry point
now. docs/coding-cli-setup.md repointed at the proxy's endpoints/ports with
per-CLI virtual keys instead of the old shared dummy key.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-25 07:18:03 +02:00
haylanandClaude-Bot 0aefb36a48 Author LiteLLM AI proxy service (resolves #14)
Adds litellm + litellm-db to docker-compose.yml, litellm-config.yaml with
custom shadow-cost pricing (Claude Sonnet 5 reference, per #11) and a
priority-scheduling stub (per #16, needs real-hardware smoke test), and
required LITELLM_MASTER_KEY/SALT_KEY/DB_PASSWORD env vars. Untested on real
hardware — that's #17. Open WebUI/coding CLIs still talk to llama.cpp
directly, migration is #15.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-25 07:11:15 +02:00
haylanandClaude-Bot 0342090e1c Document AI proxy request priority/queueing plan (resolves #16)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-25 07:07:20 +02:00
haylanandClaude-Bot 7e50e1867f Document AI proxy network exposure plan (resolves #13)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-25 07:05:01 +02:00
haylanandClaude-Bot 1c29e07762 Document AI proxy key onboarding process (resolves #12)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-25 06:56:51 +02:00
haylanandClaude-Bot a751e656e3 research: reference cloud pricing for LiteLLM shadow-cost estimate
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-25 06:49:38 +02:00
haylanandClaude-Bot a1c37de6b4 research: self-hosted AI gateway/proxy tool choice — recommend LiteLLM
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-25 06:45:10 +02:00
haylanandClaude-Bot c01ef8965d Fix docs: no localhost, wire up ai.home / ai.haylan.ch via existing NPM
Resolves wayfinder ticket #8. The stack is reached over LAN/WAN hostnames,
not localhost:
- Open WebUI: ai.home (LAN) and ai.haylan.ch (external, via DMZ) routed
  through the existing Nginx Proxy Manager instance to the published
  WEBUI_PORT — no new reverse-proxy service needed in this repo.
- llama.cpp's raw API stays LAN-only and unregistered in NPM (no auth of
  its own); coding CLIs reach it via the box's LAN IP or ai.home directly.

New docs/network-access.md documents the NPM proxy-host setup and the
LAN-only decision. coding-cli-setup.md and README updated to stop
referencing localhost.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-24 18:28:14 +02:00
haylanandClaude-Bot 7d8c9324b2 Write local-usage docs for Claude Code CLI, Kimi CLI, and OpenCode CLI
Resolves wayfinder ticket #6. Covers the two server endpoints (Anthropic
shim vs OpenAI-compatible), exact config for all three CLIs, and surfaces
the shared Qwen3.8-27B tool-calling risk plus OpenCode's own documented
local-backend brittleness up front rather than burying it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-24 18:19:56 +02:00
haylanandClaude-Bot b773d9cb8f research: OpenCode CLI install + local llama.cpp provider config
Answers issue #7. Confirms sst/opencode moved to anomalyco/opencode,
documents install methods, opencode.json provider config for a local
OpenAI-compatible server, and known tool-calling compatibility issues
against self-hosted backends (llama.cpp --jinja requirement, empty
tool_calls handling) plus Qwen3.8-27B-specific caveats.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-24 18:17:14 +02:00
haylanandClaude-Bot 408a1f16ae Ignore .claude/ worktree scratch dir
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-24 13:01:09 +02:00
haylanandClaude-Bot f0e473048d Author docker-compose stack: llama.cpp (ROCm) + Open WebUI + Qdrant + Lazytainer
Resolves wayfinder ticket #4. Wires up the locked decisions from the map:
- llama.cpp (ghcr.io/ggml-org/llama.cpp:server-rocm, gfx1201) serving
  Qwen3.8-27B-UD-Q4_K_XL.gguf, port published for direct Claude Code CLI /
  Kimi CLI access alongside Open WebUI.
- Open WebUI with WEBUI_AUTH on, RAG+Memory wired to a standalone Qdrant
  service.
- Lazytainer labels on llama-server for a 15 min idle-stop.
- Named Docker volumes only (models, qdrant-data, openwebui-data) — no host
  bind-mounts.
- One-off 'downloader' compose profile instead of a host-side script with
  its own dependencies, wrapped by scripts/download-model.sh.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-24 13:01:00 +02:00
haylan 19d62aefd3 Merge branch 'research/qwen3.8-27b-tool-calling' 2026-08-24 13:00:52 +02:00
haylanandClaude-Bot ce1ab05c3e docs: research Qwen3.8-27B Unsloth dynamic GGUF quant + VRAM budget
Resolves the wayfinder research question: unsloth/Qwen3.8-27B-GGUF ships
UD-Q4_K_XL.gguf (17.6GB) directly. Documents VRAM footprint on 32GB
RDNA4 (R9700/gfx1201) at 32K and 128K context via llama.cpp ROCm/HIP.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-24 12:16:42 +02:00
haylan a55fbcaa18 research: Qwen3.8-27B tool-calling compat with llama.cpp Anthropic shim 2026-08-24 12:16:09 +02:00
haylanandClaude-Bot 3d768181e3 Set up agent skills config and chart wayfinder map for local AI stack
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-24 12:13:21 +02:00