Skip to content

Commit d92014a

Browse files
committed
drop LocalAI from default stack + dashboard polish
Operator directive 2026-05-11: 'docker.io/localai/localai:v2.20.0 07f03c3494ad 31.9 GB ... we don't need these components'. Disable mios-ai by default and point Hermes' auxiliary (compression / summarization) at Ollama instead of LocalAI -- one less daemon to keep alive, ~32 GB less image storage, no functional loss because Ollama serves the same /v1 surface and the same qwen3.5:2b model that the primary chat backend uses. mios.toml [quadlets.enable]: mios-ai = false # was true; opt-in via /etc/mios/mios.toml for # embeddings / image-gen / STT-TTS sidecars hermes/config.yaml auxiliary: base_url: http://mios-ai:8080/v1 -> http://mios-ollama:11434/v1 api_key: ${API_SERVER_KEY} -> "" (Ollama's /v1 accepts unauthenticated localhost; no shared secret needed for the loopback path. mios-ai stays in-tree as an opt-in sidecar -- aux can be repointed at it by an operator override under /etc/mios/hermes/config.local.yaml.) mios-dashboard.sh: * AI line removed -- Ollama line gains the model annotation. The dashboard now shows the canonical chain (Ollama -> Hermes -> Workspace) without the redundant LocalAI URL. * Hermes status probe -> /health (no-auth 200) instead of /v1/models (which returns 401 without the API_SERVER_KEY bearer; ep_dot's naive curl read that as DOWN every refresh). * 'WebUI' label -> 'Workspace' on port 3030 (the workspace owns that port now; Open WebUI moves to 3031 if re-enabled). * mios-hermes-workspace added to the Quadlet services list. * MIOS_AI_MODEL default qwen2.5-coder:7b -> qwen3.5:2b (matches mios.toml [ai].model from commit 95471ae).
1 parent b60e975 commit d92014a

3 files changed

Lines changed: 34 additions & 15 deletions

File tree

usr/libexec/mios/mios-dashboard.sh

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ fi
183183
# describes the OPERATOR'S login surface, not the running process.
184184
MIOS_LINUX_USER="${MIOS_USER:-${MIOS_LINUX_USER:-mios}}"
185185
[[ -z "${MIOS_VERSION:-}" ]] && MIOS_VERSION="$(cat /usr/share/mios/VERSION 2>/dev/null || cat /etc/mios/VERSION 2>/dev/null || echo "0.2.4")"
186-
MIOS_AI_MODEL="${MIOS_AI_MODEL:-qwen2.5-coder:7b}"
186+
MIOS_AI_MODEL="${MIOS_AI_MODEL:-qwen3.5:2b}"
187187

188188
# ── Frame helpers ────────────────────────────────────────────────────────────
189189
# Repeat a single char N times.
@@ -315,18 +315,28 @@ print_endpoints() {
315315
section_header "Self-replication loop"
316316
printf ' %s Forge %shttp://localhost:3000/%s\n' \
317317
"$(ep_dot http://localhost:3000/api/v1/version)" "$C_D" "$C_R"
318-
printf ' %s AI %shttp://localhost:8080/v1%s %s%s%s\n' \
319-
"$(ep_dot http://localhost:8080/v1/models)" "$C_D" "$C_R" "$C_GRY" "$MIOS_AI_MODEL" "$C_R"
318+
# Ollama is the canonical chat model surface (operator directive
319+
# 2026-05-11: drop LocalAI -- redundant ~32 GB image). Hermes
320+
# talks to Ollama via /v1; mios-ai (LocalAI) stays in-tree as an
321+
# opt-in sidecar for non-chat surfaces (embeddings, image-gen,
322+
# STT/TTS) but doesn't autostart.
323+
printf ' %s Ollama %shttp://localhost:11434%s %s%s%s\n' \
324+
"$(ep_dot http://localhost:11434/)" "$C_D" "$C_R" "$C_GRY" "$MIOS_AI_MODEL" "$C_R"
320325
printf ' %s Cockpit %shttps://localhost:9090/%s %slogin: %s / %s%s\n' \
321326
"$(ep_dot https://localhost:9090/)" "$C_D" "$C_R" \
322327
"$C_GRY" "${MIOS_LINUX_USER:-mios}" "${MIOS_DEV_DEFAULT_PASSWORD:-mios}" "$C_R"
323-
printf ' %s Ollama %shttp://localhost:11434%s\n' \
324-
"$(ep_dot http://localhost:11434/)" "$C_D" "$C_R"
325328
printf ' %s Search %shttp://localhost:8888/%s\n' \
326329
"$(ep_dot http://localhost:8888/)" "$C_D" "$C_R"
330+
# Hermes /v1/models needs Bearer auth -- returns 401 to ep_dot's
331+
# naive curl and reads as DOWN even when Hermes is healthy.
332+
# Probe /health instead (200, no auth required by Hermes Gateway).
327333
printf ' %s Hermes %shttp://localhost:8642/v1%s\n' \
328-
"$(ep_dot http://localhost:8642/v1/models)" "$C_D" "$C_R"
329-
printf ' %s WebUI %shttp://localhost:3030/%s\n' \
334+
"$(ep_dot http://localhost:8642/health)" "$C_D" "$C_R"
335+
# Default chat frontend is Hermes Workspace (operator directive
336+
# 2026-05-11). Open WebUI moves to :3031 if re-enabled; the legacy
337+
# 'WebUI' label here would be confusing now that 3030 is the
338+
# workspace, so rename it.
339+
printf ' %s Workspace %shttp://localhost:3030/%s\n' \
330340
"$(ep_dot http://localhost:3030/)" "$C_D" "$C_R"
331341
}
332342

@@ -335,7 +345,7 @@ print_quadlets() {
335345
local svc info name dot color
336346
for svc in mios-ai mios-forge mios-forgejo-runner mios-cockpit-link \
337347
mios-ceph mios-k3s ollama mios-searxng \
338-
mios-hermes mios-webui crowdsec-dashboard \
348+
mios-hermes mios-hermes-workspace mios-webui crowdsec-dashboard \
339349
mios-guacamole guacd guacamole-postgres; do
340350
info="$(service_status "${svc}.service")"
341351
IFS='|' read -r name dot color <<< "$info"

usr/share/mios/hermes/config.yaml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,17 @@ backend:
3030
# Auxiliary auto-detect: no provider available
3131
# (tried: openrouter, nous, local/custom, api-key)
3232
# and silently degrades (compression drops middle turns without a
33-
# summary, memory flush no-ops). Point it at the same mios-ai
34-
# (LocalAI OpenAI-compatible /v1) surface the rest of MiOS uses
35-
# so the agent stays 100% local-stack by default. API key reused
36-
# from /etc/mios/hermes/api.env so we don't add another secret.
33+
# summary, memory flush no-ops). Operator directive 2026-05-11
34+
# dropped LocalAI (mios-ai) -- redundant 31.9 GB image; Ollama
35+
# already serves the same /v1 surface. Aux now points at Ollama
36+
# too; the same backend handles primary chat AND the compression /
37+
# summarization passes. Empty api_key works because Ollama's /v1
38+
# accepts unauthenticated localhost requests by default.
3739
auxiliary:
3840
provider: local/custom
39-
base_url: http://mios-ai:8080/v1
41+
base_url: http://mios-ollama:11434/v1
4042
model: qwen3.5:2b
41-
api_key: ${API_SERVER_KEY}
43+
api_key: ""
4244

4345
api_server:
4446
# Bind / port / key / cors values come from the EnvironmentFile=

usr/share/mios/mios.toml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2170,7 +2170,14 @@ features = ["ai", "virtualization", "k3s"]
21702170
# force-disable a service even when it would otherwise run.
21712171
# ----------------------------------------------------------------------------
21722172
[quadlets.enable]
2173-
mios-ai = true
2173+
# Chat chain: ollama (LLM) -> mios-hermes (OpenAI gateway) ->
2174+
# mios-hermes-workspace (web frontend). mios-ai (LocalAI) and
2175+
# mios-webui (Open WebUI) stay in-tree but disabled by default:
2176+
# operator directives 2026-05-11 ("forget open webui for now",
2177+
# "we don't need these components" re LocalAI's 31.9 GB image).
2178+
# Flip to true in /etc/mios/mios.toml [quadlets.enable] to opt in
2179+
# (LocalAI for non-chat surfaces -- embeddings, image-gen, STT/TTS).
2180+
mios-ai = false # LocalAI -- opt-in only; chat goes via Ollama
21742181
mios-ceph = true
21752182
mios-k3s = true
21762183
mios-forge = true

0 commit comments

Comments
 (0)