Vibedate
FreeMaintainedDating by tokens — matched by usage league across agentic CLIs. Raw usage stays local; only your league is shared. CLI + local web app + MCP. Local-first.
About
Dating by tokens — matched by usage league across agentic CLIs. Raw usage stays local; only your league is shared. CLI + local web app + MCP. Local-first.
README
npm version npm downloads per month license
npm package · Install · Quick start · Privacy · Alternatives
Dating by tokens — connect your Claude Code / Codex usage, get sorted into a league (1M / 5M / 10M / 100M / 1B+), and match with people who burn tokens the way you do. The premise: heavy users of these tools share something worth matching on.
Part of the Vibe Suite — companion tools for agentic coding CLIs. Ships as CLI + npm package + MCP server, plus a local web app. Built on @pooriaarab/vibe-core.
Demo
▶ Watch the launch video — she matched with the man of her dreams. He was coding in a basement.
https://github.com/pooriaarab/vibedating/raw/main/branding/launch-video.mp4
Local-first. Raw token usage is read and stored on your own machine and never leaves it. Only the coarse league bucket is ever shared — never the raw number, never per-project breakdowns. Live matching is peer-to-peer over a DHT (no central server) and opt-in only; without it the pool is a local seeded demo.
Status
v0 — works locally, privacy-first. Usage is verified from your harness's
real local logs via vibe-core's readHarnessUsage (source real →
verified: true); when no logs are readable you can self-report
(VIBEDATING_TOKENS, unverified) or fall back to a demo value (unverified).
Handles are bound to a persistent ed25519 identity (~/.vibedating/identity.json,
mode 0600): every hello is signed, and a forged signature gets the peer dropped.
Install
npm install -g vibedate
…or run it ad-hoc:
npx vibedate connect
Quick start
# 1. Read your usage, compute + print your league (stored locally at ~/.vibedating)
vibedating connect
# 2. See candidates in your league (same or adjacent tier)
vibedating matches
# 3. (Opt-in) find live same-league peers over the DHT — no server
vibedating discover --live # shares ONLY handle+league+harness+verified flag+identity pubkey
# 4. Open the local web app in your browser (served from your machine)
vibedating open
Self-report a token count (otherwise a demo value is used):
VIBEDATING_TOKENS=23400000 vibedating connect # also accepts 12M / 1.2B / 500k
All commands
vibedating connect Read usage, compute + print your league
(first run auto-assigns a memetic handle — never @you)
vibedating matches [--live] List candidates in your league (live peers if any,
with last-message time)
vibedating discover [--live] Find live same-league peers over the DHT (opt-in)
vibedating live [--keep-alive] Live text chat (--keep-alive / non-TTY survives stdin EOF)
vibedating handle [@name] Print or set your handle
vibedating daemon [start|stop|status|install|uninstall]
Notify-only background daemon — alerts on NEW matches,
never opens chat/video; install = run on login (launchd/systemd)
vibedating open [--port N] Serve the local web app (default: random free port)
vibedating mcp Run the stdio MCP server (tools: profile, matches)
vibedating --version
vibedating --help
Live P2P discovery (opt-in)
vibedating discover --live joins the public hyperswarm
DHT on your league topic — sha256('vibedate:' + leagueBucket) — so same-league
peers find each other with no central server. On each encrypted connection
the two sides exchange a one-line hello with only
{ handle, league, harness, verified, pubkey, nonce, sig } — the proof fields
sign the hello with your persistent ed25519 identity so a handle can't be
impersonated; raw usage is never put on the wire. Discovered
peers are stored in ~/.vibedating/peers.json and shown by vibedating matches.
Live discovery is off by default. The --live flag is the explicit opt-in
(persisted as the share:live consent scope); every live run prints what it
shares before joining. Ctrl+C leaves the swarm cleanly.
Three faces, one local engine
The same local engine drives all three, so you can use it wherever you work:
- Web —
vibedating openserves the dating UI (profile, match stack, league ladder) athttp://localhost:PORT. The page reads your league + matches from a tiny local JSON endpoint. - CLI —
vibedating connect/matches. - MCP —
vibedating mcpexposesprofile(your league) andmatchesto any MCP host (Claude Code, Codex, Cursor, …).
As a library
import { league, matches, readUsage, CANDIDATES } from 'vibedate';
const usage = await readUsage('claude-code'); // { totalTokens, verified, ... }
const lg = league(usage.totalTokens); // { name: '10M', min: 10_000_000 }
const who = matches(lg.name, CANDIDATES); // same/adjacent-tier candidates
Privacy
- Raw usage stays local.
totalTokensis read into memory, stored at~/.vibedating/state.json, and shown in the web app only behind an opt-in toggle. It is never transmitted. - Only the league bucket is shared — with the local demo pool, and (only if
you opt in with
--live) as{ handle, league, harness, verified, pubkey, nonce, sig }with same-league peers over the hyperswarm DHT. The handshake parser whitelists those fields, so a peer can't even be sent anything else into your process; theverifiedflag and identity pubkey are the only additions, never a token count. - Consent for sharing the league is modeled with
@pooriaarab/vibe-core's consent ledger (scopeshare:league), granted onconnectand revocable on reset. Live P2P discovery has its own scope (share:live), default off.
Leagues & matching
Bucketed by lifetime tokens; you match within your league or an adjacent tier (so the tiny 1B+ pool still has people to match with):
| League | Tokens (lifetime) |
|---|---|
| 1M | 1M – 4.99M |
| 5M | 5M – 9.99M |
| 10M | 10M – 99.9M |
| 100M | 100M – 999M |
| 1B+ | 1B+ |
Prototype
An interactive, self-contained UX prototype (no build, no network):
docs/prototype.html. The shipped local web app
(vibedating open) is an adapted, data-driven version of this prototype.
Alternatives
- Mainstream dating apps (Hinge, Bumble, Tinder) match on photos and prompts; vibedating matches on a signal that is hard to fake: how much compute you actually burn.
- Speed-networking and community tools (Discord servers, hackathons) find other builders; this finds builders whose usage league sits near yours.
License
MIT
Install Vibedate in Claude Desktop, Claude Code & Cursor
unyly install vibedateInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add vibedate --env VIBEDATING_TOKENS="" -- npx -y vibedateStep-by-step: how to install Vibedate
FAQ
Is Vibedate MCP free?
Yes, Vibedate MCP is free — one-click install via Unyly at no cost.
Does Vibedate need an API key?
Yes, it requires environment variables: VIBEDATING_TOKENS. Unyly injects them into the config during install.
Is Vibedate hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Vibedate in Claude Desktop, Claude Code or Cursor?
Open Vibedate on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Changes
Versions and requested access over time.
- New version published
- New version published
- New version published
- New version published
- New version published
- New version published
- New version published
- New version published
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectServer Sequential Thinking
MCP server for sequential thinking and problem solving
by GitHub ActionsUnyly Deploy
Deploy sites and MCP servers to Unyly straight from your AI agent
by UnylyAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiPayMCP
Lightweight payments layer for MCP servers: turn tools into paid endpoints with a two-line decorator. [PyPI](https://pypi.org/project/paymcp/) · [npm](https://w
by blustAIServer For Power BI
Enables exploring Microsoft Fabric / Power BI workspaces and semantic models, and executing ad-hoc DAX queries.
by Mitsubishi-FusoGpt Image 2 Mcp
RunAPI GPT Image 2 MCP server for image generation: create tasks, poll results, and check pricing across 1 model from Claude Code, Codex, Cursor, and VS Code.
by runapi-aiCompare Vibedate with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
