Back to home@keman-ai

dsh-pocket

Watch and steer your DSH agent from a phone browser: approve tool calls, send a message, stop a turn

Stars
1
Language
TypeScript
Created
Sep 2, 2026
Updated
Sep 2, 2026

Introduction

DSH Pocket

Put DeepSeek Harness in your pocket — watch and steer the agent on your computer from a phone browser.
Approve a tool call, answer a question, send a message, stop a turn — without walking back to your desk.

dsh-pocket.a2hmarket.ai — open it on your phone, sign in, and your computer is there

Stars Latest release MIT License

English · 简体中文

If this is useful to you, a Star goes a long way

Your computer's sessions, listed on the phone A live session on the phone: reasoning, tool calls, folded context, and a composer that takes a photo

Every session, in your pocket

The sessions running on your computer, grouped the way dsh groups them. Tap one to open it, or start a new one from here.

Watch and steer

Output streams live — reasoning and answer. Approve a tool call, send a message or a photo, stop a turn. The context dsh injects each turn folds away, so the conversation is what you read.

Get started

1 · Install into the web profile and start dsh:

dsh plugin --profile web add -w github:keman-ai/dsh-pocket
dsh --profile web

-w is required — the profile is a pnpm workspace root. From a source checkout, use pnpm dsh.

2 · Turn it on. Pocket ships off by default — attaching a shell-capable machine to a public relay is your call. Enable it in $DSH_HOME/profiles/web/cordis.patch.yml and restart dsh:

- id: pocket
  config:
    enabled: true

3 · Link an account. In dsh, open Settings → Pocket → Link an A2H account and approve in the tab that opens. The machine then shows as online.

Settings → Pocket before linking: the Link an A2H account button After linking: the machine is connected and one phone is watching

4 · Open it on your phone. Go to dsh-pocket.a2hmarket.ai, sign in with the same account, tap your computer, and pick a session. The signing key for approvals is delivered automatically — nothing to scan or copy.

What you can do from the phone

  • Watch the agent's output stream live — its reasoning as well as its answer, so you can tell thinking from stuck.
  • Approve or refuse a tool call the instant it asks. The turn is blocked waiting on you; a tap releases it.
  • Answer its questions when it stops to ask one.
  • Send a message, or snap a photo and hand it straight to the agent — something you cannot do from the desk.
  • Stop a turn that has gone the wrong way.
  • Switch the model, edit preferences (language, appearance, default model, agent loop), and pick a skin — all without walking back.

Injected context — the runtime snapshot and the skill catalog dsh adds to every turn — is folded away, so the actual conversation is what fills the screen.

The phone's Settings: skin, default model, language and agent-loop preferences

Skin, default model, language and agent-loop preferences — all editable from the phone

Security

  • Off by default. Nothing connects until you switch it on and link an account.
  • No inbound port. Both the plugin and the phone dial out to the relay, so reaching your machine needs no port forwarding, no tunnel, no NAT traversal — Pocket opens nothing new for anyone to connect to.
  • Frames pass through the relay, not into it. Session frames are forwarded in memory; their content is neither stored nor logged.

Linking a machine lets any phone signed into that account approve commands on it. Treat the account as you would an SSH key.

Requirements

DependencyRequirementWhat happens without it
DeepSeek Harness0.1.2+Earlier versions lack the per-domain controllers and settings section this plugin uses, so it cannot mount
profileThe web profileThe linking UI and Settings panel are client UI; headless / tui bundles have no web app, so the plugin never activates
Node.js>= 22.19dsh's own floor; the relay link uses Node's global WebSocket, so the host half carries no runtime dependency
accountAn A2H Market accountLinking is per-account, and the phone signs in with the same one
Networkaccount.a2hmarket.ai, dsh-pocket.a2hmarket.ai, and the relay (api-prod.a2hmarket.ai)All connections are outbound; the machine never listens

Development

pnpm install
pnpm run check   # types
pnpm run test    # node --test
pnpm run build   # lib/index.js + lib/client.js

Install into a profile with pnpm's link: (not file:, which copies the package and hides later rebuilds):

cd ~/.dsh/profiles/<name> && pnpm add -w link:/path/to/dsh-pocket

lib/ is committed on purpose — git installs run no build step — so run pnpm run build and commit it with your change.

The harness types in types/dsh.d.ts are transcribed by hand — the @deepseek-ai/dsh-client-* chain is not fully published, and these modules are external at runtime anyway. Declare only what is used, and check there first when the host errors.

Related

dsh-pocket.a2hmarket.aiThe phone frontend. Open it on your phone and sign in
dsh-skin-marketSibling plugin: search and install dsh skins without leaving the browser

License

MIT © 2026 Science Roam Limited


If this is useful to you, a Star goes a long way