diff --git a/apps/agent-zero/agent-zero.yaml b/apps/agent-zero/agent-zero.yaml index 0c58f96..2362ffd 100644 --- a/apps/agent-zero/agent-zero.yaml +++ b/apps/agent-zero/agent-zero.yaml @@ -92,13 +92,16 @@ subjects: # ============================================================================= # Agent Zero — AI Agent Web UI (NUC Edition, Blue Jay Profile) # ============================================================================= -# Connects directly to fc-llm-bridge for chat + util + embeddings + browser. +# Connects directly to fc-llm-bridge for chat + internal util/embed + browser. +# Agent Zero's internal util/embed slots stay on the bridge's OpenAI-compatible +# /v1 surface, while browser + corpus-search use the Ollama-compatible /api/* +# surface through OLLAMA_HOST. # Blue Jay profile with 21 tools, 3 prompts, 4 extensions. --- # FC LLM Bridge API key for Agent Zero (ADR-088 chat/util/embed/browser routing). # Syncs from 1Password item "FC LLM Bridge API Keys" (field: agent-zero-k8s). -# Consumed by chat, util, embeddings, browser, and corpus-search requests +# Consumed by chat, internal util/embed, browser, and corpus-search requests # that traverse fc-llm-bridge. apiVersion: onepassword.com/v1 kind: OnePasswordItem @@ -135,7 +138,7 @@ metadata: annotations: agent-zero/deployment: "nuc" agent-zero/profile: "bluejay" - agent-zero/ollama: "fc-llm-bridge fronts edge1 Pi 5 + AI HAT+ Ollama for cluster chat/util/embed/browser traffic; workstation Ollama remains private dev hardware" + agent-zero/ollama: "fc-llm-bridge fronts edge1 Pi 5 + AI HAT+ Ollama for cluster browser/corpus-search traffic; internal chat/util/embed route through the bridge's authenticated OpenAI surface" spec: replicas: 1 selector: @@ -228,11 +231,12 @@ spec: # chat_model: FlowerCore LLM Bridge (ADR-088) — OpenAI-compat, # spend-tracked, tier-aliased (fc:balanced → Claude Sonnet). # api_key comes from A0_SET_chat_model_api_key env var (overrides - # config.json). Utility / embedding / browser all point at the - # same bridge root and use Ollama-compatible endpoints there. + # config.json). Utility + embedding stay on the authenticated + # OpenAI-compatible /v1 surface; browser and direct tool traffic + # use the bridge's Ollama-compatible root via OLLAMA_HOST. mkdir -p /a0/usr/plugins/_model_config cat > /a0/usr/plugins/_model_config/config.json << 'MODELCFG' - {"allow_chat_override":true,"chat_model":{"provider":"openai","name":"fc:balanced","api_base":"http://fc-llm-bridge.fc-llm-bridge.svc:8080/v1","ctx_length":8192,"ctx_history":0.7,"vision":false,"kwargs":{"temperature":0,"num_ctx":8192}},"utility_model":{"provider":"ollama","name":"qwen2.5:1.5b","api_base":"http://fc-llm-bridge.fc-llm-bridge.svc:8080","ctx_length":8192,"ctx_input":0.7,"kwargs":{"num_ctx":8192}},"embedding_model":{"provider":"ollama","name":"nomic-embed-text","api_base":"http://fc-llm-bridge.fc-llm-bridge.svc:8080","kwargs":{}}} + {"allow_chat_override":true,"chat_model":{"provider":"openai","name":"fc:balanced","api_base":"http://fc-llm-bridge.fc-llm-bridge.svc:8080/v1","ctx_length":8192,"ctx_history":0.7,"vision":false,"kwargs":{"temperature":0,"num_ctx":8192}},"utility_model":{"provider":"openai","name":"fc:cheap","api_base":"http://fc-llm-bridge.fc-llm-bridge.svc:8080/v1","ctx_length":8192,"ctx_input":0.7,"kwargs":{"num_ctx":8192}},"embedding_model":{"provider":"openai","name":"fc:embedding","api_base":"http://fc-llm-bridge.fc-llm-bridge.svc:8080/v1","kwargs":{}}} MODELCFG # Strip heredoc indentation sed -i 's/^ //' /a0/usr/plugins/_model_config/config.json @@ -256,8 +260,9 @@ spec: # Chat model — routed through FlowerCore LLM Bridge (ADR-088) # so spend is tracked and tier aliases (fc:cheap/fc:balanced/fc:deep) # dispatch to Ollama or Anthropic via a single OpenAI-compat endpoint. - # Utility / embedding / browser now traverse fc-llm-bridge too so - # Agent Zero no longer needs a local Ollama proxy sidecar. + # Internal utility + embedding use the authenticated OpenAI surface, + # while browser/corpus-search use the bridge's Ollama-compatible + # endpoints so Agent Zero no longer needs a local proxy sidecar. - name: A0_SET_chat_model_provider value: "openai" - name: A0_SET_chat_model_name @@ -288,32 +293,22 @@ spec: value: "8192" - name: A0_SET_chat_model_kwargs value: '{"temperature": 0, "num_ctx": 8192}' - # Utility model — fast small helper tier through the same proxy + # Utility model — fast small helper tier through the OpenAI surface - name: A0_SET_util_model_provider - value: "ollama" + value: "openai" - name: A0_SET_util_model_name - value: "qwen2.5:1.5b" + value: "fc:cheap" - name: A0_SET_util_model_api_base - value: "http://fc-llm-bridge.fc-llm-bridge.svc:8080" - - name: A0_SET_util_model_api_key - valueFrom: - secretKeyRef: - name: fc-llm-bridge-api-keys - key: agent-zero-k8s + value: "http://fc-llm-bridge.fc-llm-bridge.svc:8080/v1" - name: A0_SET_util_model_kwargs value: '{"num_ctx": 2048}' - # Embedding model — nomic through the same proxy + # Embedding model — authenticated bridge alias to nomic-embed-text - name: A0_SET_embed_model_provider - value: "ollama" + value: "openai" - name: A0_SET_embed_model_name - value: "nomic-embed-text" + value: "fc:embedding" - name: A0_SET_embed_model_api_base - value: "http://fc-llm-bridge.fc-llm-bridge.svc:8080" - - name: A0_SET_embed_model_api_key - valueFrom: - secretKeyRef: - name: fc-llm-bridge-api-keys - key: agent-zero-k8s + value: "http://fc-llm-bridge.fc-llm-bridge.svc:8080/v1" # Browser model — small Gemma candidate through the same proxy - name: A0_SET_browser_model_provider value: "ollama"