omdsh-plugins/omdsh-remctrl ↗★ 0
@omdsh-plugins/omdsh-remctrl
Remote control for the DeepSeek Harness: a second front door on its own port, behind device pairing and a tiered method allowlist, so a phone on your tailnet can watch a session, approve what it asks for, and hand it new work
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:omdsh-plugins/omdsh-remctrl说明文档
阅读完整 README ↗Configuration
Settings namespace omdsh-remctrl, editable from omdsh-plughub.
| Field | Default | What it does |
|---|---|---|
enabled | true | Whether the door opens at all |
bindHost | 127.0.0.1 | Loopback, or a tailnet address this machine holds |
port | 3081 | The phone's port — not the harness's 3080 |
defaultTier | drive | What a newly paired device may do |
pairingTtlSeconds | 300 | How long a code lives |
maxPairingAttempts | 5 | Wrong guesses a code survives |
devices | — | Written by the plugin; holds token hashes, never tokens |
Every field is applies: 'live'. Moving bindHost, port or enabled rebinds
the listener where it stands; a tier change and a revocation are in force on the
next request. Nothing here asks for a restart.
Two behaviours are worth knowing before editing:
- A
bindHostthis machine does not hold is refused as you save it, not at the next boot. The namespace validates a write by running the same bind policy the listener runs, so a laptop whose Tailscale is down cannot store an address it would then fail to listen on — the panel reports the refusal and the stored value stays as it was. - The device table is authoritative in memory. Mirroring it back into settings can fail — a read-only provider, a disk that will not take the write — and when it does, this plugin logs a line and carries on: pairings hold until the process ends rather than taking the whole agent host down with them.
Tiers
Each admits everything below it.
| Tier | May |
|---|---|
observe | List and read sessions, subagents, workspaces, skills, presets |
respond | …and cancel a run or interrupt a subagent |
drive | …and send messages, steer, edit the queue, start and rename sessions |
full | …and fork, pick models, edit workspaces and goals |
cancel sits in respond rather than drive on purpose: somebody trusted to
watch a run should be able to end one going wrong without being trusted to
launch another.