DeepSeek Harness image generation editorial cover: an agent harness pipeline producing image, video and audio output through a media API plugin, dark amber and copper with an amber key

DeepSeek Harness Image Generation: Adding Image, Video and Audio Output via a Plugin

If you want DeepSeek Harness (dsh) to produce images, video, or audio, a plugin is not an optional extra—it is the only path. The 28 language models the harness connects to on the Modellix LLM gateway all have text-only output, and the official DeepSeek Harness itself generates no media. Adding media generation to dsh means installing a plugin that brings its own media pipeline into the harness, which is exactly what the Design module of the Modellix plugin for DeepSeek Harness does.

This is a walkthrough of that module: how to install the plugin, connect your key, and generate a first image—and, because this is the part every listicle skips, what happens at the billing and irreversibility boundaries when you do. It does not cover the pure-configuration path for swapping text models (that is the custom model configuration article), and it does not re-explain the plugin mechanism in general (that is the DeepSeek Harness plugin article).

One disclosure up front: Modellix operates the media API and the plugin used in these examples, so we have a commercial interest in this working for you. The instructions below come from the plugin’s own README and Modellix documentation, and the numbers are dated September 1, 2026.

Why image generation in dsh requires a plugin

The structural reason is simple: the harness is a text agent. Every model in the Modellix LLM catalog—28 models across 9 provider labels, from openai/gpt-5.6-sol to deepseek/deepseek-v4-flash—advertises text as its output modality. The gateway that serves them returns text; that is its contract. So inside the harness, no model you select can emit an image, no matter what you prompt it with. The DeepSeek Harness guide covers how the harness gets its model source at all.

The community hit this wall within days of the official repository‘s release. The answer Google’s AI Overview now cites first is a developer who built a plugin precisely because “DeepSeek Harness didn’t have ChatGPT-style image generation”—proof that “how do I make dsh generate an image” is a real, unanswered question, and that the answer everyone finds is a plugin. If you search for a deepseek harness image generation plugin today, you get community projects and CLI skills like the two below, plus the workspace route this article covers.

Three plugin routes exist today, and they are structurally different:

  • Community tool plugins like dsh-image-gen: add a generate_image tool the agent can call, bring-your-own-key, OpenAI-compatible backends.
  • CLI skills like the WaveSpeed skill: the agent drives a command-line client (wavespeed run <model-id>) to find, inspect, and run media models.
  • Workspace-style plugins like Modellix’s Design module: a schema-driven two-pane workspace inside the harness UI where you pick a model, edit parameters, and review results, with the API call handled by the plugin.

This article walks through the third route. If you want to decide between plugin routes first, the Modellix plugin for DeepSeek Harness article explains how bundles work and when you do or don’t need one.

Two hosts, one key: the boundary you must not mix

Before any generation happens, understand where the media request actually goes—because it is a different service from the text gateway, with different billing.

LLM gateway Media API
Host https://llm.modellix.ai https://api.modellix.ai
Produces Text only (Chat Completions / Responses / Messages) Image, video, and audio generation
Request style Synchronous, optional SSE streaming Async tasks: submit → get task_id → poll
Billing unit USD per 1M tokens USD per image · USD per second · USD per M chars
Auth Modellix API key Same Modellix API key

Modellix’s API reference is explicit about the split: “Media generation (image, video, speech) uses https://api.modellix.ai and async tasks. Do not mix that host with the LLM gateway.“ The LLM gateway overview states it even more plainly: “This gateway returns text.”

Two practical consequences follow. First, the text gateway does not generate images—sending an image prompt to llm.modellix.ai gets you text or an error, not a picture. Second, because the media API is asynchronous, a “generate” action does not return an image in the response body; it returns a task you then poll. That async lifecycle is where the billing boundaries live, and it is the subject of the next sections.

Two pipelines for DeepSeek Harness media generation: the text gateway and the async media API sharing one API key

The two hosts behind dsh media generation: text flows synchronously through the LLM gateway, while image, video, and audio generation runs as async tasks on the media API—same key, different service, never mixed.

Installing the plugin and connecting your key

Prerequisites. The plugin pins its host: DeepSeek Harness 0.1.1-rc.2 (check peer dependencies before upgrading—the harness is in developer preview and warns “THERE WILL BE COMPATIBILITY-BREAKING CHANGES”). Node.js ^22.19.0 || >=24.0.0 for published-package use. And a valid Modellix API key from https://docs.modellix.ai/get-started—a vendor platform key (OpenAI, Anthropic, DeepSeek) will not authenticate.

Install. With the harness installed, run:

1
2
3
dsh plugin --profile web add dsh-modellix
dsh --profile web --dump-config
dsh --profile web

The dsh-modellix repository is the package source of truth. --dump-config is the acceptance step: it should show the dsh-modellix Bundle layer and a plugin row whose id is modellix. The plugin is a Profile Bundle for the web profile (replace web if you use another profile). After any update, restart the profile—the README warns that reloading the browser alone does not load a new Client Bundle.

Connect your key. On first start, wait for the “Connect Modellix” dialog. It has one API Key field plus Design, LLM, and Web switches (all on by default; this article only uses Design). The key can come from either of two sources:

  • Enter it in the dialog or in settings—the Harness Credential service stores it, and the browser never shows it again, only its status and source.
  • Set MODELLIX_API_KEY in the harness launch environment—an environment-sourced key is read-only in the UI; update it outside and restart Harness.

Two gotchas worth knowing: a fresh profile may first show Harness’s own DeepSeek initialization dialog—complete or handle that step before “Connect Modellix” appears. And never put a real key in a repository, command argument, log, screenshot, or test snapshot; the plugin’s security rule is absolute about this.

Generating your first image with the Design module

Open the Design view in the harness. The workspace is two-pane: on the left you pick a model, enter a prompt, and adjust parameters; on the right you review tasks and results. (The layout is two columns when the container is wider than 992px and stacks into one column on narrow slots.)

1. Pick a model. The left pane reads the live Modellix image/video/audio catalog plus each model’s current api_schema—the fields you see are the real API parameters, not a static form. Search or filter by output type and select a model. The plugin restores your most recently selected model if it is still available; otherwise it suggests a preferred one from the current catalog.

2. Enter a prompt. Many models need only a prompt; everything else comes from the model’s schema, including public defaults. The plugin’s documented worked example uses gpt-image-2 with this exact acceptance prompt:

A premium editorial architectural photograph of a quiet cliffside library above a misty alpine lake at blue hour, carved pale stone arches, warm amber reading lamps, one thoughtful reader, subtle greenery, natural reflections, cinematic but realistic lighting, restrained navy and ivory palette, precise composition, no text, no logo.

3. Set parameters. For gpt-image-2, set quality to high and size to 1536x1024, leaving the rest at defaults. You can edit enum, switch, numeric, text, or JSON fields directly; values that violate the schema prevent submission. If a model does not advertise a field, do not add it manually—use the live schema only.

4. Or let the parameter assistant propose them. Under “Adjust parameters by chat,” describe the change in natural language. The assistant runs on the fixed openai/gpt-5.6-luna model through the same key, produces a reviewable before/after diff you accept or reject, and never starts generation by itself. Note that a proposal may incur LLM usage (text rates) even though no media is generated.

5. Confirm and generate. Review the parameters and the billing notice, then select “Confirm and generate” once. This is the only action that starts a billed media request. The right results pane then groups records as Running, Succeeded, or Diagnostics, with enlarged image view, video/audio playback, and safe downloads.

Design module workspace with model controls on the left, task results on the right, and the Confirm and generate button

The Design module’s two-pane workspace: schema-driven parameters on the left, task results on the right, and one “Confirm and generate” button that starts the only billed request.

What actually happens when you hit “Confirm and generate”

This is where media generation differs from everything else in the harness. The plugin submits to the media API’s async task model: a POST to https://api.modellix.ai/api/v1/<model-slug>/async returns a task_id, and the UI polls https://api.modellix.ai/api/v1/tasks/<task_id> until the media is ready (an empty balance returns HTTP 402 at submit time).

Three boundaries matter more than they look:

  • The billed POST is never retried automatically. The plugin submits the billed generation exactly once. Read-only task status checks use bounded safe retries—but the chargeable call itself is fire-once. If a retry ever happens, it is a duplicate charge.
  • A disconnect leaves the outcome unknown. If the session drops mid-flight, the Design view shows “Submission outcome unknown.” The correct move is to check the Results pane or your Modellix-side task records before manually re-submitting—otherwise you can pay twice for the same image.
  • There is no cancel. The plugin has no upstream cancellation call and the UI has no task cancellation button. Once the billed POST is sent, the task runs to completion or failure on the upstream side; you cannot take it back.

The practical translation for a harness user: treat “Confirm and generate” as a deliberate, final action. Review the parameters and the billing notice as if there were no undo—because for a submitted task, there isn’t.

The honest limitations: cancellation, storage, and the parameter assistant

The plugin’s own README is candid about what it does not do, and it is worth quoting the boundaries so you are not surprised later:

  • Results are not a media library. The results pane persists task metadata and upstream resource URLs—not the API key, not your prompt, and not copies of the media. If the upstream response has no expiry, the plugin applies a seven-day local display cap; that cap does not extend the upstream URL or copy media into permanent local storage. Download what you need while it is there.
  • Complex schemas refuse to guess. When a schema contains a blocking unsupported constraint, the plugin disables submission instead of interpreting parameters it does not understand. If a model won’t submit, read its schema rather than fighting the form.
  • The parameter assistant is not an open-ended agent. It is constrained by the current schema, proposes diffs you review, and never begins generation itself. Plan prompts as a human in the loop.

For completeness on errors: only an explicit HTTP 401 marks your credential invalid and opens recovery; a 402, 429, network failure, or 5xx is not reported as a bad key. If your key is environment-sourced and invalid, update MODELLIX_API_KEY and restart Harness—the UI cannot override it.

Beyond images: video and audio in the same workspace

The Design module is not image-only. The same workspace reads the live catalog for image, video, and audio models, and all three follow the same async task lifecycle and the same billing rules (USD per image, per second, per M characters). The video and audio long-tails of this topic—“deepseek harness video generation,” “deepseek harness audio”—are answered by the same module, not by a different plugin.

Because dsh media generation ultimately routes to the Modellix media API, the model-level knowledge carries over from the existing model pages on this blog. If you are choosing an image model to run inside the harness, the OpenAI image generation API and the Imagen 4 API guides cover the underlying models, and the GPT Image 1.5 pricing reference explains how image-model pricing behaves. For video workloads, the same API covers text-to-video and image-to-video models behind one key—the catalog in the Design left pane is the current list, and it changes as models are added.

Five rules for generating media in a harness

If you take one thing from this walkthrough, take these five boundaries:

  1. Media output requires a plugin. Every LLM the harness connects to outputs text; image, video, and audio generation is a plugin capability.
  2. Never mix the two hosts. llm.modellix.ai returns text synchronously; api.modellix.ai generates media as async tasks. Different service, different billing units.
  3. Only “Confirm and generate” bills—and it never auto-retries. The chargeable POST is fire-once; polling is safe, resubmitting is not.
  4. There is no cancel button. Review parameters and the billing notice before submitting, because you cannot take a submitted task back.
  5. Results are URLs, not a library. Export or download media while it is valid; a seven-day local display cap is not permanent storage.

That last point is the one most tutorials miss, and it is the difference between treating a harness as a media production tool and treating it as a chat that happens to make pictures. Generate deliberately, download what you need, and let the task lifecycle do the rest.

DeepSeek Harness Integration Docs

Read the full DeepSeek Harness integration reference for the Modellix media API and LLM gateway, including the Design module walkthrough and the two-host troubleshooting table.

View Docs

Open the Modellix Console

Log in to create your Modellix API key and browse the live image, video, and audio model catalog.

Login

Instructions verified against the dsh-modellix README and Modellix documentation on September 1, 2026 (Beijing time). DeepSeek Harness is in developer preview and iterating rapidly—before upgrading, check the plugin’s peer dependencies and CHANGELOG. Model catalogs, tasks, and billing rates change; the live catalog and the billing page are the source of truth. Modellix operates the media API and plugin described in this article and has a commercial interest in them. The Modellix LLM gateway is a text gateway—use text-only prompts; do not attach images. Media generation runs on the separate async media API, which is the subject of this article.