Contact acquired

Someone already knows. whodar tells you who.

Point it at the tools your team already uses. Ask in plain words. Out of the noise of the whole org, it locates the people to talk to and the channels to ask in, each with the reason and the confidence behind it.

No setup required: whodar demo

Angela Malone 0.98billing · retries
Oscar Scott 0.62billing
Kevin Novak 0.31retries
$ who do I talk to about billing retries
Contact log3 located
01Angela MaloneStaff Engineer · Payments · billing (topic), retries (topic)strong
02Oscar ScottEngineering Manager · Payments · billing (topic)moderate
03Kevin NovakSoftware Engineer · Payments · retries (mention)weak
8 sources· 1 graph· 0 uploads by default· 4 surfaces· 3 ranking modes
// What it is

One binary you run yourself. Nothing hosted.

whodar is a single self-contained tool you install and run on your own machine or your own server. There is no whodar cloud and no account. It reads the tools your team already uses and keeps the index on your disk.

It is
  • One binary. The CLI, the local web app, the Slack bot, and the MCP server all live in a single download.
  • Self-hosted. It runs on your laptop or a server you control, with your own tokens.
  • Local by default. It reads the tools you use to build one index that stays on your machine.
It is not
  • A hosted or SaaS product. There is no account to create and no server of ours in the loop.
  • A Slack or marketplace app you click-install, or a browser extension.
  • A plugin that lives inside Confluence or Jira. whodar reads those tools to build a local index; it does not run inside them.
// Live

The radar is the idea. Here it is for real.

Ask a plain question, get ranked people and channels with reasons and a confidence, in the browser and in your terminal.

In the web app: type a question, get ranked people and channels, browse your whole org, share any answer by link.

whodar · web
People
Angela Malonestrong
Staff Engineer · Payments
billing (topic)retries (topic)
Oscar Scottmoderate
Engineering Manager · Payments
billing (topic)
Kevin Novakweak
Software Engineer · Payments
retries (mention)
Pam Vanceweak
Support Lead · Payments
billing (mention)
Channel
#paymentsstrong
billing and payment questions

Or from your terminal: the same ranked answer, as JSON you can pipe anywhere.

whodar · ask
$ whodar ask --pretty "who do I talk to about billing retries"
{
  "people": [
    { "name": "Angela Malone", "team": "Payments", "confidence": 0.98,
      "reasons": ["billing (topic)", "retries (topic)"] },
    { "name": "Oscar Scott", "team": "Payments", "confidence": 0.62,
      "reasons": ["billing (topic)"] },
    { "name": "Kevin Novak", "team": "Payments", "confidence": 0.31,
      "reasons": ["retries (mention)"] }
  ],
  "channels": [{ "name": "payments", "confidence": 0.95 }]
}
01 // Surfaces

It meets your team where they already are.

The CLI, the web app, the Slack command, and an MCP server for coding agents all share one index and one ranking engine. Add whodar wherever your team asks questions.

Command line

Ask from your terminal and pipe JSON into anything. whodar ask "who owns deploys"

Shipping

Web app

A local UI that browses your whole org: people, channels, teams, and topics, every answer shareable by link.

Shipping

Slack

Your team asks without leaving Slack. /whodar who knows kafka and the answer lands in the channel.

Shipping

Coding agents

An MCP server so Claude Code and Claude Desktop can ask whodar mid-task. claude mcp add whodar

Shipping
02 // Pipeline

Eight sources become one map of who knows what.

Each connector reads a tool you already use and feeds one graph of people, teams, topics, and channels. One human stays one entry: sources join by email, and an alias file joins handle-only logins.

INDEX

Point it at your tools

One connector per source, added one at a time. Recent activity counts for more; stale data fades.

RANK

Owners beat chatterboxes

Repetition saturates while an explicit topic, title, or ownership signal stays strong. Every answer carries a confidence, and typos still find the owner.

ASK

Get people and channels

Results explain which words hit where. Confirm or correct an answer and future rankings move, without burying the evidence.

Reads from
SlackGitHubJira ConfluencePagerDutygit CODEOWNERSorg CSV
03 // Egress control

Your org's knowledge never leaves your laptop.

Indexed work data is sensitive, so whodar controls what a model can see. The default is strict: answers are computed locally and nothing is sent anywhere.

  • Local by default. Keyword answers need no model and no network. Nothing is uploaded, ever.
  • Cloud models are opt-in. Claude, Gemini, and OpenAI run only when you turn them on, and only to their known hosts.
  • Org lock. An administrator can pin the policy in a file that user flags and environment variables cannot loosen.
Egress policy3 levels
strictDefault. Nothing leaves the machine. Only the keyword engine and a local model are allowed.
redactedOpt-in. A cloud model sees your question and anonymized numbered candidates, never names, emails, channels, or message text.
openFull detail. For teams that want the richest answer and accept sending candidate detail to their chosen model.
04 // Ranking

Works great with no model. Even better with one.

Keyword always works with nothing installed. Meaning and AI are layers you add, never a dependency.

Keyword

Exact word match with typo tolerance. Deterministic, instant, and always available.

Needs nothing

Meaning

Matches by meaning, so "failed payments" finds the person tagged "billing retries" with no shared word.

Local embeddings via Ollama

AI

A model re-ranks the candidates and writes a recommendation. Pick local Ollama, Claude, Gemini, or ChatGPT.

Local or cloud, your choice
05 // Get whodar

Install once. Add it wherever you ask questions.

One binary holds every surface. Pick one below for the exact steps.

whodar is a single binary. The CLI, the local web app, the Slack bot, and the MCP server all live inside it. There is no separate desktop app to install: you run it, and it serves the web UI in your browser.

# macOS with Homebrew
brew install dcadolph/whodar/whodar

# any platform with Go
go install github.com/dcadolph/whodar@latest

Full install guide →

Run the web app or the Slack bot from a container. The image is multi-arch and serves the web UI by default.

# pull the image
docker pull ghcr.io/dcadolph/whodar

# serve the web UI on http://127.0.0.1:8765
docker run -p 8765:8765 -e WHODAR_SERVE_TOKEN=secret \
  -v ~/.whodar:/home/nonroot/.whodar ghcr.io/dcadolph/whodar

The container binds 0.0.0.0, so it needs WHODAR_SERVE_TOKEN and every request must carry it. Mount your index at /home/nonroot/.whodar. Deploy guide →

Ask from your terminal. Answers are JSON on stdout, so you can pipe them into anything.

# try it with no setup
whodar demo

# index a repo you already have, then ask
whodar index --source git --repo-path .
whodar ask "who knows the billing code"

Every command and flag →

A local web app that browses your whole org and makes every answer shareable by link. It binds to localhost by default.

whodar serve
# open http://127.0.0.1:8765

Serving beyond localhost requires a token (WHODAR_SERVE_TOKEN) on every request. Deploy guide →

Your team asks with /whodar or by mentioning the bot, and the answer lands in the channel. Socket Mode needs no public URL.

# bot + app tokens from your Slack app
export WHODAR_SLACK_TOKEN=xoxb-...
export WHODAR_SLACK_APP_TOKEN=xapp-...
whodar bot --transport socket

Create the /whodar slash command and add the read scopes in your Slack app config. Full Slack setup →

Let Claude Code and Claude Desktop query whodar mid-conversation.

# Claude Code
claude mcp add whodar -- whodar mcp

# Claude Desktop: add under mcpServers in the config
{"whodar": {"command": "whodar", "args": ["mcp"]}}

Full MCP setup →

Stop guessing who to ask.

The answer is already inside the tools you use every day. whodar just points at the person.