It no longer lives on one machine
dsh runs on a server you own, so closing the laptop does not stop it. Phone, tablet, work computer — any browser gets in, with no environment to install and no files to sync.
Runs on your own serverMove DeepSeek Harness (dsh) onto a machine you own. You and the people you invite each get a workspace, isolated from each other — open it from a phone, a tablet, or any other computer.
Early development. Built for evaluation and development.
The problems it takes awayThe difference between running dsh locally and running it on a server you own.
dsh runs on a server you own, so closing the laptop does not stop it. Phone, tablet, work computer — any browser gets in, with no environment to install and no files to sync.
Runs on your own serverYou and the people you invite each get a workspace: its own container, its own /data. You cannot see each other’s, and you cannot break each other’s.
Multi-userSplit by project or by purpose. Each workspace has its own CPU, memory and disk limits, so they do not crowd each other out.
CPU / Memory / PIDs / DiskWorkspaces, sessions, plugins and configuration stay under /data, so a version change is not a reinstall. A snapshot is taken first, and you can roll back.
Persistent by designAgents run shell commands, install dependencies and write files. Every workspace container is treated as an untrusted code execution environment, not an ordinary application process.
Each workspace has its own container network and data directory, unreachable from the others; ports are published only to the host loopback, never to the LAN. The platform authenticates, checks that you own the workspace, then strips the platform cookie before forwarding — pages, APIs and WebSocket handshakes share the same entry path.
Administrators can inspect status and container logs, but the platform provides no browser for user /data. Logs may still contain sensitive content.
Containers share the host kernel. This is not VM-level isolation. Host or Docker operators can access the underlying storage.
Explicit boundaries, not a promise of absolute security.
One command installs it on your own Linux server: platform image, ingress, database and the first administrator, in one pass.
Preflight, then the storage pool on the host, PostgreSQL, migrations, and finally the control plane and ingress — ending with a single bootstrap URL. It asks no questions at all.
curl -fsSL https://raw.githubusercontent.com/eskim2001/dshcloud/main/scripts/install.sh \
| bashOpen the printed URL (it carries a one-time token) and use it to create the first administrator account and enter a parent domain. On submit the platform closes the entry point and the console lands at console.<the parent you entered>.
http://<host>:3000/setup?token=...Certificates are issued per host — one for the console, one per workspace — so the first visit may land while one is still being issued. Sign in with the credentials you just created.
https://console.example.comAn upgrade swaps the image and keeps data and secrets. Uninstall keeps the database volume and storage pool unless you add --purge.
curl -fsSL https://raw.githubusercontent.com/eskim2001/dshcloud/main/scripts/install.sh \
| bash -s -- updateInstances also need a pullable instance image, wildcard DNS pointing at this machine, and per-host TLS certificates. Starting the console alone does not open instances. Build an image locally only if you changed it:
./docker/instance-image/build.shNot production-ready. Verified on a real host: install, the bootstrap page, a per-host ACME certificate, and the :80 redirect. Not yet verified: creating and opening a workspace, or recovery after a host reboot.
DeepSeek Harness is the upstream agent harness. dshcloud adds accounts, workspace orchestration, quotas and access control around it. It is not an official DeepSeek cloud service.
No shared model key is injected into instances. Model endpoints and credentials are configured in dsh inside each instance. Platform and database credentials must stay outside instances.
No. Deleting while retaining data preserves its ownership record. Reusing a name gets a separate storage identity. Restoring old data requires operator verification.
No. Only one pre-upgrade snapshot is kept per instance, and rollback discards changes made after that snapshot. Plan independent backups separately.
No. The current focus is instance lifecycle, access control and persistence on a single Docker host. Billing and multi-node runtimes are not current features.