Install
Inside DeepSeek Harness, with dsh-market
dsh plugin --profile web add dshmarket
Or from the command line
dsh plugin --profile web add dsh-weave
Installing runs third-party code with your own permissions — it can read your files, use your credentials and reach the network. Review the source first, and pin a commit (github:owner/repo#sha) when you can.
README
DSH Weave
Connect explicitly trusted DeepSeek Harness hosts through Iroh. Keep pairing, peer identity, reachability, and the remote session directory in one transport layer.
What you get
| Capability | Behavior |
|---|---|
| Persistent identity | The same host identity survives restarts. |
| Explicit pairing | Exchange endpoint tickets and trust each peer locally. |
| Encrypted transport | Iroh provides QUIC connections, direct paths, and relay fallback. |
| Remote directory | Discover workspaces and sessions on paired hosts. |
| Visible state | Host reachability is separate from agent idle/running/offline state. |
| Native settings | Grouped identity and pairing controls, copy feedback, and removal confirmation. |
Quick start
On each host:
dsh plugin --profile web add dsh-weave@latest
dsh web
- Open Settings → Weave on both hosts.
- Exchange their tickets through a channel you trust.
- Add and explicitly trust the other host's ticket on each side.
- Use a higher-level plugin such as DSH Chat to select remote sessions.
Add DSH Bridge when messages should reach local agents on a receiving host. Bridge is optional for transport startup.
One transport, separate responsibilities
flowchart LR
A[Host A · Bridge] --> WA[Weave]
WA <-->|Iroh · QUIC| WB[Weave]
WB --> B[Host B · Bridge]
Iroh owns encrypted connectivity. Weave owns host trust, endpoint refresh, reachability, and authenticated requests. Chat owns rooms, membership, and room capabilities. Knowing a ticket alone does not grant trust or agent access.
Configuration
| Field | Default | Purpose |
|---|---|---|
hostName |
System hostname | Display label for the host. |
relayMode |
default |
Iroh default relay selection, or disabled. |
persistIdentity / persistPeers |
true |
Keep identity and trusted peers across restarts. |
acknowledgementTimeoutMs |
10000 |
Default acknowledgement deadline. |
maxConcurrentInbound |
64 |
Bound concurrent incoming requests. |
shutdownTimeoutMs |
1000 |
Bound transport shutdown. |
Identity and trusted peers are stored under $DSH_HOME/dsh-weave (~/.dsh by default), with owner-only permissions. identityPath and peersPath can override their locations.
Cancellation & delivery
Outbound requests accept a cancellation signal. Cancellation closes their connection; the receiving listener is also notified when the peer disconnects. Cancelling a request does not mark an otherwise reachable host offline. Chat's longer polling requests use matching acknowledgement deadlines.
The current release is a transport MVP. It provides pairing, directory access, and authenticated request delivery. A general remote task approval workflow and durable transport outbox/reconnect replay are not implemented. Application-level persistence belongs to the consuming plugin.
Protocol & architecture
Architecture · Protocol · Security · Room authority
The design documents include planned capabilities; use this README and the release notes for current behavior.
Development & feedback
npm ci
npm run check
Comments
Comments live in GitHub Discussions. Sign in with GitHub to post or react.