DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
W

@local/dsh-whisper-local

Whisper Local

Fully local multilingual speech recognition with whisper.cpp: 99 Whisper languages, automatic detection by default, no data sent over the Internet.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:Linj1k/dsh-whisper-local#db22ee30961b945eaffaa4d40cbbb3659ece1366
READMECompatibilityVersions

Compatibility and provenance

Whisper Local is published as @local/dsh-whisper-local and currently resolves to version 1.3.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
11/4/2026

Versions

1.3.0stable
11/4/2026

Related plugins

Loading related plugins…

Latest
1.3.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
Not declared
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
11/4/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in vision-media.

Experimental Voice Input Bundle@deepseek-ai/dsh-experimental-voice-input-bundleExperimental voice input with local SenseVoice; downloads its runtime on first useModlens@liustack/modlensPlug-in vision for text-only LLMs, powered by the free Antigravity CLIImage Gendsh-image-genBring ChatGPT-like image generation to DeepSeek Harness — Gemini, OpenAI, Seedream, DashScope, local ComfyUI & more.Ab Ocrdsh-ab-ocr--- description: "The out-of-tree ocr tool: recognizes a scanned PDF or image page by page, merges the pages in order only after the last one, and saves one Markdown document with the heading levels the model decided." kind: "package-reference" ---

README

Whisper Local for DeepSeek Harness

Local, offline speech recognition for the DeepSeek Harness Web GUI, powered by whisper.cpp. It plugs into the Harness voice-input pipeline as a host-local speech provider: audio is recorded by the browser, transcribed on the Host machine, and never sent over the network.

  • No OpenAI account, no API key.
  • 99 Whisper languages plus automatic language detection.
  • Model selector built into the Harness UI.
  • Managed runtime and model downloads with size + SHA-256 verification.
  • Agent tool whisper_model so the assistant can inspect and change the model.

This is a community bundle, not an official DeepSeek plugin.

Table of contents

  • Features
  • How it works
  • Requirements
  • Installation
  • Usage
  • Models
  • Configuration
  • Agent tool
  • Data and privacy
  • Troubleshooting
  • Development
  • Limitations
  • Acknowledgements

Features

  • Fully local dictation | whisper-cli.exe runs on the CPU; the model and audio stay on the machine.
  • Automatic language detection by default | language: auto lets Whisper identify each recording's language; any of the 99 Whisper languages can still be forced from the voice settings.
  • Model selection in the UI | pick tiny, base, small, medium or large-v3-turbo from the plugin page; the change is persisted and applied immediately.
  • Managed setup | the Windows x64 whisper.cpp runtime and GGML model are downloaded on demand, verified (size + SHA-256), cached, and reused offline.
  • No microphone data retention | each recording is written to a temporary WAV, transcribed, then deleted.
  • Agent integration | the assistant can list models, download one in the background, or switch the active model through whisper_model.

How it works

Browser (Harness composer)
  └─ microphone button records 16 kHz mono PCM WAV
       └─ speech Remote sends the recording to the Host
            └─ whisper-local SpeechProvider
                 ├─ writes a temporary WAV
                 ├─ spawns whisper-cli.exe with the selected GGML model
                 ├─ reads the text output
                 └─ deletes the temporary files and returns the transcript

The provider registers through ctx.speechToText.register() and advertises itself as location: 'host-local', so the voice UI shows preparation state and lets the user download the model when needed.

Requirements

RequirementDetails
DeepSeek HarnessDesktop/Web build with the experimental Voice Input bundle enabled
OSWindows 10/11 x64 (the pinned runtime is a Windows CPU build)
Runtimetar.exe (built into Windows 10/11) for extracting the runtime archive
Disk~90 MB for the extracted runtime + 31–547 MB per model (see table)
CPUAny x64 CPU; more cores and threads improve speed. GPU is not used
MicrophoneOS + browser microphone permission

No Node.js, Python, compiler, or CUDA installation is required at runtime.

Installation

  1. Make sure the official Voice Input bundle is enabled: Plugins → Voice Input.
  2. Install this bundle from a local directory: Plugins → Add plugin → Install a third-party plugin, then enter the absolute path to this folder (.../dsh-whisper-local). Alternatively, use the plugin manager's local-directory install target.
  3. The bundle's patch selects whisper-local with language: auto for the voice module and registers the whisper_model tool.
  4. If the Host module was added while Harness is running and the provider does not appear, restart the Harness application once. Browser-only UI changes are hot-reloaded.

The first dictation may show the voice setup prompt when the selected model is missing; Go to setup opens the Voice Input details where preparation runs. Selecting a model on the plugin page starts its preparation automatically. Once prepared, recognition works fully offline.

Usage

Dictation

  1. Click the microphone button in the composer, between the model selector and Send.
  2. Allow microphone access the first time.
  3. Speak, then press Stop.
  4. The transcript is inserted into the draft; review and send it normally.

Choosing a model

Open Plugins → Whisper local. The bundle page offers:

  • a model dropdown with sizes and speed/accuracy hints;
  • the currently active model;
  • a Save model button.

The selection is written through the Harness Settings service into the profile configuration, so it survives restarts. If the chosen model is not downloaded yet, preparation starts automatically; progress is shown in the Voice Input bundle details (Download and prepare).

Language selection

Whisper local advertises 99 languages plus auto. Change the language in Plugins → Voice Input → bundle details → Language. The official selector displays translated labels for auto, en, zh, ja, ko; other languages appear as ISO codes such as fr, de, es, ja.

The default is auto (automatic detection), not a fixed language. French is not forced: a recording is detected on its own unless a specific language is selected. Automatic detection is a good default for mixed-language use; forcing the exact language improves reliability on short or noisy recordings.

Models

All models are multilingual Whisper GGML builds, hosted by ggerganov/whisper.cpp.

KeyFileSize (binary)Notes
tiny-q5_1ggml-tiny-q5_1.bin~31 MBFastest, lowest accuracy
base-q5_1ggml-base-q5_1.bin~57 MBFast, basic accuracy
small-q5_1ggml-small-q5_1.bin~181 MBDefault; good balance
medium-q5_0ggml-medium-q5_0.bin~514 MBMore accurate, slower
large-v3-turbo-q5_0ggml-large-v3-turbo-q5_0.bin~547 MBBest multilingual accuracy

Measured on an AMD Ryzen 9 9950X3D with 8 threads, for roughly 10 seconds of speech:

ModelFrenchJapanese
small-q5_1~1.3 s~1.2 s
large-v3-turbo-q5_0~3.3 s~4.0 s

The pinned whisper.cpp runtime is the official nightly b5454 Windows x64 OpenBLAS build, verified by its release SHA-256.

Configuration

The bundle patch (cordis.patch.yml) supplies defaults:

- insert:
    - id: whisper-local
      name: '@local/dsh-whisper-local'
      config:
        dataRoot: !!js dshHomePath('speech-to-text', 'whisper-local')
        model: small-q5_1
        threads: 8
        timeoutMs: 180000

- id: speech-to-text
  config:
    defaultProvider: whisper-local
    language: auto
FieldDefaultMeaning
dataRoot%USERPROFILE%\.dsh\speech-to-text\whisper-localManaged location for runtime, models and diagnostics
modelsmall-q5_1One of the model keys above; also editable from the UI
threads8CPU threads passed to whisper-cli
timeoutMs180000Per-transcription deadline
modelPathunsetUse an existing GGML model file instead of a managed download
whisperCliunsetUse an existing whisper-cli.exe instead of the managed runtime

User overrides are stored in the profile's patch layer and take precedence over the bundle defaults. The model selected from the UI is written there as well.

Agent tool

The bundle registers the whisper_model tool:

ActionDescription
listModel catalogue, downloaded state, active model, preparation phase, active downloads
downloadDownload a model in the background without changing the active model
setSelect a model and persist it through Settings; downloads it unless prepare=false
preparePrepare/download the currently selected model

Example: switch to the large model after downloading it in the background.

{ "action": "download", "model": "large-v3-turbo-q5_0" }
{ "action": "set", "model": "large-v3-turbo-q5_0", "prepare": false }

Data and privacy

  • No network calls during dictation. The only network traffic is the one-time runtime/model download performed by the explicit preparation step.
  • No API keys. The plugin never asks for or stores an OpenAI key.
  • Temporary audio. Each recording becomes a temporary WAV under the OS temp directory and is removed in a finally block after transcription.
  • Managed data lives in dataRoot:
    • runtime/ | extracted whisper.cpp build and runtime.json marker;
    • model/ | downloaded GGML models;
    • cache/ | downloaded runtime archive;
    • status.json | diagnostic snapshot (provider, model, languages, selected language, readiness). No audio or transcript content is stored there.
  • Settings persistence uses the profile's cordis.patch.yml; the model choice contains no sensitive data.

Troubleshooting

The microphone says the provider is not ready. Open Plugins → Voice Input → details and use Download and prepare. The setup card downloads the runtime and model and shows progress.

The model selector shows "settings unavailable". The Harness Settings service or configForms client service is not mounted in this profile. Use the voice bundle's preparation page or edit model in the profile patch.

No audio is recognized. Check the OS microphone permission, that a model is prepared, and the selected language. Try auto, or force the spoken language. For quiet/short recordings, a larger model helps.

The plugin row is failed after an update. The bundled provider.js is plain JavaScript and needs no build, but Host modules are loaded once per process. Toggling the row or restarting Harness reloads the module. Check the row's diagnostic in Plugins.

Diagnostics. dataRoot/status.json reports the active model, advertised language count, selected provider/language and readiness. The agent can also call whisper_model with action: "list".

Development

No build step. The bundle is plain ESM/JavaScript.

FileRole
package.jsonBundle manifest (dsh.bundle.patch, dsh.client, exports)
cordis.patch.ymlCordis rows: the provider and the voice selection override
index.jsCordis entry; loads Schemastery from the dsh installation and declares the volatile model Config field
provider.jsSpeech provider: preparation, downloads, verification, whisper-cli execution, whisper_model tool
client.jsBrowser page: model selector through ctx.configForms
locale/*.jsonPlugin-manager display metadata (en, fr, zh)
tests/*.mjsProvider and client tests
tests/fixtures/*.wavSmall multilingual TTS fixtures for the integration tests

Tests

The provider tests run real transcription with the prepared model in the default dataRoot, so prepare the runtime/model first (or point WHISPER_LOCAL_DATA_ROOT at a prepared directory):

node tests/local-provider.test.mjs
node tests/client.test.mjs

The provider suite covers: provider registration and language list, idempotent preparation, real French transcription, unprepared-state errors, explicit English/German/Spanish/Japanese transcription, automatic detection, model listing through the agent tool, persistence through Settings and invalid model rejection.

Limitations

  • Windows x64 only for the managed runtime. The provider logic is portable, but the pinned download is a Windows build; other platforms need a different whisperCli/runtime and extraction path.
  • CPU inference only in this configuration; no GPU acceleration.
  • Complete recordings only | no streaming captions, wake word or automatic send; those are capabilities of the voice subsystem, not this provider.
  • Accuracy varies by model and language. Low-resource languages may need a larger model.
  • The official Voice Input selector shows ISO codes for languages without a translated label.
  • large-v3-turbo needs roughly 1–2 GB of RAM during inference and is slower than small; choose based on your hardware.

Acknowledgements

  • whisper.cpp | MIT, runtime and GGML model format.
  • OpenAI Whisper | model weights and language set.
  • DeepSeek Harness | plugin, voice-input and settings APIs.

The plugin code itself is provided as part of this repository; add or adapt the license notice to match the repository's licensing before publishing. "# dsh-whisper-local"