When using DeepSeek Harness (DSH) across multiple devices, session progress, interface settings, and project files in your workspace are often difficult to carry over seamlessly when switching machines. The dsh-chatsync plugin solves this problem by storing this state in the user’s private GitHub repository, enabling synchronization across devices.
This is a memory-type plugin maintained by dpskk2 and released under the MIT License. Its core value is placing DSH’s runtime state—including sessions, attachments, settings, and project files—under version control, rather than keeping it only locally.
Core Features¶
The plugin provides the following capabilities:
* Full-state synchronization: Syncs sessions, attachments, model and interface settings, as well as project files in the workspace.
* Private repository storage: All data is stored in the user’s own private GitHub repository, not in a public cloud service.
Installation and Activation¶
Before installing, make sure your environment meets the following requirements:
* DSH version is at least 0.1.5-rc.3
* Git is installed
* GitHub CLI is installed and configured
Install the Plugin¶
Run the following command in your terminal to install the plugin (using the Web profile as an example):
dsh plugin --profile web add @dpskk2/dsh-chatsync
Sign in to GitHub¶
After installation, authenticate using GitHub CLI:
gh auth login --hostname github.com --git-protocol https --web
Complete the browser authorization when prompted, and select Yes when asked whether Git should use this account.
Configuration and Usage¶
After installation and sign-in, restart DSH and open Settings → Sync to configure it.
Step 1: Connect a Sync Repository¶
- First-time setup: Leave the repository URL empty, keep the option “Automatically create or reuse a private repository when the URL is empty” checked, and keep the branch as
main. During synchronization, the plugin will attempt to create or reuse a private repository nameddsh-syncunder your account. - Existing repository: Enter the repository URL and branch displayed on the original computer.
Click Save connection and continue to Step 2.
Step 2: Choose What to Sync and How¶
By default, the plugin syncs sessions, attachments, settings, and project files in the workspace. If you only want to sync sessions and settings, you can disable Sync workspace files.
For first-time use, it is recommended to keep Manual sync selected, then click Save selection and continue to Step 3.
Step 3: Start Synchronization on the Original Computer¶
Click Sync now to pull remote data and upload local changes. Keep DSH open until the transfer is complete. Confirm that the settings page indicates synchronization has finished successfully and that there are no failures.
Step 4: Retrieve and Verify on the New Computer¶
On the new computer, complete the installation and GitHub sign-in, then restart DSH. In the settings page, enter the repository URL and branch from the original computer, and save the connection and sync content selection.
Click Sync now, and confirm that the sessions and selected project files from the original computer are present. After switching to a new machine, you still need to configure model API keys locally, install other plugins, and set up project dependencies.
Daily Use and Notes¶
- Workflow habit: It is recommended to sync before you start work, sync after you finish, and confirm success before switching computers.
- Automatic sync: After bidirectional verification is complete, you can enable automatic synchronization in settings (syncs once every 5 minutes by default).
- Important reminders:
- New computer setup: The new computer must be configured separately for API keys, plugins, and project dependencies. The plugin itself does not automatically migrate these local environment settings.
- Data backup: Although the plugin propagates deletions and changes, keep separate backups for important data.
- Sensitive information: Dedicated credential files are not uploaded, but keys inside chats, attachments, or project files may still be synced. Configure exclusion rules when necessary.