Skip to main content
Move your current DeepSeek Harness (DSH) Web session into a private Blaxel sandbox so the agent can keep working while your computer is offline. In this walkthrough, you add invoice status filters, bring the tested changes back to your local repository, and move the same session again.

Prerequisites

  • A Blaxel account and workspace
  • Node.js 22.19.0 or newer in Node.js 22, or Node.js 24 or newer
  • Git, npm, and pnpm on your computer
  • A portable API key for the native DeepSeek or pi-ai model you select in DSH
  • A local Git worktree; the steps below create one from the Invoice Desk example
The commands select the current plugin release. The launcher selects its compatible DSH runtime. DSH is in developer preview. Tested with plugin 0.1.4 and DSH 0.1.2-rc.1.

1. Install the plugin and open DSH

Install the plugin in the Web profile:
Wait for installation to finish, then open the Web interface:
The launcher prepares the compatible runtime, including native conversation import support. Its first run downloads dependencies. Later runs reuse the cache. Use this launcher for subsequent visits, and keep the same DSH_HOME if you configure a custom profile. Successful CLI installation of the Blaxel plugin into a DSH Web profile Successful CLI installation of the Blaxel plugin into a DSH Web profile Read the first-launch notice and continue. If you use a DeepSeek model, configure its key when prompted. To choose a different supported provider, select Configure later and use Settings > Models in step 3. DSH first launch offers API-key setup or Configure later DSH first launch offers API-key setup or Configure later

2. Prepare and open Invoice Desk

The Invoice Desk starter already has CSV export and ten tests. Copy it into a small repository of its own so the handoff contains the application you are changing:
The starter tests should pass. In DSH, select Add workspace, choose the invoice-desk directory, and open it. Start a conversation in that workspace. Select the Invoice Desk directory in the workspace browser Select the Invoice Desk directory in the workspace browser The directory-selection image uses DSH’s browser-based folder picker. A desktop installation can show the native operating-system picker instead; choose the same project directory.

3. Connect your model and Blaxel

Open Settings > Models and configure the provider you intend to use. Select that model in the conversation’s model picker. The captured run uses GPT-4.1 mini through the native OpenAI provider with a portable API key. DSH Models settings with OpenAI configured and the Add provider control DSH Models settings with OpenAI configured and the Add provider control Open Settings > Blaxel. Select Sign in to Blaxel and complete browser authorization, then choose your workspace and Verify connection. An existing bl login profile also appears here. Use an API key instead exposes the workspace and API-key form when you need that sign-in method. Blaxel account connection, workspace selection, and optional API-key fields Blaxel account connection, workspace selection, and optional API-key fields Under Sandbox defaults, choose 4 GB memory. Expand Advanced settings, select Typescript App, leave Region on Automatic, and choose a maximum lifetime suitable for the task. This run uses 1 hour. Select Save defaults when you change a value. Sandbox defaults with 4 GB memory, Typescript App, automatic region, and a one-hour lifetime Sandbox defaults with 4 GB memory, Typescript App, automatic region, and a one-hour lifetime These defaults affect new sandboxes. Cloud sessions otherwise use a 24-hour maximum lifetime. Choose enough time to return the work before the sandbox expires.
The selected model’s portable API key enters the private cloud host so the agent can run independently. Blaxel credentials stay on your computer. Local OAuth grants, laptop-only model endpoints, external skills, and host MCP configuration do not migrate.
The cloud agent has full access inside its dedicated VM without per-tool approval. Use a model and project tools you trust with the model API key. Keep credentials out of the project files.

4. Start the task locally

Send this prompt in the local conversation:
After the plan, paste the implementation prompt below into the composer. Leave it unsent so you can see the draft travel with the conversation:
Unsent invoice status-filter prompt beside the Move to Blaxel action Unsent invoice status-filter prompt beside the Move to Blaxel action

5. Move the session to Blaxel

Select Move to Blaxel. The launch panel reports workspace preparation, sandbox startup, and conversation restoration. Wait for the private cloud page to open and show Your session is on Blaxel. Handoff progress from the Git worktree to the cloud agent Handoff progress from the Git worktree to the cloud agent The plugin copies tracked files and unignored untracked files, including current edits. It restores the native conversation, referenced images, and pending draft. A running root task can move at a safe tool boundary; wait for local child agents to finish before moving.
Git-ignored files, .git, .dsh-blaxel, common credential files, and private keys are excluded from the snapshot. Install any project dependencies required inside the sandbox. Invoice Desk needs no extra packages.
Cloud session banner with private-link and return controls Cloud session banner with private-link and return controls Confirm the implementation prompt is still in the cloud composer, then send it. Model requests, tools, and new conversation history now run in the sandbox. Once the cloud page is ready, closing the original DSH process does not stop that cloud agent. The local conversation is read-only while Blaxel owns execution: Original local conversation is read-only while the cloud owns execution Original local conversation is read-only while the cloud owns execution Copy private link provides access to the cloud session from another browser. Treat the link as a credential. Links expire after 24 hours; reopening through Open cloud session on the original computer renews access. Link renewal does not extend the sandbox’s lifetime.
If access fails, reopen the session through the original DSH launcher and use its fresh private link. If Chrome still blocks it, investigate the browser restriction; do not make the sandbox public to bypass the error.

6. Verify the cloud work

Read the agent’s actual test output before returning. The example started with ten tests; the captured run finishes with thirteen passing tests, including the new filter and HTTP checks. An agent can stop with an incomplete result, so verify its output rather than assuming the first response means success. In this run, the first response imported an unavailable fetch library. Start by asking the agent to use Node’s built-in fetch:
The HTTP tests also needed an explicit loopback host and port for their temporary server, instead of inheriting the cloud host’s port. Status assertions needed to check table rows because the navigation contains every status label. We corrected those issues and verified all thirteen tests independently. Review the changed source as well. If a text file unexpectedly appears as a binary patch, cancel the return and have the agent inspect and correct it before proceeding.

7. Review and bring the session back

On your original computer, start DSH with the same profile and launcher. Select Move back to local in the cloud page or the local Blaxel settings. Review the changed paths and actual patch, then select Apply changes and move back. Review the README patch before applying changes and returning locally Review the README patch before applying changes and returning locally The example review above comes from the second handoff’s README update. Your first return lists the application and test changes. The review always reflects the current sandbox’s changes. The return checks the patch against the current local worktree before writing. It checkpoints the cloud root, waits for active child agents, imports the conversation and supported child histories, restores the pending draft and original local permissions, then stops the sandbox after the files and history are durable locally. In a terminal inside invoice-desk, run:
Thirteen passing Invoice Desk tests on the returned local project Thirteen passing Invoice Desk tests on the returned local project Open http://localhost:3000. Select Pending and confirm only the pending invoice appears. Select Paid and All to check the other views. Export CSV follows the chosen filter. Invoice Desk Pending filter shows one invoice and Export CSV Invoice Desk Pending filter shows one invoice and Export CSV You can inspect the filtered CSV response independently in another terminal:
Expect a header and one pending invoice. The captured checks also verified three rows for All and two for Paid. If Chrome blocks an attachment download, keep browser download verification separate from a passing HTTP check. Stop the example server with Ctrl+C when finished.

8. Move the updated session again

Add a short local checkpoint to README.md and save it. For example:
In the same returned conversation, paste this prompt and leave it unsent:
New README task ready to move with the returned local session New README task ready to move with the returned local session Select Move to Blaxel again. The new sandbox starts with the earlier cloud changes, your new local checkpoint, and the same conversation. Send the prompt from the cloud page. After the tests pass, review and return the README change. Check that both the Status filters section and Local checkpoint remain locally. Reopening an existing sandbox reconnects to its current files. It does not upload newer local edits. Files transfer when you move and return the session; this is not continuous synchronization.

9. Recover safely and finish

If local edits conflict with the return patch, the plugin keeps both copies, leaves the sandbox available, and identifies a recovery patch under the repository’s private Git directory. Preserve your local edits, resolve the conflicting file changes, and retry Move back to local. Return conflict message preserves local files and identifies the recovery patch Return conflict message preserves local files and identifies the recovery patch Restarting the original DSH host does not require a new sandbox. Reopen the same profile and session, then use Open cloud session or retry the return. If an import was interrupted, retry from that original profile so the durable transfer receipts can resume completed work. After a successful return, Settings > Blaxel no longer lists an active sandbox for that session: Blaxel settings show no sessions running after return Blaxel settings show no sessions running after return
Discard permanently removes unreturned cloud work. Sandbox expiry also makes remote-only work unavailable. Return the changes you need before discarding the sandbox or reaching its maximum lifetime.
For transfer limits, supported session data, and additional recovery cases, read the cloud handoff contract.

Resources

Invoice Desk starter

Start with the billing application used throughout this walkthrough.

DeepSeek Harness Blaxel plugin

Review installation, compatibility, and release information.

Blaxel sandboxes

Learn how Blaxel sandboxes provide isolated compute for your agents.

Sandbox expiration policies

Configure sandbox lifetime and automatic deletion policies.
Last modified on October 1, 2026