Hosted Notebooks, Workstations, and One Notebook Shell
The nteract 2.6 draft brings hosted notebooks closer to the desktop app: shared NotebookView surfaces, owner-run cloud execution, workstation compute, faster hosted outputs, and cleaner MCP resources.
- Hosted notebooks can be shared, edited, and executed through owner-controlled runtime peers
- Desktop and cloud notebooks now converge on the same NotebookView shell, rail, capabilities, and actor model
- Publishing, widgets, output frames, Sift, and MCP resources got faster and harder to break
2.6 is the release where the browser notebook stops feeling like a read-only postcard from the desktop app.
This one is about making the same notebook surface show up in more places: local files, hosted rooms, shared links, runtime peers, workstation compute, and the agents that want to read or drive the notebook without inventing a second copy of it.
I've wanted nteract cloud notebooks to feel less like "publish a snapshot" and more like "keep working in the same room." This release is the big step in that direction.
Hosted notebooks you can work in
Hosted notebooks now have real room mechanics behind them. Owners can share notebooks, grant edit access, accept authenticated viewers, and keep browser sessions attached without turning every link into a one-off artifact.
The cloud app learned about app sessions, owner-gated sharing controls, edit access requests, invite storage, friendlier presence labels, and hosted widget state that survives more of the weird browser edges. The point is boring in the best way: a hosted notebook should feel like a notebook you can keep using.
Run it from the cloud, keep the runtime yours
2.6 starts connecting hosted notebooks to real compute instead of pretending the viewer is the runtime.
Runtime peers can attach to hosted rooms, accept execution intent, reconnect, re-auth, and publish their state back to the room. Workstations show up in the document rail and can be started from the hosted toolbar. There is a one-liner workstation install path in the current range, plus Anaconda API key support for the hosted side of the flow.
This is the shape I want for cloud notebooks: the browser owns the collaboration and sharing surface, but the runtime stays explicit. You can see when compute is offline, when a peer is attached, and when a room is waiting on a runtime instead of guessing.
One NotebookView
The desktop app and hosted cloud used to look related, but too much of the notebook chrome was duplicated. 2.6 cuts that down.
The notebook view now shares more of its shell: the rail, capability model, headers, host notices, package summaries, search, environment panels, hidden-cell affordances, output focus, and execution language. That sounds internal, but it changes how the app feels. The cloud notebook and the desktop notebook are now arguing less about what a notebook is.
You can see it in smaller things too: read-only markdown still navigates, editor controls gate themselves on host capabilities, execution status takes up less visual noise, and the left rail finally has enough structure to carry outline, packages, runtime, workstation, and search surfaces without becoming a junk drawer.
Markdown grew up
Markdown is no longer just a React-side preview bolted to cells.
This range moves markdown through the Rust/WASM markdown engine, adds richer document typography, fixes bare TeX environments, restores double-click editing, keeps document frames selectable, and uses markdown engine anchors for notebook outlines.
That matters for hosted notebooks because markdown is the bridge between "notebook as code scratchpad" and "notebook as report." If the cloud view is going to be a real shared document, markdown has to be stable, navigable, and pleasant to read.
Outputs and widgets got more durable
2.5 made outputs more explorable. 2.6 keeps pushing on the part where outputs must survive being published, framed, shared, cached, replayed, and read by tools.
Widgets now save more live metadata. Progress widgets hydrate correctly in hosted views. Sift picked up image thumbnails and image navigation. Engaged Sift frames behave better with scroll boundaries. Output frames respect host frame domains, hosted viewers preload the sidecars they need, and blob metadata is harder to corrupt when the same output shows up twice.
There is also a lot of unglamorous repair here: nested Arrow blobs, widget comm blobs, published output refs, first-paint theme seeding, direct output document transforms, and cached renderer assets. That is the work that makes a notebook output feel boringly present when it leaves your machine.
Hosted publishing is getting faster
The viewer path got a serious round of performance work.
Hosted notebooks now defer and stage more of the expensive output work: lazy output frame mounting, progressive output hydration, runtime WASM preloads, Sift WASM preloads, sidecar renderer assets, hosted output blob caching, viewer CSS splitting, and incremental live runtime projections.
The user-facing version is simple: shared notebooks should load the notebook first, then get richer as the expensive pieces arrive. No one should wait for every widget, frame, stylesheet, and blob before reading the first cell.
MCP reads the notebook, not a shadow notebook
MCP and agent surfaces are quieter and more notebook-native in 2.6.
Cell reads prefer resources. Client display names are canonicalized. Generated icons are advertised. Proxy recovery messages are more install-aware. The notebook tool bridge is exposed from runt, and the hosted/browser runtime work gives agents a clearer route into the same notebook state a human sees.
That is the part I care about most: tools should not need a parallel notebook model. They should read cells, outputs, identities, and runtime state from the same documents the app is already using.
Under the floorboards
There is a lot of floorboard work in this range.
Runtime state documents now carry identity. Widget comm state is split into CommsDoc. Autosave is more careful about stale rooms and empty-room overwrites. Fresh notebook seeding is daemon-owned. Connection status is observable. Local-first persistence gets a notebookDocChanged$ signal. Runtimed has a test kernel and a clearer kernel dispatch enum. Sync peer egress lanes are split and classified.
That is not a flashy list, but it is the kind of foundation this app needs before the same notebook can move between local editing, hosted viewing, shared execution, and agent tooling without losing the plot.
Things to finish before publishing
- Replace the draft date with the final release date.
- Replace
coversVersionswith the actual 2.6 stable and patch versions. - Add the final
githubReleaseUrl. - Add the 2.6 hero image and any demo videos.
- Refresh the commit range comment against the final stable tag.
- Regenerate or paste the final technical changelog.
- Trim any sections that are too implementation-heavy after the final release shape is clear.
Working technical changelog
Current draft range summary
This section is a prep scaffold, not the final generated changelog.
Current source range:
4867b005ac89d1ce28775c27a33f379da0d0f50e..f6fba37ee12c414937859760b7fb59b2a4db7469The range currently contains 441 first-parent commits and 666 total commits since v2.5.1-stable.202605261941.
Hosted notebooks and sharing
- add hosted sharing controls (cbe800f)
- add hosted edit access requests (67d0fcd)
- grant editors full cell editing in hosted rooms (956cce9)
- render hosted notebooks through
NotebookView(2723268) - bootstrap notebook home with app sessions (5162237)
- polish notebook home and workstation panel (5cb944c)
- gate sharing controls to owners (790b759)
Runtime peers and workstations
- add
runt publishhelper (39c7acc) - accept Anaconda API keys (61ccd18)
- add preview OIDC login (4444f9f)
- add cloud runtime lifecycle (809cf01)
- add transport-agnostic
runtime_agentand cloud WebSocket transport (9c87bd0) - add daemon workstation endpoint (8660705)
- register hosted workstations (b3b10f5)
- project workstation launch contract (c100d41)
- start workstation compute from the toolbar (ddbaa4e)
Notebook shell convergence
- add shared notebook rail shell (5b365b8)
- add contextual outline tree (db4b61a)
- add left rail panels (f07b528)
- add capability-scoped document header (fdf13aa)
- drive
NotebookViewfrom shell capabilities (8af8135) - refine hidden and output surfaces (5b5fda8)
- share runtime command projection (90cdb05)
- add connection status and local-first persistence signals (50187ab)
Markdown, outputs, and widgets
- add traceback frame navigation (b96f758)
- add Sift image thumbnail viewer (f8a308e)
- add Sift image viewer navigation (3fd5852)
- project markdown through Rust WASM (5d4682e)
- refine document typography (e113ccb)
- keep document frames selectable (449315f)
- split widget comm state into
CommsDoc(13a5fe2) - project
CommsDocwidget state to Python (54339c1) - save live widget state metadata (644933e)
Performance and hosted viewer loading
- preload Sift WASM for live views (cf8172a)
- hydrate hosted outputs progressively (d16326e)
- load renderer from sidecar assets (98663df)
- defer supplemental viewer CSS (a6e94b2)
- stage async output resolution (8f32259)
- lazy mount output frames (91f3977)
- cache hosted output blobs (5499951)
- project live runtime updates incrementally (679c6ae)
- coalesce concurrent text-blob fetches (f908f43)
MCP, agents, and tooling
- canonicalize MCP client display names (c9f24ae)
- advertise generated MCP icons (b6b6db7)
- prefer resources for cell reads (689034e)
- expose notebook tool bridge (497a3fa)
- make proxy recovery messages install-aware (c84481d)
- make Codex notebook MCP installs distinct (1823167)
Safety and foundations
- add runtime state document identity (e385d80)
- seed runtime state document identity in rooms (2cdcd22)
- gate hosted runtime state writes (3573305)
- do not autosave an empty room over a non-empty notebook file (7c2a255)
- make fresh notebook seeding daemon-owned (2d1da4a)
- refuse stale autosaves and write
.ipynbatomically (7c36d0f) - add
TestKerneland kernel dispatch enum (dc77f16)
- cloud
- workstations
- notebook
- mcp
![[redacted] Secrets, Explorable DataFrames, Navigable Tracebacks](https://img.runt.run/2026/06/08/2d83a12fc8c7.png)



