NEXO 7.10.0 — Removes the LLM proxy override path
Published 2026-04-26. Minor release over v7.9.34.
Why this revert
Between 7.9.28 and 7.9.34 NEXO Brain shipped an opt-in override surface intended for a third-party orchestrator (NEXO Desktop) to redirect every Anthropic SDK call from Brain to a custom proxy. Two files at ~/.nexo/config/llm_endpoint.json and ~/.nexo/config/auth_provider.json declared the proxy URL and the local helper command that produced the bearer; concrete model names from resonance_tiers.json were translated to wire aliases (nexo-max, nexo-high, nexo-medium, nexo-low, nexo-mini) and every request carried an Idempotency-Key header so the proxy could dedup transparent retries. The contract was symmetric for SDK calls (in call_model_raw.py) and CLI children (via _apply_llm_endpoint_override in agent_runner.py), so cron jobs like deep-sleep, evolution, followup-runner, email-monitor and morning-agent could all pass through the same proxy.
NEXO Desktop's commercial model has changed. Desktop is now a wrapper over the user's own Claude Code subscription (Max / Pro), with a separate Desktop licence on top of it. There is no Sanctum bearer, no NEXO credit accounting, no NEXO-side proxy in the loop. Every Anthropic call from Brain — SDK direct or CLI spawn — goes to api.anthropic.com using the user's existing OAuth (the one stored under ~/.claude/ and consumed by Claude Code) or a plain ANTHROPIC_API_KEY from the environment.
What was removed
src/call_model_raw.py: the override-mode block,_resolve_brain_config_dir/_brain_config_dir,_read_versioned_config,resolve_api_base_url,_override_force_disabled,is_override_mode,_resolve_auth_provider_token,resolve_auth_token,_resolve_override_alias, the_CONCRETE_TO_ALIASmap, theidempotency_keyparameter, theIdempotency-Keyheader injection, theNEXO_RAW_ANTHROPICescape hatch. The Anthropic SDK is now instantiated directly with the resolved key againstapi.anthropic.com.src/agent_runner.py: the entire_apply_llm_endpoint_overridehelper and every call site._headless_envno longer redirects to a proxy. The bare-mode key resolution no longer reads a proxy bearer from the spawn env; it asks_resolve_anthropic_api_keydirectly. CLI children spawn with a clean environment so deep-sleep, evolution, followup-runner, email-monitor and morning-agent run againstapi.anthropic.comusing the OAuth Claude Code already has under~/.claude/.docs/api/override-files.md: deleted. There is no NEXO override surface to document any longer.tests/test_call_model_raw_overrides.py,tests/test_call_model_raw_overrides_e2e.py,tests/test_agent_runner_override_env.py: deleted.
Operator note
If you have ~/.nexo/config/llm_endpoint.json or ~/.nexo/config/auth_provider.json on disk from a previous Desktop install, Brain leaves them alone — it simply stops reading them. The Desktop installer is being updated to remove these files on its side.
Verification
59 tests green across call_model_raw, email_monitor_checkpoints, email_monitor_parser, pre_tool_use_hook, fase4_lint_baseline, security_baseline. Repo-wide grep for nexo-max, nexo-high, nexo-medium, nexo-low, nexo-mini, llm_endpoint.json, auth_provider.json, NEXO_PROXY, nexo-desktop.com/api/proxy, _apply_llm_endpoint_override, is_override_mode, resolve_api_base_url, resolve_auth_token, NEXO_RAW_ANTHROPIC returns 0 hits across src/, docs/, tests/, scripts/, bin/. Bandit clean. Ruff clean. sync_release_artifacts.py --check passes.