Skip to content
hivecommonsPublic

About

Dibs — your idea, your credit, their code. The missing contributor layer for the AI-agent era.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Dibs

Dibs

License

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.

  1. Ideators post ideas — public or private — in plain language / markdown.
  2. Repos opt in to receive ideas, declaring topics and appetite.
  3. An LLM matches ideas to repos that want them; both sides must say yes.
  4. 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
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) ****** 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, ideated label) 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, and other MCP clients can submit ideas without leaving the agent.

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 your private ideas 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.

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.

Generic MCP JSON

{
  "mcpServers": {
    "dibs": {
      "type": "http",
      "url": "https://dibs.hivecommons.dev/mcp",
      "headers": {
        "Authorization": "Bearer <your-token-or-hive_hub_user-cookie-value>"
      }
    }
  }
}

Operations and further reading

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.

License

Apache-2.0 — see LICENSE.

Handshake icon: Twemoji, CC-BY 4.0.

About

Dibs — your idea, your credit, their code. The missing contributor layer for the AI-agent era.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages