paul-xing
dsh-paperclip-upload
Paperclip upload button for the DeepSeek Harness Web UI: upload a desktop file into the session workspace uploads/ directory, insert a π filename into the composer.
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 15, 2026
- Updated
- Aug 15, 2026
Introduction
dsh-paperclip-upload
A paperclip upload button for the DeepSeek Harness (DSH) Web UI. Click it, pick a file from your desktop, and it is uploaded into the current session's workspace uploads/ directory. The filename (with a π icon) is inserted into the composer so the agent can find and read the file.
Features
- Paperclip button sits right next to the "full access" permission selector in the composer tool row.
- Uploads any file (text or binary) up to 25 MB into the workspace
uploads/directory. - On success the composer draft shows
π <filename>β send it and the agent can read the uploaded file. - Permanent plugin: installs into the
webprofile, survives restarts ofdsh web.
Install
dsh plugin --profile web add https://github.com/paul-xing/dsh-paperclip-upload/archive/refs/tags/v1.0.0.tar.gz
Restart dsh web after installation. The button appears next to the permission selector in the composer.
Usage
- Click the paperclip button.
- Pick a file from your computer.
- The file is written to
<workspace>/uploads/<filename>and the composer draft showsπ <filename>. - Send the message β the agent can locate and read the file.
How it works
- Client half (
lib/client.js): registers into theconversation.input.leftslot (right of the permission selector), reads the chosen file as base64, and POSTs it to the Host endpoint. - Host half (
lib/index.js): registers an HTTP endpointPOST /api/pcup-uploadvia thewebServerservice (inject: ['webServer']), decodes the base64 withpython3through theshellservice, and writes the file into the session workspace.
Configuration
No configuration required. Upload size is capped at 25 MB (enforced both client- and host-side).
Development
The built files under lib/ are committed so profile installation does not require a build step. Local development mirrors the DSH harness checkout; the plugin directory's node_modules links to the harness's packages.
License
MIT