@davedinapoli/vibe
v0.1.0
Published
Connect Claude Code to your phone: it asks you decisions (A/B/C or free text), you answer from anywhere, the answer flows back into the live session.
Maintainers
Readme
Vibe — answer Claude Code from your phone
Claude Code is working in your terminal. It hits a decision it shouldn't guess — "Rewrite the auth flow, or patch it?" Instead of stalling (or guessing wrong), it asks you: a push lands on your phone with the question and the options. You tap A / B / C or type a reply, and the answer types itself straight back into the live session. No clone, no copy-paste, no babysitting the terminal.
Claude Code ──(vibe_ask)──▶ Vibe backend ──push──▶ 📱 your phone
▲ │
└──────── answer typed into the live session ◀────────┘This package is the machine side: a tiny MCP server + Claude Code hooks that let your sessions reach you. You answer in the Vibe iOS app (or the macOS desk panel).
What you need
- macOS + VS Code (the answer is typed back via the Vibe Inject extension — install it once).
- Node 18+ (
node --version). - The Vibe app (iOS / macOS) to answer on, and a token it gives you.
Setup (one command)
In the Vibe app, open Settings → Connect your Mac. It mints a personal token (
vibe_sk_…) and copies it to your clipboard.In your terminal:
npx @davedinapoli/vibe initPaste the token when asked (or pass it inline:
npx @davedinapoli/vibe init vibe_sk_…).
init will:
- verify the token against the hosted backend,
- write
~/.vibe/config.json(chmod600— only your token lives there), - copy the runtime to
~/.vibe/app(stable; survives npm cache cleanup), - register the Claude Code hooks in
~/.claude/settings.json, - register the
vibeMCP server (vibe_ask,vibe_ask_text), - wire a one-line shell helper so each session gets a stable id.
- Install the Vibe Inject VS Code extension.
- Open a new terminal and start a fresh
claudesession.
Then ask Claude to do something it should check with you first — the question reaches your phone, and your answer flows back.
Check your install any time:
npx @davedinapoli/vibe doctorWhat Claude gets
| Tool | What it does |
|------|--------------|
| vibe_ask | Ask you a decision with 2–3 options (A/B/C). Non-blocking. |
| vibe_ask_text | Ask you an open question; you reply with free text. |
| vibe_show (optional) | Screenshot a local URL (e.g. localhost:3000) and send it with the question. Needs puppeteer-core + Google Chrome: npm i -g puppeteer-core. |
Privacy & security
- The only secret stored on your machine is your own token (
~/.vibe/config.json,chmod 600). There is no service key and no push certificate on your machine — those stay server-side. Your token is scoped to your account: it can only read and write your own questions, sessions, and devices. - Revoke a token any time in the app (Settings → Connect your Mac → Revoke). Tokens also expire automatically.
- The embedded project URL and publishable key are public by design.
Uninstall
Remove the hooks block(s) for ~/.vibe/app/hooks/... from
~/.claude/settings.json, run claude mcp remove vibe --scope user, delete the
shell block marked vibe instance-id bridge from your shell rc, and
rm -rf ~/.vibe.
Links
- Vibe — https://davedinapoli.de/vibe
- VS Code extension —
davedinapoli.vibe-inject
MIT © Dave Di Napoli
