Skip to content
dsh.fish
Bundle

dsh-ask-peer

Decentralized peer-to-peer 'ask a colleague's agent' plugin for DeepSeek Harness

Source
zzhzz
stars
3 stars
License
MIT
Updated
Updated 6 days ago

Readme

# dsh-ask-peer

A **decentralized** "ask a colleague's agent" plugin for
[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (dsh).

The core design is peer-to-peer: **no broker, no shared database, no company
server**. Every agent runs its own endpoint and keeps its own copy of its
relationships, so the network has no single point of control — asking happens
directly between two agents over the LAN. One agent asks another, and gets a
committed answer grounded in the colleague's own workspace and session
context. The result is a community of agents that discover each other, vouch
for each other, and share expertise — with every relationship owned by the
two agents in it.

## A conversation between agents

Bob is standing up a docker-compose dev environment and wishes a colleague
had already figured this out. He types to his own agent:

> Carol, recommend another agent who can help me stand up a docker-compose
> dev environment.

Carol's agent considers the agents she knows — none of them advertise docker
expertise. So she asks around, the way you'd ask around the office: she
forwards the request to her friend Erin, who checks her own circle and finds
Ada — live in a docker-compose session right now, advertising `docker` and
`env-setup`. Ada's **signed friend card** travels back along the chain, and
lands in Bob's chat as a small bubble: *ada recommended via carol → erin*,
with **Add friend**. One click, and Bob's agent can ask Ada's agent directly
— getting an answer grounded in Ada's real workspace and session context.

Three agents, one question, a referral that travelled two hops, and a new
working relationship — all peer to peer. The search stays **bounded** by
design: a hop limit and a small per-hop fan-out keep a "who knows X?" from
growing into an asking storm, the chain travels with the request so it can
never loop, and every card is signed — you always know who vouched, and you
verify the agent before you trust it.

## Features

- **Truly decentralized** — no hub, broker, or shared database; agents talk
  directly over the LAN and each side keeps its own copy of the
  relationships.
- `ask_peer` / `ask_peers` tools — ask one colleague, or 2–3 in parallel and
  cross-validate the answers.
- `recommend_peer` — discover new friends: a colleague recommends another
  agent's signed card, shown to you as a notification/chat bubble with
  Add/Decline; accepting merges them into your friend list. When the colleague
  knows nobody matching, she asks her own friends onward — bounded by a hop
  limit (default 1) and a small fan-out so discovery never becomes an asking
  storm, with the referral path shown right in the bubble (*via carol → erin*).
- Live roster with tags — `peers_list` shows who knows what, so the model
  picks the right peer deliberately.
- Session-level answers — a fresh, read-only agent answers from a copy of the
  targeted session's context; your live sessions are never touched.
- Approval bubbles in the Web UI — answer or decline, or trust a friend with
  `auto` mode.
- Backlogged asks (`ask_peer_async` / `ask_result`) — no interruption of the
  answerer's current work.
- Signed friend cards — paste one signed blob to add a friend; no manual
  host/port/key copying.
- Natural invocation — the agent calls `ask_peer` / `recommend_peer` on its
  own when your request matches a friend's advertised expertise; you don't
  have to name the tool.

## Usage

Install the plugin into a profile and add the bootstrap row:

```sh
dsh plugin --profile web add dsh-ask-peer
# or from a checkout: add ./dsh-ask-peer — or a tarball: add ./dsh-ask-peer-0.1.0.tgz
```

```yaml
- id: ask-peer
  config:
    callerName: 'ada'
    keyDir: '/home/ada/.dsh-ask-peer/keys'
    listen: true
```

Start the profile (`dsh --profile web`), open **Settings → Ask Peer**, copy
your sign or friend card and share it with a colleague, then paste theirs to
add a friend. Each friend has a policy: `ask` (you approve in the UI),
`auto` (trusted friends run immediately), or `deny`.

Then just talk to your agent — it asks peers, cross-validates, and discovers
new friends on its own:

> Carol, recommend another agent who can help me stand up a docker-compose
> dev environment.

Model tools: `ask_peer`, `ask_peers`, `peers_list`, `recommend_peer`,
`ask_peer_async` / `ask_result`. The full configuration reference and
protocol live in `src/config.ts` and [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md).

Install

dsh plugin --profile web add github:zzhzz/dsh-ask-peer#814d07cf35886393561a214946ff424b9485573e

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
Source