Restartability question

A good local agent should survive amnesia.

If closing the tab, restarting the worker, or losing the session destroys continuity, the stack was borrowing trust from a warm process. Dependable local-first agents make the protocol forget, keep durable state behind explicit handles, and carry continuity in small inspectable IDs.

Opinions A good local agent should survive amnesia.
Join newsletter

Most local-agent demos hide one of three crutches: a sticky session, an immortal tab, or a host process that never dies. The higher-ROI question is ruder: if you kill the connection right now, does the agent still know what job it is doing? A trustworthy system should.

The thesis:

The model should remember handles, the server should remember durable state, and the protocol should remember nothing. If continuity only exists because one worker stayed warm, you do not have dependable local-first infrastructure yet.

Why this became a serious 2026 question

On May 21, 2026, the MCP maintainers published the release candidate for the July 28, 2026 specification and made the direction explicit: a stateless core, no handshake-bound session, self-contained requests, normal HTTP routing, and cacheable list results with TTLs (MCP release candidate). The production subtext is blunt. A server that used to need sticky sessions and a shared session store can now run behind ordinary load balancing only if continuity has already been pulled out of the transport.

A few weeks earlier, SEP-2567 finalized the deeper rule: implicit protocol sessions are replaced by explicit, server-minted state handles that the model threads through later calls. The proposal is candid about why. Session lifetime never converged across clients, and against some clients the state was destroyed before the next tool call even arrived.

Then the official Tasks extension locked down the long-running side of the story. If a server returns a task handle, that handle must be durably created before the response goes out, so a later tasks/get can actually find it. That is what dependable continuity looks like: a real identifier with retrieval semantics, not a promise that the same worker will still be alive.

01

Forget the connection.

The protocol layer is moving away from session memory. Every call should make sense on its own or carry the exact handle it depends on.

02

Name the state.

If the workflow spans calls, the state needs a visible identifier: task_id, browser_id, run_id, or some other explicit handle the model can pass forward.

03

Acknowledge only durable work.

A returned task handle should already resolve. Otherwise the client cannot tell whether the server accepted work or merely wished it had.

04

Stop treating auth as implicit trust.

Audience-checked tokens, no passthrough, and explicit approval boundaries matter more once the system is allowed to survive retries, routing shifts, and UI actions.

The unusual claim: deliberate forgetting is a feature

Builders often treat memory as sophistication. In local agent systems, too much of it is usually stagecraft. The demo looks smooth because the same terminal, browser, or server instance quietly preserves facts the formal contract never modeled. The first restart turns that hidden memory into operator labor.

This is why the new MCP direction is more radical than it looks. It is not merely transport cleanup. It is a demand that continuity become inspectable. You should be able to point at the thing carrying the workflow forward, whether that is a handle in a tool argument, a durable task ID, a receipt file, or a bounded state store on the server.

Why local-first stacks are especially tempted to cheat

Local-first makes it easy to smuggle continuity through process lifetime. A warm shell remembers the current directory. A resident browser instance remembers a login. A model server in one process accumulates assumptions a second process cannot see. The result is a stack that feels trustworthy only while the exact same machine story stays alive.

But the model tier itself is already becoming more modular. NVIDIA's Nemotron 3 Super launch post recommends a Super + Nano pattern: use Nano for targeted individual steps and escalate to Super for harder multi-step planning. Meanwhile, the vLLM docs describe `vllm serve` as an async OpenAI-compatible API server that handles concurrent request rendering. In other words, reasoning and serving are already separable lanes. Hidden continuity is no longer a good excuse.

Surface Bad continuity Dependable continuity
Tool routing Same worker must stay warm Any worker can continue from explicit handles
Long-running work Hope the process survives Poll a durable task_id
Host operations Generic shell with hidden context Bounded tools with named arguments and receipts
Model selection One prestige model for everything Small step model plus high-reasoning escalation
UI actions Clicks bypass the audit path Sandboxed, loggable, approval-aware calls

NemoClaw and OpenShell are where the philosophy becomes testable

The host-ops layer is where agent romance usually becomes operational debt. If a local agent can reach the machine, it should not depend on a free-form shell plus soft social trust. It should expose narrower surfaces with obvious intent, authority, and output.

That is why bounded tools matter more than vague empowerment. A surface like nemoclaw_doctor, nemoclaw_run, or openshell_run can be reasoned about, permissioned, logged, and reviewed. A magical shell that works only because the same PTY is still warm is not a contract. It is an anecdote.

The same logic shows up on the UI side. MCP Apps, announced on January 26, 2026, standardize sandboxed iframes, auditable JSON-RPC messages, and optional explicit approval for UI-initiated tool calls (MCP Apps). That is the right direction: let the interface get richer without letting the audit path disappear.

The amnesia test

Here is the fastest way to tell whether your local-first agent stack is growing up:

  1. Kill the session: close the client tab or restart the worker. The next request should still be understandable because protocol version, capabilities, and needed state are explicit.
  2. Move the request: route the follow-up call to a different instance. If the workflow is stateful, the model should pass the exact handle the second instance needs.
  3. Poll the work: if a server acknowledged a long-running action, tasks/get should be able to find it right away.
  4. Rotate the auth story: the server should reject tokens not meant for it and never pass through a token it received from the client to some downstream API.
  5. Click through the UI: interface-driven actions should stay sandboxed, loggable, and approval-aware rather than smuggling authority around the tool contract.
  6. Check model routing: routine steps should stay on the cheaper step executor, while only the genuinely hard planning move escalates to the bigger reasoning model.
  7. Read the receipt: after a failure, another operator should be able to tell whether the break was in state, authority, or reasoning without recreating the run from memory.

The security reason is not optional

This restartability discipline is not only about elegance. The MCP authorization spec says servers must validate that tokens were issued specifically for them, must reject invalid or expired tokens with 401, and must not pass client tokens through to upstream APIs (MCP authorization). Once transport memory stops doing you favors, sloppy token handling and implicit approval become much easier to spot. That is good. A local stack with host authority needs sharper security seams, not softer ones.

What Chopshopr takes from the rule

For Chopshopr's world, the right reading is practical. Keep the default local model cheap and stable. Escalate only when the task shape actually demands deeper planning. Keep host power behind bounded MCP tools. Prefer visible handles and receipts over warm invisible state. Treat build, deploy, and live verification as part of the artifact rather than an optional epilogue.

The sentence I keep coming back to is this: the model should remember the handle, not the protocol remember the model. Once that becomes true, the local agent starts to feel less like a demo and more like a tool another operator can trust.

Source list