Product

Changelog

Every change we ship, in the order we ship it. Bigger stories get written up on the blog.

July 2026

Fix

Hub links open without an account

Send someone a Hub notebook or your public portfolio and they can read it while signed out.

The Hub and public portfolios were always meant to be readable by anyone — the routes were mounted outside the auth guard correctly — but a layout inside them fetched the signed-in profile unconditionally and threw. A logged-out visitor got an error page, which is an unfortunate property for the pages whose entire job is being sent to people without accounts.

Fix

The login page and shared labs work on a phone

You can scroll /login and read a shared notebook on a phone.

The app shell pins the viewport so the three-column workspace can own the screen and scroll each column independently. The standalone read-top-to-bottom routes inherited that pin, which meant they could not scroll at all on a small screen — so anything below the fold was simply unreachable.

Feature

Run Clusy on your own Anthropic or OpenAI key

Connect an API key in Settings → Integrations and Sonnet 5, Opus 4.8 and GPT-5.6 appear in the model picker, for zero Clusy credits.

Access is gated on the connected key, and on nothing else. Turns on those models cost zero Clusy credits — including the work you don't see, since verification, sub-agents and context compaction stay on your key rather than falling back to a house model.

This covers model inference, not compute: the sandbox your notebook runs in is still metered as before. More on how it works.

Improvement

A calmer notebook canvas

Per-notebook tabs, scrolling that no longer fights you, and an editor that stops re-centring the view on every keystroke.

Several things that made long notebooks unpleasant:

  • Each notebook now gets its own tab on the canvas, so a project with several notebooks stops being one long scroll.
  • The virtualized cell list measures real row heights instead of guessing, which fixes the scrollbar drifting and cells jumping as you move through a large notebook.
  • The focus effect no longer re-centres the viewport on every keystroke while you type in a cell.
Feature

Upload a folder, at any size

Drag a whole directory into a project. Files go straight to storage over signed URLs, so there is no upload size ceiling and nested folders keep their structure.

Uploads used to be routed through the API, which capped how much you could add at once. They now go direct to storage over short-lived signed URLs, requested in bulk. A dataset of several thousand images uploads in a handful of authorized calls rather than one per file, and the folder structure you dragged in is the folder structure you get.

Feature

Pair your machine and Clusy drives the CLI you already have

If you use Claude Code or Codex, pair the machine it runs on and those CLIs appear in the model picker — running on your own subscription, on your own laptop.

Pairing adds three rows to the picker, badged Your machine: Claude Code Sonnet, Claude Code Opus and Codex. Set it up from Settings → Integrations, which gives you a pairing code and two commands to run:

npm i -g https://api.clusy.io/local-runners/clusy-runner.tgz
clusy-runner pair <CODE>

pair installs a start-at-login background service (launchd on macOS, systemd on Linux) so the machine stays online; pass --no-service to run it yourself. It opens no inbound ports.

Your Anthropic or OpenAI login never leaves your machine — Clusy spawns the genuine CLI and it authenticates itself, in its own process. Your notebook still runs in the Clusy sandbox; only the reasoning moves to your laptop.

Limits worth knowing: one turn at a time per machine, the machine has to be awake, and Plan Mode, sub-agents and batch experiments aren't available on a local-runner turn (branching is). More on how it works.

Fix

Cells that write many files deliver all of them

A cell that writes one file per frame or per run now persists up to 100 of them, instead of silently keeping the first 20.

Only the first 20 files a cell wrote were persisted, and the rest were dropped without saying so — which meant a labelling job that wrote one mask per frame quietly delivered a fraction of its output and looked like it had finished.

The cap is now 100, and if a cell overruns it the agent is told, rather than the files vanishing in silence. It is still a cap: a job that writes thousands of files should write an archive.

Fix

Deliverables that actually download

Downloading a finished artifact could fail outright. Terminal and scratch outputs are also persisted now, so the file you were promised exists.

Several things were wrong at once: files written from a terminal or to scratch were never persisted, the download route could 500 on a file that wasn't where it was expected, and the UI happily offered you a download for an artifact that had never been uploaded.

Files produced by terminal and scratch runs are now persisted, downloads are gated on the file actually existing, and an upload that stalls fails loudly instead of sitting at 0%.

Improvement

The agent can edit a notebook the way you can

It can now change a cell's type, read a cell's source before rewriting it, move cells, insert above a cell, and delete one — rather than only appending to the end.

The agent used to be able to add cells and run them, which meant every correction became a new cell at the bottom and notebooks grew long and repetitive.

It can now restructure what is already there: convert a code cell to markdown, read a cell before editing it, reorder, insert in the middle, and remove a cell that is no longer earning its place.

Fix

Shared notebooks no longer go blank as you scroll

Scroll a long shared lab end to end without hitting blank screens or having content jump under you.

The read-only share viewer rendered every code cell as a CodeMirror editor. CodeMirror virtualizes against the window, so in a long page it concluded most cells were offscreen and stopped painting them — leaving a reader scrolling through empty stretches.

Code in the share viewer is now plain rendered text, which is all a reader needed.

Improvement

Less waiting before the agent's first word

The agent starts responding sooner, both on the first message of a turn and after a long-running cell.

Every turn does setup before the model is called — loading session state, history, your preferences, credentials. That work ran as a chain of sequential awaits, so each round-trip's latency stacked on top of the last before a single token could be produced.

The setup now runs concurrently, and prompt caches are held for an hour so a follow-up message doesn't pay a cold prefill.

Fix

Chat auto-scroll follows the whole stream

Watch a turn stream without the view drifting off the newest token, and scroll up to re-read without the panel fighting you.

The chat panel now tracks whether your viewport is genuinely pinned to the bottom. If it is, it follows the stream; if you have scrolled up to re-read something, it leaves you where you are and offers a jump-to-bottom instead of yanking you back.

Fix

Long, silent GPU cells no longer drop their connection

A cell that trained for minutes without printing anything could lose its transport and report a connection error, despite running fine.

A training cell that produces no output for several minutes looked, to the layer in between, like a dead connection — so it was cut, and you got "connection dropped while streaming" on a cell that was working.

The execution stream and the kernel channel now both keep alive through silence.

Feature

Plan Mode — read the plan before the agent builds

Ask for something substantial and the agent writes a plan document first: the cells it intends to add, the experiments it intends to run, what it will measure. Nothing is written or executed until you approve it.

The plan opens as its own tab on the canvas. You can revise it, drop a step, or discard it outright. Approving it releases the agent to build; until you do, it cannot write a cell or run one.

The gate is enforced in the tool executor rather than asked for in the prompt, so it holds even when the model would rather get on with it.

Fix

Failed cells show the full traceback

When a cell the agent ran raises, you can read the whole traceback in the notebook instead of a single summary line.

Errors were surfaced as a one-line ename: evalue, which cut off exactly the part that matters — a CUDA out-of-memory message, for instance, arrived truncated before the numbers telling you how much memory was actually needed.

The cell's error output now carries the full traceback, and the agent sees it too.

Fix

Refreshing mid-turn no longer kills the run

Reload or reopen a tab while the agent is working and the live turn comes back, instead of dying.

A page reload used to leave the client with no record of the in-flight turn: the reply stopped rendering, the composer thought nothing was running, and sending the next message superseded the turn that was still going.

Active runs are now rehydrated on load — the in-progress reply re-renders from what has streamed so far, and the composer knows to steer rather than supersede.

Fix

A failed model now tells you it failed

When a model provider errors out, the transcript says so instead of going quiet.

A provider failure ended the turn with a clean terminal frame rather than an error frame, so the chat rendered nothing at all — the turn simply appeared to stop mid-thought, and you had no way to tell a crash from a model that had decided to say nothing.

Feature

Steer a running turn instead of restarting it

Send a message while the agent is working and it folds into the turn already in flight, rather than cancelling it and starting over.

Previously, typing while the agent was mid-task superseded the whole turn — twenty minutes of work discarded because you wanted to add one sentence.

Now the message is picked up at the agent's next step. If it is in the middle of executing a cell, it finishes that cell and reads your message before deciding what to do next, so a correction lands without throwing away the work already done.

Improvement

Sign-in, email and account deletion

One session across clusy.io and app.clusy.io, a welcome email that actually arrives, and account deletion that cancels your subscription with it.

  • Signing in on one Clusy subdomain signs you in across the others.
  • Transactional email — verification codes, welcome mail — is live, with one-click unsubscribe on everything that isn't a security message.
  • Deleting your account now cancels the subscription attached to it, instead of leaving a live Stripe subscription behind a deleted user.
Fix

The chat no longer looks frozen during long runs

A watchdog was killing turns that were working perfectly well, just quietly — it measured how long the turn had taken rather than how long it had been silent.

If the agent kicked off a long execution, the chat could appear to die while the cells kept running — the reply watchdog timed the whole turn rather than the gap since the last streamed token, so a legitimately long run tripped it.

It now measures stream silence, and the long-running phases send heartbeats while they work.

Fix

Kernels reconnect instead of wedging

If the kernel's connection dropped, the session used to hang until you reloaded. It now reconnects on its own.

A dropped kernel websocket would leave the project apparently alive but permanently unresponsive — cells queued and never ran, and the only way out was a reload. The gateway now detects the dead channel and reconnects it.

Feature

A bigger model shelf, and one picker for all of it

Auto, DeepSeek V4 Pro, Kimi K2.6, Kimi K2.7 Code, Kimi K2.7 Code Fast, Sonnet 5, Opus 4.8, Opus 4.7 and GPT-5.5 — selected from one menu in the composer.

Auto stays the default and picks a model per turn. When you want to choose yourself, the picker now covers the full shelf, and the agent's own background calls — verification, sub-agents, compaction — route on the same entitlements as your foreground turns instead of falling back to a house default.

Which models you can reach depends on your plan. The pricing page has the current mapping.

Improvement

Shared notebooks unfurl with a real preview

A Clusy link pasted into Slack, X or LinkedIn now previews with a cover image generated from the notebook's own output — the plot you actually made, not a grey box.

Sharing gives you a short clusy.io/s/… link. The preview card is built from the notebook itself: its title, its author, its cell and experiment counts, and a cover lifted from the first real image output in the notebook.

June 2026

Feature

Public documentation

Concepts, guides and reference at docs.clusy.io.

Documentation is now public at docs.clusy.io — how branching works, how the sandbox works, how to pick a model, and how to get a first notebook running.

Fix

Cancelling a turn no longer breaks the session

Stop a running turn — even mid-tool, even twice in a row — and keep chatting in the same session.

Cancelling before the model had produced any text or tool call could persist an empty assistant row in the history. On the next message, OpenAI-compatible providers rejected that row with a 400, and every subsequent turn in the session failed. The only fix was to abandon the session.

Empty interrupted turns are now dropped from history replay.

Feature

Clusy Hub — publish a notebook as a public lab

Finished work can be published to a public page anyone can read and fork, with a portfolio under your name collecting what you have put out.

A published notebook keeps its cells, its outputs and its branches, and can be forked into a reader's own workspace in one click — so a result you share is a result someone else can run and change, not a screenshot of one.

The Hub is at clusy.io/hub, and inside the app under the Hub tab.

Feature

Every plan in the project, in one place

Open the "Open plans" tab to see all the plans in a project, not just the one from the session you happen to be in.

A plan describes work on the shared notebook, so it is no longer scoped to a single chat. Opening a plan shows its revision history, so you can read what changed between the version you approved and the version that ran.

Fix

A real 404, a security.txt, and corrected legal text

Housekeeping on the public site: a crafted not-found page instead of a silent redirect, a published security contact, and legal copy that names the right entity.

  • A crafted 404 page, rather than silently bouncing you to the homepage.
  • security.txt published, so a researcher who finds something knows where to send it.
  • Legal copy corrected to name the right entity (Clusy Inc.) with consistent governing law, and the privacy policy now identifies the data controller properly.
Feature

Attach files to a message and the agent can open them

Drag, paste or attach files in the composer, and they are staged into the agent's working directory before it writes any code.

Attachments used to land in project storage only, so the agent would go looking on the filesystem for a file that was never on disk. They are now copied into the sandbox working directory (/home/user) before the turn starts, and notebook code can open them by plain relative filename.

Staging is best-effort — if a file can't be pre-staged the agent is told, and reads it from project storage instead. Up to 50 attachments per message.

Improvement

A guided first run

A four-screen golden path from sign-up to a notebook that has actually executed something — connect a data source inline, pick a theme, and go.

The old first-run dropped you into an empty workspace and wished you luck. The new one walks from sign-up to a first executed cell: connect a data source inline (Kaggle, Hugging Face, an upload) without a detour through Settings, choose your theme, and land in a project that is already doing something.

Improvement

Quieter thinking blocks and grouped tool calls

Adjacent reasoning collapses into one disclosure, and tool calls group by what they were doing rather than listing one row per call.

A long turn used to produce a wall of individual tool rows and a dozen separate "Thinking…" blocks. Adjacent reasoning now folds into a single expandable block, and tool calls are grouped by category, so the transcript reads as a sequence of steps rather than a log file.

Feature

Connect Databricks or Snowflake

Add a personal access token in Settings and the agent can query your warehouse directly, instead of you exporting a CSV to upload.

Both connect from Settings → Integrations with a personal access token. Once connected, the agent gets SQL query tools against that warehouse and can pull what it needs itself — so the data stays where it lives and you stop round-tripping extracts through your downloads folder.

Improvement

DataFrames read like a spreadsheet

Numeric columns right-align with tabular figures, and missing values recede instead of competing with real data.

Numeric columns now right-align in both header and cells and use tabular figures, so digits line up in columns and you can compare magnitudes down a column at a glance. NaN, None, NaT and <NA> render dimmed and italic.

Fix

Deliverables only contain deliverables

The agent was flagging ordinary notebook cells as deliverables, so the panel filled with noise.

Every cell that produced a plot was being auto-promoted into the Deliverables panel, which made it useless for its actual job — holding the handful of artifacts you want to take away.

Feature

Reference a cell, plan, dataset or paper with @

Type @ in the composer to point the agent at something already in your project, instead of describing it and hoping it picks the right one.

Each pick becomes a chip on the message, and the agent resolves it into the artifact's current content — the cell's actual source, the plan's steps, the dataset entry — at send time, so it reflects the cell as it is now rather than as it was when you typed.

Limits: up to 20 references per message, and a referenced cell's body is truncated at 4,000 characters. Plans, datasets and papers only appear once the session has a plan.

Fix

Retired: tree minimap, branch carousel, split view

Three surfaces for navigating branches, none of which people used. Branch switching now lives in one place.

We had built three different ways to look at the branch tree. Between them they added a lot of code and no clarity, and the telemetry said nobody was reaching for any of them.

They are gone. Branches are switched from the branch bar above the notebook.

Fix

Chinese, Japanese and Korean text renders in charts

CJK characters in chart axis labels, titles and legends show glyphs instead of empty boxes.

Plotly charts had no font family set, and the iframe that renders rich output shipped a Latin-only font stack — so any agent-produced chart with CJK labels came back as rows of tofu boxes.

Improvement

Projects and notebooks name themselves

A project gets a real name after its first turn instead of a truncated copy of your first prompt, and a notebook gets one from its contents.

A project started from the launcher used to keep your raw first message as its name, truncated mid-sentence. It is now renamed from a short summary of that first turn, and notebooks left on a default label are named from what they contain once they have run.