Nutcracker

The networking agent that finds who to coffee chat with — and never sees your rolodex

How to install Nutcracker

Every step written out, for people who have never opened a terminal. Pick the setup you have.

🥜 Nutcracker

The open-source networking agent — find who to coffee chat with, and never upload your rolodex.

A free, local-first alternative to Walnut AI (invite-only). No invite, no account, no cloud: your contacts live in your browser and nowhere else.

Nutcracker mapping the AI Startup Pitch Night room

What it does

Nutcracker turns the LinkedIn data you already own into a working networking agent:

  • Coffee Chat Radar — a ranked answer to "who should I grab coffee with this week?": dormant strong ties you've let go quiet, plus goal-relevant people you can reach through a warm intro. Every item comes with a drafted message.
  • Second-degree discovery via graph pooling — LinkedIn's export only contains your connections. Swap Connections.csv files with a few friends or teammates and Nutcracker unions the graphs locally: real "you can reach Alice via Bob" paths, no platform in the middle.
  • Event matching (Luma) — point it at a Luma event and it maps the room: hosts and featured guests cross-referenced against your network for warm paths, a ranked "who to meet" list, openers, and a game plan. It ships with a real event baked in — AI Startup Pitch Night (hosted by Walnut AI themselves), 384 guests, 28 investors — fully browsable offline.
  • Post-event mode — once the event ends, the same screen flips to "who did you meet?": log names, get follow-up drafts before the connection goes cold.
  • Profile diagnosis & weekly digest — feedback on your headline/about, and a digest of who to reconnect with.

Privacy is the architecture, not a promise

  • All data lives in your browser's IndexedDB. There is no server, no account, no telemetry, and no database anywhere.
  • The only optional network calls are (1) your own AI key to the provider you choose, and (2) public Luma event JSON through a tiny stateless proxy — never your contacts.
  • Export everything as JSON or erase everything, one click each, in Settings.

The AGPL-3.0 license keeps it that way: anyone who hosts a modified Nutcracker must publish their changes.

Get your LinkedIn data (~10 minutes, one time)

  1. LinkedIn → Settings & PrivacyData privacyGet a copy of your data
  2. Pick Connections, request the archive
  3. LinkedIn emails you a CSV (usually within ~10 minutes)
  4. Drop Connections.csv into Nutcracker's onboarding — parsing happens in your browser

Graph pooling: ask a friend to do the same and import their CSV under their name on the Network screen. That's a real second-degree graph, built from data each of you legitimately owns. (Nutcracker never scrapes LinkedIn — imports only.)

Bring your own AI (optional)

Every feature works without a key using deterministic heuristics. A key makes the drafts and game plans much better.

ProviderWhat to pasteNotes
AnthropicAPI key from console.anthropic.comCalled directly from your browser
Anthropic (Claude subscription)Token from claude setup-tokenUses your Claude Code subscription — no API billing
OpenAIAPI key from platform.openai.comCalled directly from your browser

Keys are stored locally in your browser and sent only to the provider you chose.

Run it

Hosted: open the web app — https://blueturboguy07.github.io/nutcracker/

Local:

git clone https://github.com/Blueturboguy07/nutcracker
cd nutcracker
npm install
npm run dev

npm run dev also proxies live Luma event fetches (the hosted static build falls back to the baked-in event snapshot and paste-import, which work fully offline). Deploying to Vercel enables the live Luma proxy in production via api/luma.ts.

Tech notes

  • Vite + React 18 + TypeScript, Tailwind v4, Dexie (IndexedDB), Zustand, PapaParse
  • 205 tests (npm test), typed end to end
  • One serverless function (api/luma.ts) that proxies only public event JSON, with the static-hosting fallback treated as a first-class path

License & disclaimers

AGPL-3.0. Not affiliated with, endorsed by, or connected to Walnut AI, LinkedIn, or Luma. Import only data you have the right to use, and be a normal human being about outreach — the drafts are starting points, not spam ammunition.