AllDSH
中文

DSH Taskboard

shengsheng90 · shengsheng90/DSH-taskboard

A local SQLite project taskboard for DSH with a native Web UI and eight agent tools, where only a human can accept work as done.

DSH Taskboard is a DSH plugin by shengsheng90. A local SQLite project taskboard for DSH with a native Web UI and eight agent tools, where only a human can accept work as done. It is filed under Workflow & Automation, Skills & Agents and UI & Experience, for Code Review. Verification level L2 (Structured), an automated security scan has not run yet, and it declares no specific compatibility target; the listing was last checked on 2026-09-17 and is published under the Apache-2.0 licence. Install it with dsh plugin --profile web add @shengsheng/dsh-taskboard

Listing checked by Chiyu , data updated · How to cite

L2active
DSH Taskboard verification panel: level L2 of 5 (Structured) — Manifest valid, key fields complete. Security scan: unverified — no scan has run. Compatibility target: DeepSeek Harness not declared. Licence: Apache-2.0. GitHub stars: 325. Listing last checked 2026-09-17.
Verification panel for DSH Taskboard. The listing holds level L2 of 5 — Structured: Manifest valid, key fields complete. Security scan: unverified — no scan has run. Compatibility target: DeepSeek Harness not declared. Licence: Apache-2.0. Listing last checked 2026-09-17. How verification works

In use

Screenshots taken by this directory of the plugin running in a throwaway DeepSeek Harness on a generated demo project — not of your own machine, and not supplied by the author. Click any capture for the full-size version.

DSH Taskboard — Installed and enabled, as the expanded row in Settings → Plugins → Plugin list: full package name, configuration state and runtime state.
Installed and enabled, as the expanded row in Settings → Plugins → Plugin list: full package name, configuration state and runtime state.
DSH Taskboard — A real session that ran one short task on a generated demo project.
A real session that ran one short task on a generated demo project.

Captured by AllDSH on 2026-09-19 against DSH 0.1.5-rc.1 at a 1920×1080 viewport, package @shengsheng/dsh-taskboard@^0.1.6.

Install command

dsh plugin --profile web add @shengsheng/dsh-taskboard

Requires a running harness: start it withnpx @deepseek-ai/dsh webthen run the command above.New to this? See the installation guide.

What it does

DSH Taskboard adds a project task board to DeepSeek Harness: projects, tasks with readable keys such as DSH-42, comments, relations, attachments, saved workflows and a scheduler. Its README states the authority split plainly — SQLite alone owns task state, while sessions, goals, workspaces, tools, permissions and conversation history stay with Harness.

The sentence most likely to be misread is “no iframe, no second chat runtime.” It is a claim about integration, and it covers two things:

  • The UI is native — a sidebar control and an overlay page served by the plugin’s own client half from bounded Remote snapshots over the existing Typert connection, not an <iframe> embedding a separate web app.
  • The agent side is not a parallel runtime. The architecture document says the automation driver “never imports agent-loop”. It creates or resumes a root Agent through public services, mounts the preset and model route, selects the workspace working directory, creates a Goal, and persists an ordinary user message — so task work runs as a normal Harness session under Harness’s own permission model.

So it is not a second orchestrator with its own model calls and approval path — it is a task database plus a scheduler that starts ordinary Harness sessions.

The claim and review loop

Seven statuses exist: backlog, todo, in_progress, in_review, done, plus blocked and canceled. The documented flow:

human creates backlog
  -> human approves to todo
  -> Agent or automation claims (dependency recheck + exclusive claim + Session)
  -> Agent works in the bound Workspace / branch / worktree
  -> Agent verifies and submits in_review
  -> human accepts done, or returns to todo / in_progress

How an agent claims work. Through taskboard_claim, which takes a task_id and an expected_version. The tool description says the service “rechecks dependencies and exclusive ownership in the same transaction”. Only eligible todo items can be claimed, and the README adds a detail that matters for recovery: orphaned claims stay visible and are not silently stolen.

Who reviews. A human. The README states it twice: agents submit verified work to in_review, “only an authenticated human UI or CLI operation can accept it as done”, and “Goal completion never accepts a task.”

Automatic transitions. Partly. Approving to todo, claiming, submitting to in_review, blocking and releasing are all real transitions, but acceptance is never automatic — it is a human “Accept” click or the CLI task accept, and automation stops at in_review too.

A second gate applies throughout: every mutation except create carries the exact current version, and TASK_STALE_VERSION means reread rather than retry.

What agents can and cannot do

The model-facing surface is eight tools — taskboard_list, taskboard_get, taskboard_claim, taskboard_comment, taskboard_submit_review, taskboard_block, taskboard_release_claim, taskboard_relate — with a source comment saying the set “intentionally contains no accept or generic status mutation”. Accept, delete, archive and force takeover are human-only. A packaged skill, manage-taskboard, tells the agent to taskboard_get immediately before a write. Defaults bound concurrency at 2 claims per project and 4 globally, with allowSharedWorktrees: false meaning one development context per piece of work.

Automation, and what “workflow” means here

An automation is configured per project: interval, agent preset, model route, worker count and quota policy, with the interval floored at 30 seconds. When enabled, the Host scheduler claims eligible todo work, drives a root agent session and goal, and stops at in_review.

One candid note is worth repeating because it is unusual to find in a README: Harness currently exposes no proactive quota signal, so the plugin reports quota as uncertain. New rules default to ignore; choosing pause-on-uncertain deliberately prevents new claims without cancelling running work.

Workflows are narrower than they may look. Assigning one renders its ordered document into the agent’s task instruction as guidance; the scheduler does not invoke workflow nodes automatically. executable on a node means a Host provider is registered for that node kind, not that assignment turns the workflow into a runner.

Where the data lives

Two bounded locations, both configurable and both resolved on the Host side: databasePath, default .dsh/taskboard.sqlite (env DSH_TASKBOARD_DATABASE), and attachmentRoot, default .dsh/taskboard-attachments (env DSH_TASKBOARD_ATTACHMENTS). Attachments cap at 25 MiB per file and 100 MiB per task.

Read the default path carefully. The README says the Host resolves paths and the browser cannot choose them, but the code calls resolve(config.databasePath) in the service constructor, so a relative default resolves against the process working directory rather than $DSH_HOME. The repository’s own open issue #23 documents it failing in the wild: a database silently created under ~/.claude/.dsh/ because the Harness process inherited that directory. If you care where the file lands, set an absolute path.

Backup and migration are documented: copy the SQLite file, its WAL files while live, and the attachment directory, stopping Harness first. To relocate, stop Harness, move both, and point the two settings at the new paths. A database from a future schema revision is refused, while older revisions migrate forward.

A headless CLI, dsh-taskboard, emits schema-versioned JSON across project, task, relation, attachment, workflow, automation and storage groups, exiting 0 on success, 2 usage, 3 service unavailable, 4 domain error and 5 on optimistic conflict.

Requirements

  • Node ^22.19.0 || >=24.0.0 per engines — built on Node’s own node:sqlite, not a native addon, and the README recommends Node 24. pnpm 11 is the declared package manager.
  • Harness 0.1.2-alpha.2, declared in the README as the compatible Host, with a web profile. Note the version discipline: the peer dependencies pin many @deepseek-ai/* packages to exactly 0.1.2-alpha.2, and the repository’s last commits were CI fixes to build against that release. The published npm 0.1.4 tarball is slightly older and its bundled README names 0.1.2-alpha.1 instead.
  • Write access to $DSH_HOME and the ability to restart Harness. Composition and client-module scanning happen only at boot, so a restart is part of the install, and it interrupts in-flight agent turns.
  • Dependencies: zod is the only runtime dependency; React ^18.2.0 and many @deepseek-ai/* packages are peers resolved through the profile’s fallback links.
  • No install-time code. The package declares only build, test, typecheck, check and example — no preinstall, install, postinstall or prepare — so installing it runs no code. The README still warns generally that pnpm runs lifecycle scripts and that you should install only packages you trust.
  • Network and telemetry. The README says network access is needed only to clone the repository and install Node dependencies; no telemetry is documented and no analytics dependency appears in the manifest or host source. What the sessions the scheduler starts may run is Harness’s permission model, not the plugin’s. No third-party scan of this package is on record.
  • Installation is build-and-pack. The README’s procedure is pnpm install, pnpm build, pnpm pack, then dsh plugin --profile web add -w <tarball> — the workspace-root flag is marked mandatory. lib/ is gitignored, so the published git tree has no compiled bundle, and the README warns twice against adding the repository as a raw plugin source. The published npm tarball does ship the compiled lib/ bundle and cordis.patch.yml, so adding the package by name is plausible, but the README does not document that path.

Known limits

  • Version lag is the immediate risk. The repository pins harness 0.1.2-alpha.2 in its peers. Whether it runs on a newer harness is not stated by either source.
  • The default database path is not anchored to $DSH_HOME. Open issue #23 reports it silently creating a database in an unrelated directory, with no maintainer reply when checked.
  • Workflow assignment is guidance, not execution, and quota handling is explicitly uncertain because Harness exposes no proactive quota signal yet.
  • docs/security.md is a design description, not an audit result, and the README states no security-review status.
  • Stars are not maintenance: 327 stars, 8 forks, and a most recent commit of 2026-08-31.

When to use it — and when not to

Use it if you want agent work to run against a durable, inspectable task list rather than a chat turn, and if you specifically want a human acceptance gate the agent cannot click past. The claim-and-version mechanism gives you a board that survives restarts, and because automation reuses ordinary Harness sessions there is no second orchestration model to learn.

Do not install it expecting it to manage your repository. It does not commit, push, merge or open pull requests, and the sessions it starts edit files in a bound workspace like any other session.

FAQ

Does an agent ever mark its own task as done?

No. The README states that agents can submit verified work to in_review and that only an authenticated human UI or CLI operation can accept it as done. It repeats the point from the other direction: goal completion never accepts a task, and agent success ends at in_review. The model-facing tool set deliberately has no accept tool and no generic status mutation tool.

How does an agent claim a task?

With taskboard_claim, passing the task_id and the exact current expected_version. Only eligible todo items can be claimed, and the service rechecks dependencies, archive state and exclusive development context in the same transaction. The plugin returns TASK_STALE_VERSION if the version moved — reread rather than retry — and orphaned claims stay visible for a human to resolve instead of being silently reassigned.

Does it work with my harness version?

That is the open question. The README declares DeepSeek Harness 0.1.2-alpha.2 as the compatible Host, and the peer dependencies pin a long list of @deepseek-ai/* packages to that exact release. Compatibility with any other release, newer included, is not stated by either source.

Is it “no second chat runtime” because it has no agent capability?

No — the opposite. It does drive agent sessions: an enabled automation claims todo work and drives a root agent session and goal, stopping at in_review. The phrase means the plugin reuses Harness’s existing session, goal, workspace and permission machinery instead of shipping a second runtime. The architecture document puts it precisely: the driver never imports agent-loop but creates or resumes a root agent through public services.

Does my data leave the machine?

Nothing documented does. The README says network access is only needed to clone the repository and install Node dependencies; the single runtime dependency is zod, and no telemetry or analytics library appears in the package or the host source. Task state is a local SQLite file and attachments are a local directory.

Can I back it up, and can I move it?

Yes. Copy the SQLite file together with its WAL files while live plus the attachment directory, stopping Harness first for a consistent offline backup. To relocate, stop Harness, move both, and point databasePath and attachmentRoot at the new locations. Watch the default relative path — set an absolute one if you want the location to be predictable.

Sources & references

The technical claims on this page rest on the primary documents below. Each link is followed so it can be checked directly.

  1. [1]shengsheng90/DSH-taskboard — GitHubThe plugin’s own repository and README — the primary document every claim in this listing is checked against.
  2. [2]@shengsheng/dsh-taskboard on npm — npmThe published package the install command on this page resolves.
  3. [3]deepseek-ai/deepseek-harness — GitHubUpstream repository for DeepSeek Harness, the Cordis runtime and the plugin loading model.
  4. [4]@deepseek-ai/dsh on npm — npmPublished harness package, including the release tags our dshTarget field tracks.
  5. [5]dsh-plugin GitHub topic — GitHubThe discovery mechanism used to find plugins listed in this directory.

All links last verified 2026-09-11

Questions about this listing

Is DSH Taskboard safe to install?
DSH Taskboard holds verification level L2 of 5 — Manifest valid, key fields complete — and its security status is unverified — no scan has run. A verification level records how far the install path was exercised; it is not a safety guarantee. Safety depends on what the plugin can actually reach, so read its source and install script and check its file, shell, network and credential access before you run it.
Which DeepSeek Harness version does DSH Taskboard target?
DSH Taskboard declares no dshTarget, so no specific DeepSeek Harness release has been committed to. The field is optional, and its absence means this listing makes no claim about working on a particular release — test it in an isolated profile first.
How do I install DSH Taskboard?
Start the harness with npx @deepseek-ai/dsh web, then copy the install command shown at the top of this page. That command is generated from the package name the repository publishes — or from an install spec the listing declares — so it cannot drift from what the repository actually ships. This listing was last checked on 2026-09-17.
Does an agent ever mark its own task as done?
No. The README states that agents can submit verified work to in_review and that only an authenticated human UI or CLI operation can accept it as done. It repeats the point from the other direction: goal completion never accepts a task, and agent success ends at in_review. The model-facing tool set deliberately has no accept tool and no generic status mutation tool.
How does an agent claim a task?
With taskboard_claim, passing the task_id and the exact current expected_version. Only eligible todo items can be claimed, and the service rechecks dependencies, archive state and exclusive development context in the same transaction. The plugin returns TASK_STALE_VERSION if the version moved — reread rather than retry — and orphaned claims stay visible for a human to resolve instead of being silently reassigned.
Does it work with my harness version?
That is the open question. The README declares DeepSeek Harness 0.1.2-alpha.2 as the compatible Host, and the peer dependencies pin a long list of @deepseek-ai/* packages to that exact release. Compatibility with any other release, newer included, is not stated by either source.
Is it "no second chat runtime" because it has no agent capability?
No — the opposite. It does drive agent sessions: an enabled automation claims todo work and drives a root agent session and goal, stopping at in_review. The phrase means the plugin reuses Harness's existing session, goal, workspace and permission machinery instead of shipping a second runtime. The architecture document puts it precisely: the driver never imports agent-loop but creates or resumes a root agent through public services.
Does my data leave the machine?
Nothing documented does. The README says network access is only needed to clone the repository and install Node dependencies; the single runtime dependency is zod, and no telemetry or analytics library appears in the package or the host source. Task state is a local SQLite file and attachments are a local directory.
Can I back it up, and can I move it?
Yes. Copy the SQLite file together with its WAL files while live plus the attachment directory, stopping Harness first for a consistent offline backup. To relocate, stop Harness, move both, and point databasePath and attachmentRoot at the new locations. Watch the default relative path — set an absolute one if you want the location to be predictable.

Similar DSH plugins

Browse all

QQ-pet-style companion floating in the DSH Web GUI — a 15-state sprite reacting to real session and task events.

L2
325 JavaScript

Memory Evolve

csyangwen

Hermes-style five-track long-term memory with in-turn self-review, human-gated skill evolution, four-track todos and optional session orchestration — pure plugin, zero runtime deps.

L2
317 JavaScript

Three components, three install paths: a restart-free runtime plugin injector, routing agent presets, and a graded task protocol.

L3
7.2k JavaScript
Editor's pick

A spec-first agent OS for AI coding — Socratic interview, immutable Seed, staged evaluation, MCP server.

L2
6k Python

Four recomposable controls in the composer — working state, reasoning strategy, quality gate, and a self-evolution loop that proposes rules but never applies one without your review.

L3
199 TypeScript

Persistent multi-model workflow teams in Settings → Teams — per-member model/tools, bounded DAG with retries, Run Center and provider Token insights.

L3
176 TypeScript
ESC

Type to search the index. Built at deploy time by Pagefind.