Back to home@seth-hg

dsh-session-port

dsh-session-port is a DeepSeek Harness plugin that bundles a session — its log, subagents, media, and referenced workspace files — into one portable ZIP and restores it on any DSH.

Stars
0
Language
TypeScript
Created
Sep 2, 2026
Updated
Sep 2, 2026
GitHub repo

Introduction

dsh-session-port

Port a session in and out of DeepSeek Harness — bundle one session into a single ZIP and restore it anywhere.

中文

What it does

Export a session with everything it references — the log (root + subagents), media, and the workspace files — into one archive, then import that archive on another DSH, fully restored and re-attached to its workspace.

ActionWhat it does
ExportStreams one ZIP: manifest → logs → subagents → media → referenced workspace files
ImportRestores sessions, media, and workspace files; remaps paths; auto-attaches the session to its workspace
RepairRe-attaches an imported session and re-folds its title (fixes "ungrouped" / missing name)

Install

Requires Node.js ≥ 22.10 and pnpm (dsh plugin uses pnpm underneath).

# From GitHub (default branch, or pin a tag)
dsh plugin --profile web add "github:seth-hg/dsh-session-port"
dsh plugin --profile web add "github:seth-hg/dsh-session-port#v0.1.4"

# From a local checkout
dsh plugin --profile web add /path/to/dsh-session-port

Restart dsh web. Two Export / Import buttons appear in the session header.

Usage

From the session header

  • Export — downloads session-port-<id>.zip.
  • Import — pick a .zip; it restores into the current session's workspace (the header cwd).

Import also accepts DSH's built-in session-log export (the header /export download): it restores the root session, subagents, and media. That export carries no workspace files, so none are expected.

From the HTTP routes (loopback-trusted)

# Export (scope=referenced by default, or workspace)
curl 'http://127.0.0.1:3080/wsx/session-pack?sessionId=<id>&scope=referenced' -o out.zip

# Import into a workspace (path remap: old::new)
curl -X POST 'http://127.0.0.1:3080/wsx/session-pack/import?workspace=/path/to/workspace&remap=/old::/new' \
  --data-binary @out.zip

# Repair an imported session (re-attach + re-fold title)
curl -X POST 'http://127.0.0.1:3080/wsx/session-pack/repair?sessionId=<id>'

HTTP API

RouteMethodPurpose
/wsx/session-pack?sessionId=<id>&scope=referenced|workspace&level=0-9GETStream the ZIP archive
/wsx/session-pack/import?workspace=<dir>&remap=<old>::<new>POSTRestore an archive (JSON summary)
/wsx/session-pack/repair?sessionId=<id>POSTRe-attach + re-fold title (idempotent)

License

MIT