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.
| Action | What it does |
|---|---|
| Export | Streams one ZIP: manifest → logs → subagents → media → referenced workspace files |
| Import | Restores sessions, media, and workspace files; remaps paths; auto-attaches the session to its workspace |
| Repair | Re-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
| Route | Method | Purpose |
|---|---|---|
/wsx/session-pack?sessionId=<id>&scope=referenced|workspace&level=0-9 |
GET | Stream the ZIP archive |
/wsx/session-pack/import?workspace=<dir>&remap=<old>::<new> |
POST | Restore an archive (JSON summary) |
/wsx/session-pack/repair?sessionId=<id> |
POST | Re-attach + re-fold title (idempotent) |
License
MIT
No comments yet. Be the first to write one.