About Dibs (Hive Commons)
Dibs is an idea marketplace connecting people with ideas to open-source repositories managed by agent swarms. After both sides accept a match, the ideator receives a prefilled GitHub issue link to file under their own account and receive credit.
Key features
- 01Submit public or private ideas
- 02Match ideas with repositories
- 03Generate prefilled GitHub issues
- 04Publish credit for shipped ideas
- 05Extract ideas from documents or audio
Use cases
- 01Propose a feature for an open-source project
- 02Match an idea to a repository seeking contributions
- 03Submit and track an idea through an agent
MCP support
Dibs provides a Streamable HTTP MCP server for submitting ideas, listing a user's ideas and repositories, and viewing idea details. Authentication is required to submit ideas.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://dibs.hivecommons.dev/mcpclaude mcp add --transport http dev-hivecommons-dibs https://dibs.hivecommons.dev/mcp{"mcpServers":{"dev-hivecommons-dibs":{"type":"http","url":"https://dibs.hivecommons.dev/mcp"}}}Open in Cursor{"servers":{"dev-hivecommons-dibs":{"type":"http","url":"https://dibs.hivecommons.dev/mcp"}}}Open in VS Code{"mcpServers":{"dev-hivecommons-dibs":{"type":"http","url":"https://dibs.hivecommons.dev/mcp"}}}{"mcpServers":{"dev-hivecommons-dibs":{"serverUrl":"https://dibs.hivecommons.dev/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
https://dibs.hivecommons.dev/mcpAuth requiredTools
Details
From the project README
Dibs
Marketplace of ideas for connecting ideators with hive-managed repositories.
Your idea, your credit, their code.
The missing contributor layer for the AI-agent era.
Dibs is a two-sided marketplace that connects ideators — people who call dibs on ideas: great insight, but no time, tooling, or inclination to write code — with hive-managed repositories whose AI agent swarms are hungry for well-formed work.
- Ideators post ideas — public or private — in plain language / markdown.
- Repos opt in to receive ideas, declaring topics and appetite.
- An LLM matches ideas to repos that want them; both sides must say yes.
- On mutual acceptance, Dibs hands the ideator a prefilled GitHub
issue — they file it themselves, under their own GitHub account, so the
issue is natively attributed to them (label
ideated). The hive's AI agents implement it. Dibs is just the matchmaker: it never files the issue for you.
Ideators are first-class contributors
Open source has always had a quiet contributor class with no outlet: researchers, operators, designers, power users — people who know exactly what a project needs but will never open a pull request. Open source has also always known ideas are contributions — the all-contributors spec has a 💡 "ideas" emoji, and the academic CRediT taxonomy credits "Conceptualization" as a first-class role. Dibs makes that credit real, machine-readable, and public.
Creators get credit. Agents do the work. Projects take the bow.
Every implemented idea traces back to its ideator: the GitHub issue credits
the idea's author, the resulting work carries that provenance, and the public
credit wall (/api/credits, "Credit wall" in the UI) lists every ideator
whose idea shipped. An idea is a contribution.
Architecture
Single Go binary (cmd/dibs) serving both the JSON API and an embedded
static UI, deployed at its own subdomain: dibs.hivecommons.dev. The base
path is configurable (DIBS_BASE_PATH), so path-prefixed reverse-proxy
deployments also work.
| Package | Purpose |
|---|---|
pkg/server | HTTP server, base-path routing, embedded UI |
pkg/auth | Auth bridge — validates the hive hub session cookie against the hub |
pkg/store | Idea model + JSON file store (atomic writes, no external DB), offer/settlement state machine |
pkg/fsutil | Shared atomic JSON persistence helper (temp file + rename, mode 0600) used by the file stores |
pkg/api | Idea CRUD + matching/offer/feed/decide/notification API (author-scoped, private ideas never leak) |
pkg/registry | Hive-managed repo profiles + "accepting ideas" opt-in |
pkg/match | LLM idea↔repo scoring via litellm gateway, cached TLDRs, "✨ Embellish" draft refinement, deterministic keyword fallback |
pkg/settle | Settlement — prefilled GitHub new-issue URL the ideator files themselves (ideated label, 🐝 Dibs footer, URL-length budget) + issue-URL confirmation; legacy token mode. Ideas can target ANY GitHub repo: non-hive targets skip acceptance and their issues carry a "request a hive" growth CTA |
pkg/notify | In-app notification feed (bell): matches, offers, decisions, issues |
pkg/mcpserver | Streamable HTTP MCP endpoint exposing Dibs tools (see Submit ideas from your agent) |
pkg/intake | Extracts idea text from uploaded documents or transcribed audio |
pkg/game | Gamification layer — points, levels, badges — recomputed from stored idea state, never a mutable counter |
pkg/catalog | Builds and searches a separate CNCF project catalog |
pkg/history | Backfills public GitHub activity for hive-managed repos; persists daily counts for repo index charts |
pkg/indexformula | Weighted composite behind the repo market index |
pkg/news | Turns recent merged PRs into repo news cards |
pkg/deps | Single place declaring the subsystem dependencies the HTTP server, JSON API, and MCP endpoint are wired with |
Configuration
| Env var | Default | Meaning |
|---|---|---|
DIBS_BASE_PATH | / | Base path every route/asset is served under (set e.g. /ideas for path-prefixed proxying) |
DIBS_ADDR | :8080 | Listen address |
DIBS_METRICS_ADDR | (unset) | Internal Prometheus /metrics listener (e.g. :9090); unset keeps it off. See deploy/ |
HUB_URL | https://hive.hivecommons.dev | Hive hub for session validation & repo sync |
DATA_DIR | /data | JSON store directory |
REPOS_SEED_FILE | (unset) | Static JSON seed of repo profiles for dev/demo |
DIBS_LLM_BASE_URL | (unset) | OpenAI-compatible gateway (hive litellm), e.g. http://litellm:4000/v1. Unset → deterministic keyword matcher |
DIBS_LLM_API_KEY | (unset) | Bearer token for the LLM gateway |
DIBS_LLM_MODEL | gpt-4o-mini | Model name routed by the gateway |
DIBS_GITHUB_TOKEN | (unset) | Legacy mode only for issue creation: when set, Dibs opens the credited issue server-side on accept. Unset (default), the ideator files a prefilled GitHub issue themselves — native attribution. Also used, when present, to authenticate the GitHub lookup that verifies a confirmed issue URL (anonymous otherwise) |
DIBS_ADMINS | (unset) | Comma-separated, case-insensitive GitHub logins granted admin access (idea-moderation endpoints) |
DIBS_CLANKER_MARKERS | hive: agent=,kubestellar-hive[bot] | Comma-separated, case-insensitive markers matched against PR branch/labels/body/author to classify agent activity |
DIBS_INTAKE_MAX_MB | 25 | Max upload size (MB) accepted for idea-intake file uploads |
DIBS_STT_URL | (unset) | Speech-to-text gateway URL; when set, enables voice/audio idea submission |
DIBS_STT_KEY | (unset) | API key for the STT gateway |
DIBS_STT_MODEL | (unset) | Model name routed by the STT gateway |
Legacy IDEATE_* names (the pre-rename prefix) are still honored as
fallbacks for every DIBS_* variable.
Roadmap
See ROADMAP.md for what is planned next. Delivery history:
- Wave 1 (done): scaffold, hub auth bridge, idea CRUD, repo registry.
- Wave 2 (done): LLM matching + TLDRs, swipe UX ("offer" / "pass"), issue settlement (credited GitHub issues), notifications.
- Wave 3 (done): deployment (GHCR image +
deploy/manifests for dibs.hivecommons.dev), public landing page, public credit wall, ideator profile stats. - Wave 4 (done): matchmaker settlement — the ideator files a prefilled GitHub issue themselves (native attribution,
ideatedlabel) and confirms the issue URL; LLM-assisted idea refinement on posting and repo-tailored expansion on submission; token-based settlement demoted to legacy. - Later: cookie-domain/hub-OAuth session sharing, non-hive receptor repos, idea economics.
Deployment
Every push to main publishes ghcr.io/hivecommons/dibs (latest +
commit sha) via .github/workflows/docker.yml; the image is distroless and
runs as non-root. Plain Kubernetes manifests for dibs.hivecommons.dev
(Deployment, Service, cert-manager TLS Ingress, PVC, ConfigMap/Secret) live
in deploy/, including the required DNS record and
hub-cookie prerequisites.
Public surface (no sign-in required)
| Route | Purpose |
|---|---|
GET / | Landing page (pitch + sign-in) — signed-in users get the full app |
GET /api/credits | Credit wall data: settled ideas only (handle, title, TLDR, repo, issue URL) |
GET /api/leaderboard | Aggregate ideator scores/levels/badges |
GET /api/ticker | Public idea ticker tape for the logged-out landing page |
GET /api/board | Live-markets board shown on the logged-out landing page |
GET /api/stats | Aggregate, non-identifying counts |
GET /api/repos/{org}/{repo}/index | Repo value-index chart series |
GET /api/repos/{org}/{repo}/news | Repo news feed |
GET /api/repos/{org}/{repo}/qr.png | Repo QR code |
GET /healthz | Liveness check + embedded git version |
GET /readyz | Readiness check — verifies the data store is accessible/writable |
Everything else requires a hive hub session; signed-in ideators additionally
get GET /api/me/stats (ideas posted / offered / accepted / settled).
For response schemas, eligibility/privacy rules, settlement actions, rewards, and stability levels, see the credit-wall consumer API.
Submit ideas from your agent
Dibs exposes a stateless Streamable HTTP MCP endpoint at
https://dibs.hivecommons.dev/mcp, so Claude Code, Copilot CLI, Cursor,
Gemini CLI, Codex, and other MCP clients can submit ideas without leaving the agent.
Dibs is listed in the official MCP Registry as dev.hivecommons/dibs
(registry entry).
Search for that full name: a plain dibs search also returns the unrelated
1stDibs marketplace. How the listing is published is covered in
MCP Registry publishing.
Available tools:
| Tool | Auth | Purpose |
|---|---|---|
submit_idea(title, description, tags?) | Required | Creates a private draft idea owned by you and returns its id and API URL |
list_my_ideas() | Required | Lists your ideas with lifecycle phase/status |
get_idea(id) | Optional for public ideas; required for private ideas (author, or owner of a repo holding a pending or accepted offer) | Shows detail, matches, offers, and settlement state |
list_repos() | Not required | Lists registered repo venues |
Token
Use Authorization: Bearer <token>. Dibs first asks the Hive Hub
/api/saas/whoami endpoint to verify the bearer token server-to-server; the
hub already accepts GitHub bearer tokens for registered hub users. If that is
not practical, copy the raw hive_hub_user cookie value from your browser
after signing in at https://hive.hivecommons.dev; Dibs falls back to verifying
that value through the same hub whoami cookie flow used by the web UI.
In Chrome/Edge: open DevTools → Application → Cookies →
https://hive.hivecommons.dev (or https://dibs.hivecommons.dev) → copy the
hive_hub_user value.
Claude Code
claude mcp add --transport http dibs https://dibs.hivecommons.dev/mcp \
--header "Authorization: Bearer <your-token-or-hive_hub_user-cookie-value>"
Claude Desktop and ChatGPT connectors
Both accept a remote MCP server over Streamable HTTP, so the same endpoint works without a local process.
Claude Desktop: Settings -> Connectors -> Add custom connector, with the URL
https://dibs.hivecommons.dev/mcp. Where the connector UI allows a custom
header, set Authorization: Bearer <token>; the read-only tools work without
one, and submit_idea needs it.
ChatGPT: Settings -> Connectors -> Add custom connector (available on plans where custom MCP connectors are enabled), using the same URL and header.
GitHub Copilot CLI and VS Code
Copilot CLI has a one-line command to add a remote MCP server:
copilot mcp add --transport http \
--header "Authorization: Bearer <your-token-or-hive_hub_user-cookie-value>" \
dibs https://dibs.hivecommons.dev/mcp
This writes to ~/.copilot/mcp-config.json using the same mcpServers / type: "http" shape as the Generic MCP JSON block below.
VS Code reads ~/.copilot/mcp-config.json (shared with Copilot CLI) and workspace .mcp.json files. Both use the same mcpServers format. For more details, see the Copilot CLI documentation and VS Code MCP server documentation.
Cursor
Cursor reads MCP configuration from ~/.cursor/mcp.json (global) or .cursor/mcp.json (project-level). Use the mcpServers format with url and headers:
{
"mcpServers": {
"dibs": {
"url": "https://dibs.hivecommons.dev/mcp",
"headers": {
"Authorization": "Bearer ${env:DIBS_TOKEN}"
}
}
}
}
Cursor supports ${env:NAME} interpolation in headers, so you can set DIBS_TOKEN as an environment variable rather than storing it in the file. For details, see the Cursor MCP documentation.
Gemini CLI
gemini mcp add --scope user --transport http \
--header "Authorization: Bearer <your-token-or-hive_hub_user-cookie-value>" \
dibs https://dibs.hivecommons.dev/mcp
This adds the server to ~/.gemini/settings.json; drop --scope user to add
it to the project's .gemini/settings.json instead. For details, see the
Gemini CLI MCP documentation.
Codex
Codex (CLI and IDE extension) reads MCP servers from ~/.codex/config.toml.
bearer_token_env_var keeps the token out of the file and sends it as
Authorization: Bearer <token>:
[mcp_servers.dibs]
url = "https://dibs.hivecommons.dev/mcp"
bearer_token_env_var = "DIBS_TOKEN"
Then export DIBS_TOKEN=<your-token-or-hive_hub_user-cookie-value> before
starting Codex. For details, see the Codex MCP documentation.
Generic MCP JSON
{
"mcpServers": {
"dibs": {
"type": "http",
"url": "https://dibs.hivecommons.dev/mcp",
"headers": {
"Authorization": "Bearer <your-token-or-hive_hub_user-cookie-value>"
}
}
}
}
Recall ideas you never acted on
Dibs ships an MCP prompt, recall_ideas, for the ideas that never made it to
a form: the ones mentioned in passing and forgotten. Dibs cannot find those
itself - only the assistant holding your history can - so the prompt asks it
to.
It instructs the assistant to search its memory and your past conversations for product ideas, feature wishes, requirements and specs you described but never acted on, report each with enough context to act on, and then ask which ones to list. It submits only what you pick.
| Argument | Purpose |
|---|---|
scope | Optional focus - a project, a repo, a period like "the last year". Omit to search everything available. |
limit | Maximum candidates to report. Defaults to 10, capped at 50. |
In Claude Code and Claude Desktop the prompt appears as a slash command once
the connector is added. Clients that do not surface prompts in their UI can
still call prompts/get directly.
Operations and further reading
- MCP Registry publishing: listing manifest and operator steps for DNS authentication, publication, and verification.
- Runbooks: incident response, release rollback, data recovery, SLOs, and a postmortem template.
- CONTRIBUTING.md: DCO sign-off, CI requirements, and code conventions.
- Idea intake trust and abuse controls: a proposed design, not yet implemented.
Development
go test -race -count=1 ./...
go run ./cmd/dibs # serves on :8080 at /
go build -o dibs ./cmd/dibs # builds the binary (plain `go build ./...` writes none)
./dibs --version # prints the embedded commit
Running locally with sign-in
Every route except the public surface
needs a hive hub session. For local work, hack/fakehub
is a dev-only stand-in for the hub: it accepts any non-empty hive_hub_user
cookie as that user and serves a small static repo list. Run it in one
terminal, then point Dibs at it in another:
go run ./hack/fakehub # listens on :9999 (override with FAKEHUB_ADDR)
HUB_URL=http://127.0.0.1:9999 DATA_DIR=./data go run ./cmd/dibs
curl -H 'Cookie: hive_hub_user=dev' http://127.0.0.1:8080/api/me
To load richer repo profiles than fakehub's two entries, also set
REPOS_SEED_FILE=hack/seed-repos.example.json.
Smoke-testing the container image
docker build only proves the image compiles. hack/smoke.sh
runs it the way deploy/deployment.yaml does
(uid 65532, read-only root filesystem, only /data writable, all
capabilities dropped) and checks --version is stamped, /healthz and
/readyz answer 200, the landing page serves with HUB_URL substituted
and the security headers set, the auth wall answers 401/502 around the
public API, /metrics exposes the dibs_* series the alerts query
(labelled by the route groups just exercised), and SIGTERM drains to
exit 0:
docker build --build-arg GIT_HASH="$(git rev-parse HEAD)" -t dibs:smoke .
hack/smoke.sh dibs:smoke "$(git rev-parse HEAD)"
Contributing & Community
Dibs is part of Hive Commons, a family of tools for working with AI agents.
- Want to contribute? See CONTRIBUTING.md for DCO sign-off, the CI and coverage gates, and code conventions.
- Found a bug? Open a bug report. Have an idea for Dibs itself? Open a feature request.
- Reporting a security vulnerability? Follow SECURITY.md to report it privately, not through public issues.
- Questions? Join the Hive Commons Discord.
- Please follow the Hive Commons Code of Conduct.
License
Apache-2.0 — see LICENSE.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.