Agent skill

Deepseek Harness Docker

by runzhliu in runzhliu/deepseek-harness-docker

Deploy, configure, verify, upgrade, and troubleshoot DeepSeek Harness with the community Docker, Docker Compose, rootless Podman, and Helm runtime, including the built-in Chromium/noVNC browser…

MITAuto-check: notesDevOps & Cloud

Install Deepseek Harness Docker

skills CLI
$ npx skills add runzhliu/deepseek-harness-docker --skill deepseek-harness-docker -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install runzhliu/deepseek-harness-docker deepseek-harness-docker --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
deepseek-harness-docker
GitHub stars
110
Token cost
~2.7k tokens
SKILL.md length
1,153 words
Files
70 (incl. scripts, assets)
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Deploy, configure, verify, upgrade, and troubleshoot DeepSeek Harness with the community Docker, Docker Compose, rootless Podman, and Helm runtime, including the built-in Chromium/noVNC browser…

  • Works in 5 steps: Confirm Docker and Compose are available → Resolve the requested workspace to an… → Pull and start without rebuilding unless… → …
  • Users ask to run DSH
  • SKILL.md covers Preserve the security boundary, Locate the deployment files, Choose the smallest suitable… and Enable protected LAN access, plus 8 more sections
  • Calls docker, make and curl; needs DEEPSEEK_API_KEY

What it does

Deepseek Harness Docker is an agent skill from runzhliu/deepseek-harness-docker. Deploy, configure, verify, upgrade, and troubleshoot DeepSeek Harness with the community Docker, Docker Compose, rootless Podman, and Helm runtime, including the built-in Chromium/noVNC browser, optional protected LAN gateway, optional ungoogled-chromium image, and optional plugin market. Use when users ask to run DSH or DeepSeek Harness locally or on a trusted LAN or Kubernetes, mount a writable workspace, configure model credentials safely, enable the embedded browser, minimize browser background egress, choose…

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 71 other files, including scripts and assets (for example `.github/dependabot.yml`, `.github/workflows/ci.yml` and `.github/workflows/dockerhub-description.yml`).

It sits in DevOps & Cloud, covering Containers and Container orchestration. It works with Docker, DeepSeek and Kubernetes. The repository describes itself as: Community Docker and Kubernetes packaging for DeepSeek Harness (@deepseek-ai/dsh), with a hardened image, Compose stack, Helm chart, Web UI, and headless CLI. The licence is MIT.

When your agent uses it

  • Users ask to run DSH
  • DeepSeek Harness locally
  • On a trusted LAN
  • Mount a writable workspace

Example prompts

  • “/deepseek-harness-docker”

Requirements

  • Docker
  • A credential in DEEPSEEK_API_KEY

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Confirm Docker and Compose are available
  2. Resolve the requested workspace to an absolute path and confirm it is the intended writable directory.
  3. Pull and start without rebuilding unless the user asks for a local source build
  4. Wait for the deepseek-harness service to become healthy. Verify both surfaces
  5. Tell the user to open http://127.0.0.1:3080. Configure the model provider and key in Harness settings. Use the WebUI browser action for…

What it can do on your machine

Read from SKILL.md and the folder at commit 9984408. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/, which the agent can run.

    Shell commands in SKILL.md call:

    • docker
    • make
    • curl
    • helm
    • kubectl
    • git
    • podman

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use docker, curl, helm, kubectl and git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • DEEPSEEK_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Deepseek Harness Docker loads about 2.7k tokens when it runs. Until then it costs about 153 tokens; SKILL.md has 1,153 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~153
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:14
    s settings page, environment variables, `.env`, or Kubernetes Secrets. Never write credentials into Dockerfiles, images,
  • NoteMentions a .env fileSKILL.md:40
    Follow the `.env.lan.example` and README procedure. Generate the bcrypt hash without recording its plaintext, keep `.env

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from runzhliu/deepseek-harness-docker at commit 9984408, republished under its MIT licence (© runzhliu). 1,153 words, ~2,692 tokens.

Download SKILL.mdSave it as .claude/skills/deepseek-harness-docker/SKILL.md (or your agent's skills folder). This skill also uses 69 other files; get the full folder from GitHub.
name
deepseek-harness-docker
description
Deploy, configure, verify, upgrade, and troubleshoot DeepSeek Harness with the community Docker, Docker Compose, rootless Podman, and Helm runtime, including the built-in Chromium/noVNC browser, optional protected LAN gateway, optional ungoogled-chromium image, and optional plugin market. Use when users ask to run DSH or DeepSeek Harness locally or on a trusted LAN or Kubernetes, mount a writable workspace, configure model credentials safely, enable the embedded browser, minimize browser background egress, choose the market image, or diagnose container health and startup problems.

DeepSeek Harness Docker

Use the public runzhliu/deepseek-harness-docker project as the source of truth. Treat it as a community containerization project around the official @deepseek-ai/dsh npm package, not as an official DeepSeek image.

Preserve the security boundary

  • Bind native WebUI port 3080 and noVNC port 6080 to 127.0.0.1 only. For an explicit trusted-LAN request, use compose.lan.yaml; never publish the native ports.
  • Never create a public Ingress, LoadBalancer, NodePort, unrestricted -p 3080:3080, privileged container, or Docker socket mount.
  • Pass provider keys only at runtime through the Harness settings page, environment variables, .env, or Kubernetes Secrets. Never write credentials into Dockerfiles, images, Compose files committed to Git, logs, or answers.
  • Keep the named dsh-home volume unless the user explicitly asks to delete all Harness settings, credentials, sessions, and browser state.
  • Mount only the workspace the user authorizes. Do not broaden a bind mount to a home directory or filesystem root.
  • Treat the optional plugin market and every installed plugin as third-party code with access to the mounted workspace and persisted Harness profile.

Locate the deployment files

Use the current checkout when it contains compose.yaml and Dockerfile. Otherwise clone the public repository:

bash
git clone https://github.com/runzhliu/deepseek-harness-docker.git
cd deepseek-harness-docker

Read README.md, SECURITY.md, compose.yaml, and .env.example before changing defaults. Prefer the repository's pinned image and DSH versions; do not silently switch to latest.

Choose the smallest suitable mode

Use default Compose for a local, single-user WebUI with the embedded Debian Chromium desktop. The image attaches official Playwright MCP Browser Use to the same persistent Chromium used for visible human takeover. Add compose.lan.yaml only for an explicit trusted-LAN request, after choosing one exact bind address, an internal DNS name or IP, a Caddy Basic Auth credential, and a firewall boundary. This mode uses caddy:2.11.4-alpine and still represents one shared trust domain, not multi-tenancy. Select the immutable 0.2.1-alpha.2-r1-ungoogled.1 tag only when the user explicitly prioritizes minimized Google background egress and accepts its contributor-binary and reduced browser-service tradeoffs. Add compose.market.yaml only when the user explicitly wants the community plugin market. Use headless mode for one-shot automation and Helm only when the user requests Kubernetes.

Use compose.bwrap.yaml and immutable image 0.2.1-alpha.2-r1-bwrap.1 only when a Docker host cannot enforce Landlock and the user accepts seccomp=unconfined plus systempaths=unconfined. First distinguish a kernel with Landlock omitted from the active LSM list from a kernel built without Landlock; prefer enabling the existing LSM when possible. Never add SYS_ADMIN, --privileged, or the Docker socket. Require unprivileged user namespaces, run make bwrap-smoke, and confirm /workspace writes succeed while writes to the test's separate outer writable mount fail. Do not apply this overlay to rootless Podman or Kubernetes.

For an explicitly rootless Podman deployment, require Podman 4.5 and podman-compose 1.6.0 or newer, then add compose.podman.yaml. Confirm podman info --format '{{.Host.Security.Rootless}}' returns true. The overlay maps the caller to container UID/GID 1000 and privately labels the workspace on SELinux hosts; authorize one dedicated project directory and never broaden the mount to a shared home or filesystem root. Use make podman-smoke when validation is requested.

Enable protected LAN access

Follow the .env.lan.example and README procedure. Generate the bcrypt hash without recording its plaintext, keep .env.lan private, bind DSH_LAN_BIND_ADDRESS to one exact server LAN IP, and prefer an internal DNS name for DSH_LAN_HOST. Start with make lan-up, install the persistent Caddy internal CA root on authorized clients, and use the DSH launch token only through the resulting HTTPS URL. Verify with make lan-smoke. Tell the user that all authenticated clients share the same Harness authority and that mutually untrusted users need isolated instances and volumes.

Start the default local runtime

  1. Confirm Docker and Compose are available:

    bash
    docker version
    docker compose version
  2. Resolve the requested workspace to an absolute path and confirm it is the intended writable directory.

  3. Pull and start without rebuilding unless the user asks for a local source build:

    bash
    DSH_WORKSPACE=/absolute/path/to/project docker compose pull
    DSH_WORKSPACE=/absolute/path/to/project docker compose up -d --no-build
    docker compose ps
  4. Wait for the deepseek-harness service to become healthy. Verify both surfaces:

    bash
    test "$(curl --silent --output /dev/null --write-out '%{http_code}' http://127.0.0.1:3080/)" = 401
    curl --fail http://127.0.0.1:6080/novnc-debian-1.6.0-2/vnc.html
    docker compose logs --tail=120 deepseek-harness
  5. Tell the user to open http://127.0.0.1:3080. Configure the model provider and key in Harness settings. Use the WebUI browser action for the embedded Chromium desktop; use http://127.0.0.1:6080/novnc-debian-1.6.0-2/vnc.html?autoconnect=1 only as a direct fallback.

Show full SKILL.md (485 more words)Show less

Select the optional ungoogled browser

Keep Debian Chromium as the default. For an explicit privacy-focused deployment, select the separate immutable image before pulling and starting:

bash
export DSH_IMAGE_VERSION=0.2.1-alpha.2-r1-ungoogled.1
DSH_WORKSPACE=/absolute/path/to/project docker compose pull
DSH_WORKSPACE=/absolute/path/to/project docker compose up -d --no-build

This image keeps its browser profile under /home/node/.dsh/chrome-profile-ungoogled. Do not point it at the default Chromium profile. Report that Safe Browsing, sync, push, Widevine, and Web Store integration may be absent or require manual setup. When validating the variant, inspect /proc/net/tcp and /proc/net/tcp6 for remote port 146C (hexadecimal 5228) and confirm /tmp/dsh-desktop/chromium.log has no google_apis/gcm entry.

Enable the optional plugin market

Keep the default image unchanged and opt in through the overlay:

bash
DSH_WORKSPACE=/absolute/path/to/project \
  docker compose -f compose.yaml -f compose.market.yaml pull
DSH_WORKSPACE=/absolute/path/to/project \
  docker compose -f compose.yaml -f compose.market.yaml up -d --no-build
docker compose -f compose.yaml -f compose.market.yaml ps

If the market reports a pnpm store version mismatch, stop the service and run the repository's explicit repair command from README.md. Do not delete the profile or named volume as a shortcut.

Run a headless task

Use the pinned image and pass the provider key from the existing environment without printing it:

bash
docker run --rm \
  --env DEEPSEEK_API_KEY \
  --mount type=volume,src=dsh-home,dst=/home/node/.dsh \
  --mount type=bind,src=/absolute/path/to/project,dst=/workspace \
  runzhliu/deepseek-harness:0.2.1-alpha.2-r1 \
  --profile headless "summarize this repository"

Replace the provider environment variable and model configuration only when the selected provider requires it. Keep secrets out of command output and shell history where possible.

Deploy with Helm

Use the included chart as a single-replica, stateful, private deployment:

bash
helm lint --strict charts/deepseek-harness
helm upgrade --install deepseek-harness charts/deepseek-harness \
  --namespace deepseek-harness \
  --create-namespace
kubectl -n deepseek-harness rollout status statefulset/deepseek-harness
kubectl -n deepseek-harness port-forward service/deepseek-harness 3080:3080 6080:6080

Use an existing Secret for provider credentials and an existing PVC when a persistent writable workspace is required. Preserve the chart's private Service and NetworkPolicy defaults.

Build or upgrade safely

  • Run make verify before building changes.
  • Run make build and make smoke for the default image.
  • Run make ungoogled-build and make ungoogled-smoke for the optional privacy-focused image.
  • Run make market-build and make market-smoke for the optional market image.
  • On version upgrades, update every pinned DSH/image reference together, inspect upstream release notes, and rerun the full verification. Do not publish an unverified tag or a drifting latest tag.
  • Confirm both linux/amd64 and linux/arm64 when publishing multi-platform images.

Diagnose failures

Start with non-destructive evidence:

bash
docker compose config
docker compose ps
docker compose logs --tail=200 deepseek-harness
docker compose ps -q deepseek-harness

Pass the container ID reported by the last command to docker inspect; do not assume a fixed Compose project name.

Check these common boundaries:

  • 3080 or 6080 already in use: choose different loopback host ports through DSH_PORT or DSH_DESKTOP_PORT.
  • Workspace not writable: verify the exact bind source and its ownership instead of making broad host directories writable.
  • Browser unhealthy: verify /dev/shm, the 6080 endpoint, and the 9222 Chromium debug endpoint from inside the container.
  • Profile or plugin failure: inspect the persisted profile and plugin logs before repairing; preserve backups created by the market repair tool.
  • Model request failure: verify provider URL, model name, and the presence of the expected environment variable without revealing its value.

Do not use docker compose down --volumes, remove named volumes, or overwrite profile files without explicit user approval and a clear explanation of the data loss.

Report completion

State the selected image tag, workspace mount, exposed loopback URLs, container health, and verification performed. Distinguish a successful WebUI health check from a successful real model/tool call; perform the latter only when the user supplied a provider configuration and authorized the test.

© runzhliu, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 69 other files (scripts, assets) in the repository root of runzhliu/deepseek-harness-docker.

  • SKILL.md
  • .dockerignore
  • .env.example
  • .env.lan.example
  • .github/CODEOWNERS
  • .github/dependabot.yml
  • .github/workflows/ci.yml
  • .github/workflows/dockerhub-description.yml
  • .github/workflows/publish-dockerhub.yml
  • .github/workflows/publish-ghcr.yml
  • .github/workflows/upstream-dsh.yml
  • .gitignore
  • CHANGELOG.md
  • CONTRIBUTING.md
  • Dockerfile
  • Dockerfile.bwrap
  • Dockerfile.market
  • LICENSE
  • Makefile
  • … and 51 more

Open the folder on GitHubat commit 9984408

Compare with similar skills

Deepseek Harness Docker next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Deepseek Harness Docker compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Deepseek Harness Docker this skillrunzhliu/deepseek-harness-docker110—~2.7kAutomated safety check: NotesMIT
LangBot Deployment Guidelangbot-app/LangBot18k—~1.2kAutomated safety check: NotesApache-2.0
Build Openshell Mxc WindowsNVIDIA/OpenShell16k—~4.9kAutomated safety check: PassApache-2.0
Devopsnicepkg/auto-company1952 repos~814Automated safety check: PassMIT
Debug Openshell ClusterNVIDIA/OpenShell16k—~20kAutomated safety check: NotesApache-2.0
Cleanupericboy0224/learn-docker-and-k8s491—~454Automated safety check: PassNone

Similar skills

  • LangBot Deployment Guide

    langbot-app/LangBot

    Deploys and configures a LangBot instance with Docker Compose or Kubernetes, covering config.yaml, the Box sandbox runtime, the plugin runtime and the global API key.

    18k GitHub stars~1.2k tokensUpdated today
    DevOps & CloudAuto-check: notes
  • Official

    Maintain and validate OpenShell's build-only Windows MSVC lane for x64 and ARM64.

    16k GitHub stars~4.9k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Devops

    nicepkg/auto-company

    Deploy to Cloudflare (Workers, R2, D1), Docker, GCP (Cloud Run, GKE), Kubernetes (kubectl, Helm).

    195 GitHub starsUsed in 2 repos~814 tokens
    DevOps & CloudAuto-check passed
  • Debug Openshell Cluster

    NVIDIA/OpenShell

    Official

    Debug why an OpenShell gateway deployment is unhealthy, unreachable, or unable to create sandboxes.

    16k GitHub stars~20k tokensUpdated today
    DevOps & CloudAuto-check: notes
  • Cleanup

    ericboy0224/learn-docker-and-k8s

    Clean up Docker resources created by the Learn Docker & K8s game.

    491 GitHub stars~454 tokensUpdated 6 mo ago
    DevOps & CloudAuto-check passed
  • Kappal

    sandys/kappal

    Deploy docker-compose projects to Kubernetes using Kappal. An agent skill from sandys/kappal.

    115 GitHub stars~4.9k tokensUpdated 7 mo ago
    DevOps & CloudAuto-check passed

Categories

Questions about Deepseek Harness Docker

What does Deepseek Harness Docker do?

Deploy, configure, verify, upgrade, and troubleshoot DeepSeek Harness with the community Docker, Docker Compose, rootless Podman, and Helm runtime, including the built-in Chromium/noVNC browser…. Deepseek Harness Docker is an agent skill from runzhliu/deepseek-harness-docker. Deploy, configure, verify, upgrade, and troubleshoot DeepSeek Harness with the community Docker, Docker Compose, rootless Podman, and Helm runtime, including the built-in Chromium/noVNC browser, optional protected LAN gateway, optional ungoogled-chromium image, and optional plugin market.

When should I use Deepseek Harness Docker?

Deepseek Harness Docker fits situations like: users ask to run DSH; deepSeek Harness locally; on a trusted LAN; mount a writable workspace.

How do I install Deepseek Harness Docker in Claude Code?

Run `npx skills add runzhliu/deepseek-harness-docker --skill deepseek-harness-docker -a claude-code`. Or copy the skill folder (the runzhliu/deepseek-harness-docker repository) into .claude/skills/deepseek-harness-docker in your project. Claude Code loads it when a task matches its description.

How do I install Deepseek Harness Docker in Codex?

Run `npx skills add runzhliu/deepseek-harness-docker --skill deepseek-harness-docker -a codex`. Or copy the skill folder (the runzhliu/deepseek-harness-docker repository) into .agents/skills/deepseek-harness-docker in your project. Codex loads it when a task matches its description.

Can I use Deepseek Harness Docker in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add runzhliu/deepseek-harness-docker --skill deepseek-harness-docker -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/deepseek-harness-docker, .gemini/skills/deepseek-harness-docker, .github/skills/deepseek-harness-docker and .opencode/skills/deepseek-harness-docker in your project.

What does Deepseek Harness Docker need to run?

Going by SKILL.md and its folder, Deepseek Harness Docker needs the command-line tools its instructions call (docker, make, curl, helm, kubectl and git) and credentials named DEEPSEEK_API_KEY. Our summary lists: Docker; A credential in DEEPSEEK_API_KEY.

Does Deepseek Harness Docker access the network?

SKILL.md contains no URLs. Its commands use docker, curl and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Deepseek Harness Docker safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Deepseek Harness Docker use?

Deepseek Harness Docker is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Deepseek Harness Docker use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Deepseek Harness Docker?

Skills that share tags, products or a category with Deepseek Harness Docker: LangBot Deployment Guide (langbot-app/LangBot, 18k stars), Build Openshell Mxc Windows (NVIDIA/OpenShell, 16k stars), Devops (nicepkg/auto-company, 195 stars) and Debug Openshell Cluster (NVIDIA/OpenShell, 16k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Deepseek Harness Docker?

runzhliu (a GitHub user) maintains it in runzhliu/deepseek-harness-docker, which has 110 GitHub stars. The repository was last updated on October 9, 2026.

Source: runzhliu/deepseek-harness-docker on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.