DeepSeek Harness plugin

dsh-llm-databricks

Community Databricks AI Gateway LLM plugin for DeepSeek Harness

Jump to install

Source facts

Repository
zhuchengde0214-ctrl/dsh-llm-databricks
Latest update
Aug 18, 2026
Category
Tools & Capabilities
GitHub stars
1
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/zhuchengde0214-ctrl/dsh-llm-databricks
Plugin: dsh-llm-databricks
Author: zhuchengde0214-ctrl

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.mdSource · read only
README language

dsh-llm-databricks

中文

An independent, community-maintained DeepSeek Harness bundle for conversation models served through Databricks AI Gateway. It installs out of tree, uses the public Harness LLM/settings/credentials seams, and does not patch Harness or node_modules.

> This package is not an official DeepSeek AI or Databricks product.

Support matrix

Databricks routeprotocolStreamingToolsNotes
MLflow Chat Completions /ai-gateway/mlflow/v1/chat/completionsmlflow-chatYesYesOpenAI Chat wire format. Removes unsupported store and tool strict. Covers Databricks-served Claude, GPT, Gemini, Llama, DeepSeek, and other conversation models.
MLflow Responses /ai-gateway/mlflow/v1/responsesmlflow-responsesYesYesOpenAI Responses/OpenResponses behavior available through the Harness/pi-ai vocabulary. Removes unsupported store and tool strict.
Native Anthropic Messages /ai-gateway/anthropic/v1/messagesanthropic-messagesYesYesUses only Authorization: Bearer; suppresses x-api-key. Preserves text, tool use, and thinking blocks supported by the model.
Native OpenAI Responses /ai-gateway/openai/v1/responsesopenai-responsesYesYesUses bearer authentication and the native Responses wire format.

Native Gemini API and embeddings are not implemented in 0.1.0. Gemini conversation models are already usable through MLflow Chat Completions. Harness's current LLM seam does not consume embeddings. Native Gemini is a roadmap item.

Requirements

  • Node.js ^22.19.0 or >=24
  • DeepSeek Harness 0.1.0-rc.7 compatible seams
  • A Databricks personal access token, OAuth access token, or other bearer token

accepted by the configured workspace gateway

Install

From npm after a public release:

dsh plugin --profile web add dsh-llm-databricks

From the public GitHub repository:

dsh plugin --profile web add github:zhuchengde0214-ctrl/dsh-llm-databricks

For a packed local release:

pnpm pack
dsh plugin --profile web add ./dsh-llm-databricks-0.1.0.tgz

The package's dsh.bundle.patch adds a dormant llm-databricks plugin row. It registers routes only after configuration supplies providers.

Configure

Add an llm-databricks section to the isolated profile's user settings (or use a Harness configuration surface that writes the same namespace):

llm-databricks:
  providers:
    databricks-main:
      displayName: Databricks Main
      workspaceUrl: https://dbc-example.cloud.databricks.com
      protocol: mlflow-chat
      credentialRef: DATABRICKS_TOKEN
      models:
        - id: example-chat-endpoint
          name: Example Chat Model
          contextWindow: 128000
          maxTokens: 8192
          input: [text]
        - id: example-reasoning-endpoint
          name: Example Reasoning Model
          contextWindow: 200000
          maxTokens: 16384
          reasoningEfforts:
            off:
            low: low
            high: high

id is the model-serving endpoint/model service identifier sent in the model field. Capacities are deployment metadata and must match the served model. input defaults to [text]; declare [text, image] only when the endpoint actually accepts images.

Use one provider route per protocol when the same workspace exposes several wire formats:

llm-databricks:
  providers:
    databricks-anthropic:
      workspaceUrl: https://adb-example.azuredatabricks.net
      protocol: anthropic-messages
      credentialRef: DATABRICKS_TOKEN
      models:
        - id: example-anthropic-endpoint
          contextWindow: 200000
          maxTokens: 16384
    databricks-responses:
      workspaceUrl: https://workspace.gcp.databricks.com
      protocol: openai-responses
      credentialRef: DATABRICKS_TOKEN
      models:
        - id: example-responses-endpoint
          contextWindow: 128000
          maxTokens: 8192

Store the token through Harness's credentials service (for example, the web Models page) or expose the referenced environment variable to the Harness process. Settings contain only credentialRef; the plugin never stores a token in settings or logs it.

Inspect the composed bundle without sending a model request:

dsh --profile web --dump-config

Security boundary

  • HTTPS is mandatory. Userinfo, query strings, fragments, and paths in

workspaceUrl are rejected.

  • By default, bearer credentials are sent only to a workspace subdomain under

.cloud.databricks.com, .azuredatabricks.net, .gcp.databricks.com, or legacy .databricks.net. Matching is label-boundary safe; lookalike suffixes are rejected.

  • Official hosts must use port 443.
  • Each protocol is pinned to its exact gateway request path. Redirect following

is disabled by the request transport.

  • Custom/private DNS requires allowCustomHost: true. This opts into forwarding

the bearer credential to that hostname. Review DNS ownership, TLS termination, proxies, and logging before enabling it.

  • A non-443 custom port additionally requires allowNonStandardPort: true.

This is intended for controlled private gateways and tests.

  • Native Anthropic requests delete x-api-key and send bearer authentication

only. The plugin never takes over official Anthropic or other non-Databricks provider routes.

Errors and retries

The adapter preserves HTTP status, Databricks/request IDs, and valid Retry-After/retry-after-ms delays. It maps:

  • 401/403 to authentication failures
  • 429 quota messages (including workspace input-tokens-per-minute limits) to

quota failures, and other 429 responses to rate limits

  • explicit context-length messages to context overflow
  • ordinary or bodyless 400 responses to invalid requests, never context overflow
  • 5xx responses to server failures

SDK retries are disabled; Harness's provider retry policy owns retries. The default policy retries transient failures only, honors provider delays, and does not loop on deterministic 4xx responses. Configure retryPolicy per route only when a deployment needs different bounded backoff.

Troubleshooting 429

1. Read the error's retry delay and request ID; do not immediately resubmit. 2. Check the workspace AI Gateway usage and the model serving endpoint's input tokens/minute quota. 3. Reduce concurrent sessions, prompt size, or tool output retained in context. 4. Request a quota increase or route workloads across separately governed endpoints.

Migration and uninstall

Configuration is portable: copy the llm-databricks settings section and re-create the named credential in the destination Harness home. Do not copy credential values into source-controlled settings.

Remove the plugin and then delete its settings section:

dsh plugin --profile web remove dsh-llm-databricks

Remove DATABRICKS_TOKEN from the credentials service only when no other route uses it.

Development

corepack pnpm install --frozen-lockfile
pnpm run typecheck
pnpm run lint
pnpm test
pnpm run build

Tests use stub transports and an isolated HTTPS mock gateway on an ephemeral port. CI never contacts Databricks and requires no real credentials.

Release and pack

1. Update CHANGELOG.md and the package version. 2. Run all development checks above. 3. Run pnpm pack --pack-destination .artifacts. 4. Inspect the tarball with tar -tzf .artifacts/dsh-llm-databricks-<version>.tgz; it must contain only built lib, the bundle patch, package metadata, documentation, changelog, and license. 5. Install that tarball into an isolated DSH_HOME and inspect --dump-config before publishing.

Do not publish from an unreviewed workspace. This repository intentionally keeps private: false for a future public npm release, but publishing is a separate maintainer action.

License

MIT