Skip to content

v2.53.1

Latest

Choose a tag to compare

@bigsk1 bigsk1 released this 30 Jun 03:36

Highlights

Ollama Cloud as a cloud-mode chat provider

You can run cloud deployment mode with Ollama Cloud as the primary LLM without switching Jarvis to local mode or rebuilding cloud Memory/Intelligence databases. Your OLLAMA_BASE_URL host login first using ollama signin and once authenticated pull the cloud models you want to use, then you can use in jarvis-voice.

  • LLM_PROVIDER=ollama in config/cloud.env keeps cloud DBs, cloud embeddings (by default), and cloud Tool RAG.
  • New OLLAMA_CLOUD_MODEL selects the cloud-tagged primary model (minimax-m3:cloud, qwen3.5:cloud, *-cloud, etc.). Local OLLAMA_MODEL in local.env is not used as the cloud primary unless it is already cloud-tagged.
  • New EMBEDDING_PROVIDER splits chat from embeddings: cloud defaults to openai (1536-dim) so existing cloud vector data stays valid; local defaults to ollama (768-dim).
  • Cloud mode no longer silently appends localhost to OLLAMA_BASE_URL. List every host you intend to use, in priority order.
  • Ollama Cloud usage omits local GPU num_ctx tuning, keeps token counts, and reports subscription billing as unknown instead of $0.
  • See: docs/ollama/README.md

Mode isolation and scoped config

Runtime config is now scoped per request so one Web UI process can serve cloud and local sessions without cross-reading provider, model, embedding, or URL settings.

  • config_scope(mode) wraps API routes, orchestrator runs, intelligence reflection, embeddings, and related scripts.
  • Web chat, Canvas, Memory, Intelligence, and Docs honor session startup mode; Web UI settings stay aligned with the active session mode instead of drifting from a stale global default.
  • Sync and migration scripts validate the selected mode before touching the matching Memory database.
  • Regression coverage added for scoped config, intelligence mode cache, and API mode boundaries.

Docker stack refinements

Follow-up hardening on the experimental Docker path introduced in v2.52.0.

  • Compose service map — default docker compose up -d starts jarvis-api, jarvis-web, jarvis-canvas, and jarvis-services (background daemons). Memory, Intelligence, and Docs need --profile extras.
  • Proactive speech in Docker — reminders and price alerts route through browser TTS when JARVIS_DEPLOYMENT=docker. Keep the Web tab open with TTS enabled; native installs still use host speakers and do not duplicate audio in hybrid setups.
  • MCP tool sync — Docker MCP discovery and sync-tools.py run from jarvis-web only (not jarvis-api). Missing MCP sidecar images no longer block Web UI startup; init retries sync on the next jarvis-web recreate after you pull images.
  • web_config.json bind — Compose uses create_host_path: false so a missing settings file fails fast instead of mounting an empty directory (which broke Settings saves).
  • Shared fonts — Web UI font routes serve bundled assets consistently inside containers.
  • Docs — Linux guide documents default vs extras services, config reload steps, and MCP socket GID discovery on Windows/macOS. See docs/docker/README.md, docs/docker/MAC-WINDOWS.md.

Model prompt overrides

Small YAML overlays under config/models/<provider>/<model>/prompt_overrides.yaml patch model-specific quirks without editing global prompts.

  • Applies to routing, QA synthesis (auto/casual TTS condensation), tool calling, Completion Guard eval, and intelligence reflection sections.
  • Runtime IDs like minimax-m3:cloud resolve to base folders such as config/models/ollama/minimax-m3/ (Windows-safe; no : in paths).
  • Overrides load from disk on each orchestrator request — add or edit a folder while containers run; the next chat picks it up without a full rebuild.
  • Shipped example: MiniMax M3 cloud suppresses spoken meta lead-ins during voice condensation (no "Here is the condensed voice-friendly summary:" preamble).
  • See: docs/MODEL_PROMPT_OVERRIDES.md, config/models/README.md

Tools and hygiene

  • create_social_clipMONEYPRINTER_API_URL is required in env; the hardcoded homelab default was removed. Set the URL in config/cloud.env or config/local.env before using the tool.
  • Superseded design and planning docs moved under docs/archive/ (OAuth, OpenAI Responses plan, sequential thinking architecture, Docker planning, and others).

Fixes & Polish

  • Hardened mode isolation at API, intelligence, embedding, and scheduled-task boundaries.
  • Docker MCP startup tolerates missing sidecar images and retries Tool RAG sync later.
  • OAuth archive doc placeholders sanitized (no live redirect URIs in tracked examples).
  • Docs index and install guides aligned with scoped config, Ollama Cloud, and current Docker behavior.

Docs & README

  • Rewrote docs/ollama/README.md for cloud vs local Ollama, embedding split, and Docker host URLs.
  • Docker quick start lists all seven Compose services and what --profile extras adds.
  • MAC/WINDOWS guide adds a config-change cheat sheet (which services to recreate after env edits).
  • Changelog and README cross-links updated for v2.53.1.

Upgrade Notes

Compare your env files first

If you installed before v2.53.1, diff your live env against the new examples. Several keys were added or clarified; copying the whole file will wipe your secrets.

cd ~/jarvis-voice
git fetch --tags
git diff v2.52.0..HEAD -- config/cloud.env.example config/local.env.example docker.env.example

Then merge the new lines into your existing config/cloud.env, config/local.env, and root .env.

Native installs

git pull
source ~/jarvis-venv/bin/activate   # or your JARVIS_VENV
./bin/start --stop && ./bin/start

Optional after pull:

./bin/backfill-memory-types cloud    # and/or local
./bin/check-memory-sync-health.py cloud
./bin/check-embeddings-health.py cloud

If you use Ollama Cloud as your cloud chat provider, set the new keys in config/cloud.env (see below) and restart Jarvis.

Docker users

No compose file restructure beyond v2.52.0. Pull latest, rebuild when code or dependencies changed, recreate containers after env edits.

docker compose down
git pull
docker compose build --pull
docker compose --profile extras up -d --force-recreate

Before first bring-up on a fresh clone:

cp -n jarvis-web/config/web_config.json.example jarvis-web/config/web_config.json

Config edits do not hot-reload inside running containers. Bind mounts update on disk immediately, but Python services read env at startup. After changing cloud.env, local.env, or root .env, recreate the affected services. See the cheat sheet in docs/docker/MAC-WINDOWS.md.

Tool RAG after pull:

# Standard stack
docker compose exec jarvis-api python bin/sync-tools.py cloud --force
docker compose exec jarvis-api python bin/sync-tools.py local --force

MCP stack (docker-compose.mcp.yml): run sync through jarvis-web, not jarvis-api:

docker compose -f docker-compose.yml -f docker-compose.mcp.yml exec -T jarvis-web rm -f data/.docker_tool_profile_synced
docker compose -f docker-compose.yml -f docker-compose.mcp.yml up -d --force-recreate jarvis-web

Do not run the native watchdog cron while Docker manages background services.

Canvas links in old conversations still show whatever CANVAS_PUBLIC_URL was when those messages were saved. Set the correct public URL in env and recreate jarvis-web + jarvis-canvas; new chats pick it up. Old thread URLs are not rewritten automatically.

Local mode

Unchanged entry points:

./bin/start --local

Or from the dashboard: Start All Services (Local).


New and updated environment variables

Review these against your live files. Defaults shown match *.env.example as of v2.53.1.

config/cloud.env

# Chat provider — ollama is now a first-class cloud option
LLM_PROVIDER="xai"

# NEW — primary Ollama model when LLM_PROVIDER=ollama (cloud-tagged only)
OLLAMA_CLOUD_MODEL="minimax-m3:cloud"

# NEW — independent of chat provider; keep openai for existing cloud vector data
EMBEDDING_PROVIDER=openai

# Ollama Cloud example (uncomment and set when using ollama in cloud mode):
# LLM_PROVIDER="ollama"
# OLLAMA_BASE_URL="http://your-signed-in-ollama-host:11434"
# OLLAMA_CLOUD_MODEL="minimax-m3:cloud"
# EMBEDDING_PROVIDER=openai

# Cloud mode does NOT append localhost to OLLAMA_BASE_URL — list hosts explicitly
# OLLAMA_BASE_URL="http://gpu-host:11434"

# User-facing Canvas links (set to LAN IP/hostname for Docker or remote browsers)
CANVAS_PUBLIC_URL="http://localhost:8890"

# Social clips — required when using create_social_clip (no baked-in default URL)
# MONEYPRINTER_API_URL="http://your-moneyprinter-host:8080"
# MONEYPRINTER_MAX_WAIT_SEC=1200
# MONEYPRINTER_VOICE="en-CA-LiamNeural-Male"

config/local.env

OLLAMA_MODEL="gemma4"

# NEW — local embeddings default; use openai only if you intentionally share cloud vectors
EMBEDDING_PROVIDER=ollama

CANVAS_PUBLIC_URL="http://localhost:8890"

# MONEYPRINTER_API_URL="http://your-moneyprinter-host:8080"

Root .env (Docker Compose only — not mounted into app config)

JARVIS_MODE=cloud
JARVIS_DOCKER_UID=1000
JARVIS_DOCKER_GID=1000

# Keep docker here even when using docker-compose.mcp.yml
JARVIS_DOCKER_TOOL_PROFILE=docker

# MCP stack only — socket group for jarvis-web Docker access
# Linux: stat -c '%g' /var/run/docker.sock
# Windows/macOS: docker run --rm -v /var/run/docker.sock:/var/run/docker.sock alpine stat -c '%g' /var/run/docker.sock
# JARVIS_DOCKER_SOCKET_GID=999

JARVIS_DOCKER_API_AUTH=false

Pull MCP sidecar images before first MCP stack start if Brave Search or Fetch are enabled:

docker pull mcp/fetch
docker pull mcp/brave-search

Links