Introduction

DSH’s philosophy is “everything is a plugin”. For dsh plugin authors, dsh already has session-level OTel telemetry, but plugin-level traces, logs, and metrics often require handling OpenTelemetry providers, exporters, and configuration themselves. The goal of dsh-o11y-plugin is to converge this capability to the plugin layer: registering global OpenTelemetry providers, allowing standard @opentelemetry/api plugins to export traces, metrics, and logs, and bridging dsh session telemetry to OTel logs.

What is it

dsh-o11y-plugin is a dsh plugin that provides unified plugin-level observability for deepseek-harness (dsh). The repository owner is fly3366 and the license is MIT. It is suitable for plugin authors who want to use the standard @opentelemetry/api to output telemetry instead of each plugin implementing OTel exporters individually.

Core Features

  • Provides unified trace, log, and metric observability for dsh plugins.
  • Registers global OpenTelemetry providers, enabling standard @opentelemetry/api plugins to export traces, metrics, and logs.
  • Bridges dsh session telemetry to OTel logs.
  • Exports telemetry via OTLP/HTTP endpoints; silently drops telemetry if not configured or the endpoint is unreachable.
  • Supports headless and web profiles.
  • The plugin is stateless; no data cleanup is required upon removal.
  • Does not write files, nor read or store credentials; telemetry remains in memory until exported.
  • Configuration can be viewed and edited in the dsh Web settings UI under the o11y namespace; has no effect on dsh versions that lack the settings service.

Compatible Environments

  • DSH Compatibility: @deepseek-ai/dsh 0.1.0-rc.6rc.8.
  • Runtime dependency: @deepseek-ai/cordis 4.0.1.
  • Node: ^22.19 || >=24.
  • Profiles: headless, web.

Installation and Usage

Install to web profile from npm:

dsh plugin --profile web add dsh-o11y-plugin

Install to web profile from git repository:

dsh plugin --profile web add github:fly3366/dsh-o11y-plugin

Install on headless profile:

dsh plugin --profile headless add github:fly3366/dsh-o11y-plugin

Remove from web profile:

dsh plugin --profile web remove dsh-o11y-plugin

The plugin is stateless; no additional data cleanup is required upon removal.

Typical Usage

After installation, point the OTLP endpoint to a collector and run dsh:

OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 dsh --profile headless "say hi"

If a plugin calls trace.getTracer(...), metrics.getMeter(...), or logs.getLogger(...) from @opentelemetry/api, these signals will be exported through the global OpenTelemetry pipeline registered by the plugin. If the endpoint is not configured or the collector is unreachable, telemetry will be silently dropped.

Use Cases and Notes

Suitable for scenarios where standard @opentelemetry/api is used in dsh plugins and a unified OTLP/HTTP export path is desired under both headless and web profiles.

Usage Notes:

  • The plugin runs with the privileges of the current dsh process; source code and license should be reviewed before installation.
  • Network access is directed only at the configured OTLP/HTTP endpoint; telemetry is silently dropped if no collector is reachable.
  • The plugin does not write files, nor read or store credentials; telemetry remains in memory until exported.
  • The o11y namespace in the dsh Web settings UI has no effect on dsh versions that lack the settings service. The Web settings card is being developed in the wip/settings-ui branch and has not been released with main; dsh has not yet allowed external bundle injection into the web client composition.

Conclusion

dsh-o11y-plugin provides a unified dsh plugin observability path: global OpenTelemetry providers, OTLP/HTTP export, bridging dsh session telemetry to OTel logs, and stateless removal.

GitHub: https://github.com/fly3366/dsh-o11y-plugin