Highlights
Latency-aware status updates (Web, CLI, and wake word)
Progress speech no longer blocks tool execution. Status LLM work runs on a background path with a short debounce and deadline, while final answers keep priority over in-flight status TTS.
- 250 ms debounce — very fast tools can finish silently before any status phrase is spoken.
- 1 s Status LLM deadline — static fallback wins after the deadline; late LLM replies are discarded instead of delaying the tool path.
- Bounded Status LLM context — prompts use a sanitized execution snapshot (not raw tool dumps or chat history), with explicit
... [truncated]markers on long input. - One Status LLM at a time — concurrent status summarization is serialized; turn completion cancels pending native generation/playback.
- Web final-audio priority — errors, cancellation, mode changes, and completed replies abort pending status TTS so progress audio cannot talk over the answer.
- Persistent status-only TTS cache — Web (
~/.cache/jarvis/status-tts-web/) and native (~/.cache/jarvis/status-tts/) caches are independent from final-response TTS. - ElevenLabs split models —
ELEVENLABS_STATUS_TTS_MODEL(for exampleeleven_flash_v2_5) for fast/cheaper progress phrases;ELEVENLABS_TTS_MODEL(for exampleeleven_v3) and the sameELEVENLABS_TTS_VOICEfor final speech. - Observability — Status LLM provider calls log as
prompt_type=status_updateinlogs/llm-calls-*.jsonl; lifecycle outcomes live inlogs/status-llm/status-updates-*.jsonl. - Dashboard cache tools — warm native cloud/local phrase caches; clear native, Web-only, or all status TTS caches separately.
- See:
docs/STATUS_UPDATES.md
xAI Grok CLI OAuth subscription
Use a Grok CLI login session for primary chat without storing API keys in Jarvis env — while keeping API-key-only surfaces explicit.
XAI_AUTH_MODE=auto|api_key|oauth—autoprefersXAI_API_KEYwhen set, otherwise~/.grok/auth.jsonfromgrok login.XAI_OAUTH_MODEL=grok-build— documented direct-chat OAuth model; Composer coding-agent models stay blocked as drop-in chat models.- OAuth covers primary chat, Jarvis tool calling, Status LLM (when configured), and Completion Guard eval (when pointed at xAI).
- Still API-key-only: xAI server-side search, uploaded-image vision, image/video generation, and xAI TTS.
- Web Settings → System shows sanitized OAuth auth/quota state and supported OAuth chat models from
grok models. - See:
docs/XAI_PROVIDER.md
Ollama Cloud routing and presentation
Cloud mode can use Ollama Cloud through either a signed-in daemon or the direct ollama.com API.
OLLAMA_API_KEY(optional) — when set in cloud mode, cloud-tagged models callhttps://ollama.comdirectly;OLLAMA_BASE_URLis not used for those requests.- Without the key, cloud models still require a signed-in daemon at
OLLAMA_BASE_URL(ollama signinon that host). - Cloud Ollama status in Web Settings uses clearer model labels and subscription-style billing presentation.
- Local mode:
ALLOW_OLLAMA_CLOUD=falseby default — opt in if a local Jarvis install should reach cloud-tagged Ollama models. - See:
docs/ollama/README.md
Credential-aware tools and provider availability
Tools and providers now declare what credentials they need; unconfigured entries stay out of the active registry instead of failing mid-turn.
- Optional
availabilityblocks inskills/*.tool.jsongate registration at runtime (all_of_env,config_files,webhook_registry,provider_requirements). ./bin/manage-tools.py --mode <mode> listmarks unavailable tools;./bin/sync-tools.pyreports excluded tools and disables stale Tool RAG rows.- Web UI validates provider/tool saves against live credential availability.
- New minimal template:
config/cloud.openai.env.example— OpenAI-only quick start with one required secret. - See:
skills/README.md,docs/TOOL_MANAGEMENT.md
Models, media, and Web UI
- Shared model catalog — chat, image, and video defaults, aliases, capabilities, and pricing metadata centralized in
lib/model_catalog.py. - Anthropic — Claude Sonnet 5 default; catalog drift audit (
./bin/audit-anthropic-models.py); model-aware cache cost tracking. - OpenAI — catalog drift audit (
./bin/audit-openai-models.py); GPT-5.5 surfaced for manual review (not auto-default). - xAI — catalog drift audit (
./bin/audit-xai-models.py); corrected Grok 4.20 canonical IDs and long-context pricing tiers. - Gemini — Omni Flash preview video (Interactions API); image SDK migration to
google.genai; catalog-backed attachment resolutions. - Web — truthful usage/tooltip metadata for loaded conversations; Canvas export hardening and gallery refresh feedback; vision failure/retry improvements; video poster fixes; false WebSocket teardown noise removed.
- Shell helpers — managed Bash/Zsh Jarvis command block via
./bin/install-jarvis-shell-commands.sh.
Fixes & Polish
- Fixed status cache warm truncating phrase text (
aplaystdin consumption during./bin/status-cache warm); warm now detaches stdin and logs progress to stderr. - Added
status-cache clear web-cloud/web-localplus matching dashboard actions (native vs Web UI caches). - Status LLM output strips exclamation marks before TTS (static JSON fallback phrases unchanged).
- Provider-specific status TTS cache keys (Flash/v2 includes style/speaker boost; v3 omits unused settings; changing final model no longer invalidates an explicit Flash status cache).
- Hardened Web vision failures, intel mutation startup recovery, and self-play safety boundaries.
- Retired obsolete integration harnesses; refreshed focused pytest coverage for status, provider availability, and Web runtime paths.
Docs & README
- New/updated:
docs/STATUS_UPDATES.md,docs/XAI_PROVIDER.md,docs/MODEL_PROMPT_OVERRIDES.md,docs/ollama/README.md,config/models/README.md. - Changelog and README cross-links updated for v2.54.1.
- Full changelog:
docs/README.md— Change Log section.
Upgrade Notes
Compare your env files first
If you installed before v2.54.1, diff your live env against the new examples. Copying whole files will wipe your secrets.
cd ~/jarvis-voice
git fetch --tags
git diff v2.53.1..v2.54.1 -- config/cloud.env.example config/local.env.example config/cloud.openai.env.exampleThen merge the new lines into your existing config/cloud.env, config/local.env, and root .env (Docker only).
Native installs
git pull
git checkout v2.54.1 # or stay on your tracking branch after merge
source ~/jarvis-venv/bin/activate # or your JARVIS_VENV
./bin/start --stop && ./bin/startAfter upgrading status/TTS behavior, optional but recommended if you previously ran ./bin/status-cache warm on a build before the warm-loop fix:
./bin/status-cache clear cloud # native CLI/wake cache
./bin/status-cache clear web-cloud # Web UI status cache onlyRestart jarvis-web if it was already running so Settings → System picks up new status/TTS fields.
Docker users
No compose restructure beyond v2.53.x. Pull, rebuild when dependencies changed, recreate after env edits.
docker compose down
git pull
docker compose build --pull
docker compose --profile extras up -d --force-recreateConfig edits do not hot-reload inside running containers. See the cheat sheet in docs/docker/MAC-WINDOWS.md.
Local mode
Unchanged entry points:
./bin/start --localOr 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.54.1.
config/cloud.env
# ===== Status updates (NEW / updated in v2.54.1) =====
# Wait before first status emit so fast tools can finish silently
STATUS_UPDATE_DEBOUNCE_MS=250
# Lifecycle audit logs: logs/status-llm/* and status_update rows in logs/llm-calls-*
STATUS_LOGGING_ENABLED=true
# Status LLM timeout only — tools never wait; static fallback wins after this
STATUS_LLM_DEADLINE_MS=1000
# ElevenLabs only — fast/cheap progress speech; final answers keep ELEVENLABS_TTS_MODEL
ELEVENLABS_STATUS_TTS_MODEL=eleven_flash_v2_5
# ===== Ollama Cloud (NEW) =====
# When set, cloud-tagged models use https://ollama.com directly (daemon URL ignored)
OLLAMA_API_KEY=""
# ===== xAI OAuth (NEW) =====
# auto | api_key | oauth
XAI_AUTH_MODE=auto
# Direct-chat OAuth model from `grok models` (Composer agents excluded)
XAI_OAUTH_MODEL="grok-build"
# Optional OAuth tuning (defaults usually fine):
# XAI_OAUTH_ALLOWED_MODELS="grok-build"
# GROK_CLI_PATH="$HOME/.local/bin/grok"
# XAI_OAUTH_AUTH_FILE="$HOME/.grok/auth.json"Existing status keys (present in v2.53.1 but central to this release — verify values if you have not touched them recently):
STATUS_UPDATES_ENABLED=true
STATUS_UPDATE_INTERVAL=18
STATUS_SILENCE_PAD_MS=250
STATUS_CACHE_ENABLED=true
STATUS_LLM_ENABLED=true
STATUS_LLM_PROVIDER=openai
STATUS_LLM_MODEL=gpt-4o-mini
STATUS_LLM_MAX_TOKENS=30
ELEVENLABS_TTS_MODEL=eleven_v3 # final speech
ELEVENLABS_TTS_VOICE=your-voice-id-hereOpenAI-only quick start: new file config/cloud.openai.env.example — copy to config/cloud.env if you want a trimmed single-key template instead of merging into the full example.
config/local.env
# ===== Status updates (NEW / updated in v2.54.1) =====
STATUS_UPDATE_DEBOUNCE_MS=250
STATUS_LOGGING_ENABLED=true
STATUS_LLM_DEADLINE_MS=1000
# ===== Ollama Cloud from local mode (NEW) =====
# Default false — set true only if this local install should call cloud-tagged Ollama models
ALLOW_OLLAMA_CLOUD=false
# ===== Optional cross-provider keys (NEW in example — only if you use them locally) =====
OPENAI_API_KEY=""
XAI_API_KEY=""Existing status keys (verify if upgrading from v2.53.1):
STATUS_UPDATES_ENABLED=true
STATUS_UPDATE_INTERVAL=18
STATUS_SILENCE_PAD_MS=250
STATUS_CACHE_ENABLED=true
STATUS_LLM_ENABLED=false # example default; enable if hardware can spare a small local model
STATUS_LLM_PROVIDER=ollama
STATUS_LLM_MODEL=qwen2.5:1.5b
STATUS_LLM_MAX_TOKENS=30Local status TTS continues to use say-status-local.sh with TTS_PROVIDER / Kokoro or Qwen3 settings — there is no separate ELEVENLABS_STATUS_TTS_MODEL unless you run ElevenLabs in cloud mode.
Root .env (Docker Compose only)
No new required keys for v2.54.1 beyond v2.53.1. Keep existing JARVIS_MODE, JARVIS_DOCKER_UID/GID, and MCP socket GID settings as documented in docs/docker/README.md.
Links
- Previous release: v2.53.1
- Full changelog:
docs/README.md - Status updates:
docs/STATUS_UPDATES.md - xAI provider (OAuth):
docs/XAI_PROVIDER.md - Ollama in Jarvis:
docs/ollama/README.md - Model prompt overrides:
docs/MODEL_PROMPT_OVERRIDES.md - Docker (Linux):
docs/docker/README.md - Docker (macOS/Windows):
docs/docker/MAC-WINDOWS.md