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.

Image Base64 — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
I

dsh-image-base64

Image Base64

DeepSeek Harness plugin: transcodes images to a base64-safe format (PNG) before a vision request, fixing gateways like LM Studio that reject non-PNG/JPEG/GIF data URLs with "'url' field must be a base64 encoded image."

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

npx -y @deepseek-ai/dsh plugin --profile web add github:pureexe/dsh-image-base64#68abe65b03ec53bd306d08df8105fc58678f4f03
READMECompatibilityVersions

Compatibility and provenance

Image Base64 is published as dsh-image-base64 and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
github
Registry updated
9/12/2026

Versions

0.1.0stable
9/12/2026

Related plugins

Loading related plugins…

Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
any
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
9/12/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.

Tool Describe Image@linxin666/dsh-tool-describe-imageModel-facing describe_image tool for the dsh web GUI: gives a text-only model image understanding by asking a vision-language model at an OpenAI-compatible endpoint to describe one image (local path, http(s) URL, or attachment reference). Hot-pluggable — Modlens@liustack/modlensPlug-in vision for text-only LLMs, powered by the free Antigravity CLIDeepseek Ivideodeepseek-ivideoiPolloWork HyperFrames Video Studio and 27 editable video templates as a native DeepSeek Harness conversation view.Imagegen@dickpy/dsh-imagegenAI image generation plugin for the dsh web GUI: text-to-image and image-to-image through configurable provider channels (gpt-image-2 / grok-imagine-image / nanobanana series / seedream-5.0-pro / dall-e-3, with native xAI Grok Imagine, Google Nano Banana a

README

dsh-image-base64

A DeepSeek Harness plugin that fixes:

This turn failed 400 "'url' field must be a base64 encoded image."
INVALID_REQUEST

when a vision-capable model (e.g. meta/muse-glimmer) is served through an OpenAI-compatible gateway that validates the image MIME type strictly, such as LM Studio.

Why this happens

See deepseek-ai/deepseek-harness#4615 for the full discussion. The short version:

  • dsh-attachment-local's request-image quality ladder re-encodes an image as image/webp whenever the source has an alpha channel (JPEG has no alpha channel to fall back to). A pasted screenshot or a PNG with transparency very often has one.
  • LM Studio's OpenAI-compatible endpoint only accepts image/png, image/jpeg, and image/gif inside a base64 data: URL. It rejects image/webp (and anything else) at the protocol layer with 400, before the request reaches the model.
  • dsh-llm-pi-ai forwards whatever mediaType the attachment store gives it straight into the request — there's no format negotiation between the two, so the mismatch reaches LM Studio unchanged.

What this plugin does

It wraps the attachment store's readImageRequest() (the call dsh-llm-pi-ai makes to get the exact bytes/MIME type that go into the request) and transcodes the result to image/png with sharp whenever its media type isn't in an accepted list (image/png, image/jpeg, image/gif by default). Everything already in an accepted format passes through untouched — only the images that would otherwise be rejected pay the transcode cost.

Install

From your DSH profile directory (or via dsh plugin --profile <name> add, which forwards to pnpm inside the profile):

dsh plugin --profile <name> add /home/pakkapon/dsh-image-base64

Then list it in that profile's package.json under dsh.profile.bundles:

{
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "dsh-image-base64"
      ]
    }
  }
}

Restart the profile (or let it pick it up automatically if patchReload: live is set) to load it.

Configuration

Accepted media types default to [image/png, image/jpeg, image/gif] (LM Studio's whitelist). To widen or narrow that, target the plugin's id from your own patch layer (profile cordis.patch.yml or $DSH_HOME/cordis.patch.yml):

- id: image-base64-compat
  config:
    acceptedMediaTypes: [image/png, image/jpeg, image/gif, image/webp]

Caveats

  • This patches the attachment store's request-image projection only — it doesn't touch how images are stored, just what's sent on the wire for a model request.
  • Transcoding to PNG is lossless for the pixels it's given, but a PNG re-encode of a large photo is bigger than an equivalent JPEG/WebP. If your gateway actually accepts WebP, add it to acceptedMediaTypes instead of relying on the default.

License

MIT