Skip to content

Noelune/dsh-agent-relay

31Last commit Aug 16, 2026

dsh-agent-relay DSH plugin

dsh-agent-relay is a lightweight message relay bus that enables peer-to-peer communication between multiple AI agents running on the same host. It includes an HTTP Broker, a first-class Cordis plugin for DSH, JS/Python clients, and CLI tools, all designed with loopback-first security and HMAC-SHA256 cryptographic verification.

How to install the dsh-agent-relay DSH plugin

dsh plugin --profile web add dsh-agent-relay

Copying does not run this command. Review the repository and version before installing the dsh-agent-relay DSH plugin.

dsh-agent-relay DSH plugin data source

dsh-agent-relay DSH plugin snapshot date: Aug 16, 2026

discovered

What the dsh-agent-relay DSH plugin can do

  • HMAC-SHA256 signed request authentication with 300-second timestamp replay protection and rate limiting
  • Loopback-first architecture binding to 127.0.0.1:19121 by default, requiring no cloud deployment
  • Zero-dependency Broker with SQLite persistence (auto-fallback to JSONL on older Node.js) and 7-day TTL message retention
  • First-class DSH Cordis plugin exposing five model tools: agent_relay_send, agent_relay_status, agent_relay_history, agent_relay_peers, agent_relay_retry
  • Cursor-based incremental polling with lease confirmation, exponential backoff retry (2s/4s/8s), and UUID-based idempotency deduplication
  • Privacy-by-design: message bodies are never written to application logs or telemetry

Where the dsh-agent-relay DSH plugin fits

  • Enabling code review requests between agents (e.g., DSH asking Claude Code to review a snippet)
  • Cross-verification of facts among multiple agents running on the same machine
  • Collaborative task distribution where a coordinator agent delegates subtasks to specialized agents
  • Building a local fleet of agents that can share context and results without external network dependencies

Who the dsh-agent-relay DSH plugin is for

  • Developers running multiple AI agents (DSH, Codex, Claude Code, Hermes) on a single host
  • Users of DeepSeek Harness who want to enable inter-agent communication via the plugin system
  • Researchers and engineers building local multi-agent systems with a focus on security and privacy

dsh-agent-relay DSH plugin limitations

  • Requires Node.js 20+ for the Broker, CLI, and DSH plugin; Node.js 22.5+ recommended for native SQLite
  • Default loopback binding means agents must reside on the same machine; remote deployment requires explicit TLS configuration and is not recommended in the README
  • Messages are only retained for 7 days TTL; older messages are automatically deleted
  • The system is community-maintained and tested against dsh 0.1.0-rc.6; compatibility with newer versions is not guaranteed

dsh-agent-relay DSH plugin: from the repository README

Quoted from the Noelune/dsh-agent-relay README, the upstream source of the dsh-agent-relay DSH plugin. Copyright remains with the original authors.

### *Local Multi-Agent Collaboration Relay for DeepSeek Harness & Local Fleets* *DeepSeek Harness 本地多 Agent 轻量级通信中继总线 — 基于 HMAC-SHA256 鉴权与 Loopback 优先架构的安全消息路由组件* [![npm version](https://img.shields.io/npm/v/dsh-agent-relay?style=flat-square&color=38bdf8)](https://www.npmjs.com/package/dsh-agent-relay) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](LICENSE) [![Zero Dependency](https://img.shields.io/badge/dependencies-0-brightgreen.svg?style=flat-square)](#) [![Loopback First](https://img.shields.io/badge/network-loopback__first-cyan.svg?style=flat-square)](#) [![Security HMAC](https://img.shields.io/badge/security-HMAC--SHA256-purple.svg?style=flat-square)](#) [产品定位与设计动机](#-产品定位与设计动机) • [核心技术特性](#-核心技术特性) • [系统架构与流程](#-系统架构与工作流) • [Agent 全流程自动部署](#-agent-全流程自动部署流程) • [Wire Protocol 规范](#-wire-protocol-v10-规范) </div> --- ## 📌 产品定位与设计动机 现有的 Agent 框架多数专注于单体 Agent 内部的推理链条与工具调用(Task Execution),但缺乏标准化的 Agent 间对等通信机制(Peer-to-Peer Inter-Agent Communication)。当在同一宿主机上并行运行 `dsh`、`Codex`、`Claude Code` 与 `Hermes` 等多个独立 Agent 时,代理之间无法直接发起代码评审(Code Review)、事实交叉验证或协作任务分发。 **`dsh-agent-relay` 旨在填补这一架构空白**:它是一个完全解耦、轻量且自建的 Agent 通信总线(Communication Bus

Read the full READMERepository license: MIT

dsh-agent-relay DSH plugin questions

How do I install dsh-agent-relay?

Run `dsh plugin --profile web add dsh-agent-relay` in your terminal. This will install the plugin, and the next DSH session can automatically run the agent-driven deployment workflow described in `docs/AGENT-DEPLOY.md`. The deploy script generates HMAC keys, starts the Broker, and configures environment variables for your agents.

What is the default port and binding?

The Broker binds to `127.0.0.1:19121` by default (loopback only). This is a security measure to keep traffic local and avoid external network exposure. You can change the port and binding via configuration, but the README strongly advises against exposing the Broker on public networks without TLS.

How do agents authenticate with the Broker?

Each request (except GET /) must include three HTTP headers: `X-Relay-Agent` (agent name), `X-Relay-Timestamp` (Unix epoch seconds), and `X-Relay-Signature` (HMAC-SHA256 hex digest). The signature is computed over the method, path, timestamp, and body using a shared secret key. The Broker validates the signature, checks timestamp freshness (≤300 seconds), and enforces rate limits.

Can I use dsh-agent-relay with agents written in Python?

Yes, the repository includes a Python client adapter under `adapters/hermes/` that uses only the Python standard library. You can also use CLI tools (`adapters/cli/relay.mjs`) to send and receive messages from any language by spawning a subprocess. The Wire Protocol v1.0 is language-agnostic.

What happens if the Broker crashes or messages are lost?

Messages are persisted to SQLite (or JSONL fallback) with a 7-day TTL. The Broker uses a cursor-based incremental polling and lease confirmation mechanism to ensure reliable delivery. In case of failure, the client retries with exponential backoff (2s, 4s, 8s). Messages are idempotent via UUID, so duplicates are automatically discarded.