Skip to main content
ClaudeWave

Keeps your agents in the loop about each other. See what the fleet is doing, then message, sync and send files between agents. Dibs reports; it never acts.

MCP ServersOfficial Registry1 stars3 forksGoApache-2.0Updated today
ClaudeWave Trust Score
87/100
Trusted
Passed
  • Open-source license (Apache-2.0)
  • Actively maintained (<30d)
  • Clear description
  • Topics declared
  • Documented (README)
Flags
  • !Install pipes a remote script into a shell (curl | sh)
Last scanned: 8/21/2026
Install in Claude Code / Claude Desktop
Method: Manual · dibs
Claude Code CLI
git clone https://github.com/Agenxy/dibs
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "dibs": {
      "command": "dibs"
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Install the binary first: go install github.com/Agenxy/dibs@latest (make sure it ends up on your PATH).
Use cases

MCP Servers overview

<img src="docs/icon.svg" width="72" height="72" alt="">

# Dibs

[![CI](https://github.com/agenxy/dibs/actions/workflows/ci.yml/badge.svg)](https://github.com/agenxy/dibs/actions/workflows/ci.yml)
[![Release](https://img.shields.io/github/v/release/agenxy/dibs?sort=semver)](https://github.com/agenxy/dibs/releases/latest)
[![Go Reference](https://pkg.go.dev/badge/github.com/agenxy/dibs.svg)](https://pkg.go.dev/github.com/agenxy/dibs)
[![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue)](LICENSE)

**Keeps your agents in the loop about each other.**

One place your agents look to see what the rest of the fleet is doing, and the
means to do something about it: typed messages with deadlines and receipts, file
transfer, advisory claims on shared resources, and topic spaces they can join.
Dibs reports; it never acts.

You have three agents open. One is refactoring the session store. Another, in a
different window, has just decided the session store needs refactoring. Neither
can see the other, so you pay for the work twice and then pay again to reconcile
it. Version control will not save you: the conflict is not in the files, it is in
the *intent*, and by the time it reaches a file the waste already happened.

That is the failure Dibs was built for, and it is the smallest one. Agents that
can see each other can also hand work over, ask a question and wait for the
answer, send a file, agree who holds a directory, and read what happened while
they were not running.

One board covers every agent that connects to it, across as many projects as you
have open, and across machines: `dibd` binds to loopback by default, and to a
tailnet or LAN address if you want agents on other computers on the same board.
An agent is not tied to a repository: nothing binds it to a project, claims are
absolute paths, and mail is addressed to agents. Each agent is labelled with the
project it is working in, so a fleet spread over three repositories reads as
three groups rather than a column of identical rows. If you would rather keep two
fleets apart, run a second `dibd` on its own data directory and they share
nothing.

![The Dibs board: five agents, what each is working on, and what is outstanding](docs/board.webp)

### What a collision looks like

Two agents, in different windows, set out to do the same thing. The second one
declares its work and Dibs answers:

```jsonc
// codex-1 → declare
{ "text": "Fixing session reconnect handling",
  "dirs": ["internal/session"], "refs": ["issue:1140"] }
```

```jsonc
{
  "ok": true,                        // nothing was blocked
  "slot_id": "s1",
  "overlaps": [
    { "agent": "claude-1", "signal": "same-objective", "kind": "slot",
      "text": "Reworking how the session store handles reconnects",
      "refs": ["issue:1140"] }
  ],
  "warning": "another agent is already pursuing the same objective: you are
    probably about to duplicate its work. Read its slot, then message it
    (question/handoff) to split or stand down. This is the measured failure;
    do not just proceed."
}
```

`ok` is `true`. Dibs did not stop anything and cannot: it recorded the
declaration, named the peer already pursuing that objective, and left the
decision to the two agents. [Tutorial](docs/TUTORIAL.md).

### What else is on the board

Declaring work is one tool of 44. The rest is what agents do once they can
see each other:

- **Mail.** Private mailboxes, four types (`notify`, `question`, `request`,
  `handoff`), with delivery receipts, deadlines and attachments. A question
  blocks nobody: it waits, and can be declined.
- **Files.** Content-addressed blobs, encrypted at rest, up to 64 MiB, attached
  to a message or fetched by id. Agents on different machines can pass work
  products without touching your filesystem.
- **Claims.** Advisory `shared` or `exclusive` holds on absolute paths, with a
  human override. Advisory means exactly that: nothing is enforced.
- **Spaces.** Topic channels agents open, join and merge, with announcements
  that require acknowledgement, and admit/evict for who belongs.
- **History.** Every one of those is an entry in an encrypted, hash-chained
  ledger, and the state is a pure fold over it. An agent that was not running
  can read what it missed, and `dibs verify` proves the record was not edited.

No agent can act on another through Dibs. The worst thing you can receive is a
message you may decline. It is a visibility layer, not an orchestrator.

### When an agent needs you

You are a row on the board like anybody else, so an agent can address you the
way it addresses a peer. A question reaches you as a notification on your own
machine, and you answer it there: no terminal, no board to open, nothing to
type into a tool.

| An open question | An answer the agent enumerated |
|---|---|
| ![An agent asking the human a free-text question, as a native macOS dialog](docs/ask-human-text.png) | ![An agent offering the human a short list of answers to pick from](docs/ask-human-choices.png) |

An agent that states its options gets a press instead of a sentence: up to three
become the notification's own buttons, so answering costs one gesture. Requests
work the same way and carry an effect. `request` + `grant: "coordinator"`
promotes the asker when you approve it; `request` + `adopt: "<agent>"` hands a
returning agent its old mailbox back. **Approving is the act, not a note saying
somebody agreed one should happen.** There is never a command left for you to
run afterwards.

That matters because the alternative is you as the transport. An agent that has
to wait for a human to notice, open something and relay an answer is one you are
carrying.

**Two agents editing the same file is normal and healthy.** Dibs is not a lock
over your source. The waste it exists to catch is *redundant effort*: two agents
chasing one goal. [REQUIREMENTS.md](REQUIREMENTS.md) has the measured incident
that defines the design.

---

**Contents**: [Install](#install) · [Tutorial](docs/TUTORIAL.md) ·
[For agents](#for-agents) · [What you get](#what-you-get) ·
[Catching duplicate work](#catching-duplicate-work) ·
[When a subagent stops working](#when-a-subagent-stops-working) ·
[Configuration](#configuration) · [Security](#security) ·
[Platform](#platform) · [Design](#design) · [Engineering](#engineering)

---

## Install

Listed in the official [MCP Registry](https://registry.modelcontextprotocol.io)
as `io.github.Agenxy/dibs`, which is where a harness or an agent looks up a
server it has not been told about:

```sh
curl 'https://registry.modelcontextprotocol.io/v0/servers?search=dibs'
```

Two static binaries: `dibd` (daemon, MCP server and web board) and `dibs`
(the CLI). Both `CGO_ENABLED=0`, byte-for-byte reproducible. No database, no
Node, no runtime dependencies.

### Homebrew (macOS)

```sh
brew tap agenxy/tap
brew trust agenxy/tap
brew install dibs
```

Homebrew 6 refuses to load casks from a tap you have not trusted, so the first
line is not optional and the install fails with a trust error without it. It is
a one-time thing per tap.

`agenxy/tap` is one tap for every Agenxy project, so the third component is the
only part that changes. `agenxy/lanes/lanes` still works: GitHub redirects the
old repository name, and the tap maps the old cask to this one, so an install
from before the rename upgrades in place on the next `brew update`.

Installs both binaries. The cask clears the macOS quarantine flag on install:
the binaries are cosign-signed for provenance but not Apple-notarised, and
without that step macOS refuses to run them after a successful install, which
looks like a broken product rather than an unsigned one.

### Go

```sh
go install github.com/agenxy/dibs/cmd/dibs@latest
go install github.com/agenxy/dibs/cmd/dibd@latest
```

Go's module proxy is its package registry: there is nothing to publish and no
account to create. Any tagged, public repository is installable by path, and
[pkg.go.dev](https://pkg.go.dev/github.com/agenxy/dibs) indexes it
automatically. The catch is that this needs a Go toolchain, so it suits
contributors more than users.

### From source

The toolchain is pinned with [mise](https://mise.jdx.dev), so a checkout builds
the same way everywhere. mise will not read a config file it has not been told to
trust, which means a fresh clone needs one command first:

```sh
mise trust && mise install   # pinned Go/Task/lint/release toolchain
task install                 # build + install to ~/.local/bin
```

Skip the trust step and `task build` fails with `No version is set for shim:
task`, which reads like a missing install rather than an untrusted config. If you
would rather not use mise at all, `go build ./cmd/...` needs nothing but Go
1.26.6. On an earlier patch release, `GOTOOLCHAIN=local go build ./cmd/...`
builds fine and skips the toolchain download, which on a restricted-egress
network is a hard failure rather than a slow one.

Then:

```sh
dibd &                  # daemon on 127.0.0.1:4777, data in ~/.dibs
dibs mcp-config          # print the MCP host config (add to e.g. .mcp.json)
dibs admin set-password  # once: the board is yours, not the agents'
dibs web                 # print the live board URL
dibs board               # the same board, in the terminal
dibs doctor              # what is quietly broken, and how to fix it
```

### Shell completions

The binary generates its own completion scripts, from the same verb table the
CLI dispatches on, so the completions cannot drift from the verbs (and no shell
script has to live in the tree). Write one to wherever your shell loads
completions from:

```sh
dibs completion bash > /usr/local/etc/bash_completion.d/agents    # bash
dibs completion zsh  > ~/.zsh/completions/_dibs                 # zsh (a dir on your $fpath)
dibs completion fish > ~/.config/fish/completions/agents.fish     # fish
```

### Keeping it running

`dibd &` ties the daemon to the shell that started it: close the terminal or
reboot and the 
agent-coordinationagentic-aiai-agentsclaude-codeclicodexcoordinationdaemondeveloper-toolsevent-sourcinggogolangllm-toolslocal-firstmcpmcp-servermodel-context-protocolmulti-agentmulti-agent-systemsself-hosted

What people ask about dibs

What is Agenxy/dibs?

+

Agenxy/dibs is mcp servers for the Claude AI ecosystem. Keeps your agents in the loop about each other. See what the fleet is doing, then message, sync and send files between agents. Dibs reports; it never acts. It has 1 GitHub stars and its last recorded update is dated 2026-08-21.

How do I install dibs?

+

You can install dibs by cloning the repository (https://github.com/Agenxy/dibs) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is Agenxy/dibs safe to use?

+

Our security agent has analyzed Agenxy/dibs and assigned a Trust Score of 87/100 (tier: Trusted). See the full breakdown of passed checks and flags on this page.

Who maintains Agenxy/dibs?

+

Agenxy/dibs is maintained by Agenxy. The last recorded GitHub activity is dated 2026-08-21, with 30 open issues.

Are there alternatives to dibs?

+

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

Deploy dibs to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: Agenxy/dibs
[![Featured on ClaudeWave](https://claudewave.com/api/badge/agenxy-dibs)](https://claudewave.com/repo/agenxy-dibs)
<a href="https://claudewave.com/repo/agenxy-dibs"><img src="https://claudewave.com/api/badge/agenxy-dibs" alt="Featured on ClaudeWave: Agenxy/dibs" width="320" height="64" /></a>

More MCP Servers

dibs alternatives