NEXO 7.1.0 — post-F0.6 contract closure

Published 2026-04-19. Minor release.

v7.0.0 split the runtime physically into ~/.nexo/{core,personal,runtime}. v7.0.1 fixed the one remaining shared-DB caller that still pointed at the dead legacy path. v7.1.0 closes the next layer of debt: the runtime now behaves consistently as a product contract, not as a partially migrated operator install with a few new directories on top.

Canonical runtime root

~/.nexo/core is now treated as the canonical shipped code root across install, update, cron sync, and client sync. Layout finalisers re-run automatically after runtime sync/update so fresh installs, upgraded installs, and packaged Desktop bundles stop drifting into “mixed tree” states.

Guardian surfaces shared with Desktop

Brain now exports a canonical guardian-runtime-surfaces.json snapshot under ~/.nexo/personal/brain/. Desktop consumes that snapshot for live Guardian datasets such as known hosts, read-only hosts, destructive command patterns, projects, legacy mappings, vhost mappings, DB production markers, and entity context. That replaces the old situation where Desktop could quietly drift behind Brain on safety-critical datasets.

Core automations are product surfaces now

email-monitor, followup-runner, and the new morning-agent are now closed core automations with a proper runtime contract: enable/disable, schedule or interval overrides where relevant, prerequisite checks, and additive operator instructions separate from the product prompt. nexo-send-reply.py remains the shared helper behind those automations rather than an exposed standalone product automation.

Email routing is no longer a one-account story

The email runtime model now distinguishes the single agent mailbox from multiple operator mailboxes on the same email_accounts surface. Operator inboxes can carry human descriptions plus can_read, can_send, and is_default permissions so automations and Desktop can route followups, replies, alerts, and fallback destinations without personal hardcodes.

Local classifier baseline auto-installs

The local classifier baseline now auto-installs on fresh installs and on nexo update unless the operator explicitly opts out with NEXO_LOCAL_CLASSIFIER=off. The installer writes state to runtime operations, logs failures without crashing the main update flow, and leaves subsequent updates free to retry if the machine was offline during the first attempt.

Coordinated Desktop release

The companion NEXO Desktop release v0.22.0 turns the same contract into a closed product flow: guided bootstrap, Claude login handoff, productised automations, richer email surfaces, cleaner preferences, and Brain/Desktop Guardian parity. Brain remains fully usable on its own as the open public runtime.