You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Feature Request / RFC: Native Headless & Container Support (--no-auth), Configurable Workspace Root, and Extended Workbench Width
1. Problem Statement
When running DeepSeek Harness (@deepseek-ai/dsh) inside Docker containers, remote development workstations, or behind local reverse proxies (OrbStack, Docker Desktop, WSL2), several ergonomics issues arise:
Browser Token Exchange in Headless Environments: dsh web currently generates a single-use process launch token (?token=...) and binds tightly to interactive desktop browsers. In headless containers, navigating to http://localhost:3080 (or http://host.docker.internal:3080) results in 401 Unauthorized unless the user parses the token from container logs.
Loopback Hostname Check & 0.0.0.0 Binding: isLoopbackHostname() in @deepseek-ai/dsh-client-connection rejects non-loopback hostnames even when passed via --trusted-host, and startup.ts throws an error on --host 0.0.0.0. This prevents clean access across container bridge networks (*.orb.local, 172.17.x.x) without relying on reverse proxies or port forwarders (like socat).
Default Directory in File Browser: @deepseek-ai/dsh-host-directory-picker-browse hardcodes os.homedir(), which in containers defaults to /root or /home/node rather than the mounted project workspace (e.g. /workspace).
Sidebar / Details Panel Max Width (520px): @deepseek-ai/dsh-client-ui-layout clamps the details workbench panel to max 520px. For plugins that render comprehensive task boards (like Plan Sidebar), Markdown deliverable diffs, or terminal logs, 520px is severely constrained.
2. Proposed Solution
Introduce --no-auth CLI option and DSH_DISABLE_AUTH=true env var:
When enabled, BrowserAuth.isAuthenticated() and authorizeIndex() return true, allowing direct browser access to the Web UI in secure, local container networks without token friction.
Defaults to false to preserve full local desktop security.
Permits --host 0.0.0.0 when auth is explicitly disabled.
Respect Workspace Environment Variable in Directory Picker:
Check process.env.DSH_WORKSPACE_DIR || process.env.WORKSPACE_DIR || homedir() as the initial browse directory.
The patch introduces zero breaking changes for existing desktop users. We would love to get feedback from the maintainers and can contribute this via PR or cherry-pick!
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Feature Request / RFC: Native Headless & Container Support (
--no-auth), Configurable Workspace Root, and Extended Workbench Width1. Problem Statement
When running DeepSeek Harness (
@deepseek-ai/dsh) inside Docker containers, remote development workstations, or behind local reverse proxies (OrbStack, Docker Desktop, WSL2), several ergonomics issues arise:dsh webcurrently generates a single-use process launch token (?token=...) and binds tightly to interactive desktop browsers. In headless containers, navigating tohttp://localhost:3080(orhttp://host.docker.internal:3080) results in401 Unauthorizedunless the user parses the token from container logs.isLoopbackHostname()in@deepseek-ai/dsh-client-connectionrejects non-loopback hostnames even when passed via--trusted-host, andstartup.tsthrows an error on--host 0.0.0.0. This prevents clean access across container bridge networks (*.orb.local,172.17.x.x) without relying on reverse proxies or port forwarders (likesocat).@deepseek-ai/dsh-host-directory-picker-browsehardcodesos.homedir(), which in containers defaults to/rootor/home/noderather than the mounted project workspace (e.g./workspace).@deepseek-ai/dsh-client-ui-layoutclamps the details workbench panel tomax 520px. For plugins that render comprehensive task boards (like Plan Sidebar), Markdown deliverable diffs, or terminal logs, 520px is severely constrained.2. Proposed Solution
--no-authCLI option andDSH_DISABLE_AUTH=trueenv var:BrowserAuth.isAuthenticated()andauthorizeIndex()returntrue, allowing direct browser access to the Web UI in secure, local container networks without token friction.falseto preserve full local desktop security.--host 0.0.0.0when auth is explicitly disabled.process.env.DSH_WORKSPACE_DIR || process.env.WORKSPACE_DIR || homedir()as the initial browse directory.DETAILS_MAXfrom520pxto800px.Implementation Ready in Fork:
We have implemented, tested, and pushed this complete patch to our fork branch:
👉 https://github.com/Bebbolus/deepseek-harness/tree/feat/container-headless-support
Commit:
97d913f963The patch introduces zero breaking changes for existing desktop users. We would love to get feedback from the maintainers and can contribute this via PR or cherry-pick!
All reactions