{"_id":"@davedinapoli/vibe","name":"@davedinapoli/vibe","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@davedinapoli/vibe","version":"0.1.0","type":"module","description":"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.","keywords":["claude","claude-code","mcp","remote","vibe","notifications","cli"],"homepage":"https://davedinapoli.de/vibe","repository":{"type":"git","url":"git+https://github.com/dave12031975/vibe.git"},"bugs":{"url":"https://github.com/dave12031975/vibe/issues"},"license":"MIT","author":{"name":"Dave Di Napoli"},"bin":{"vibe":"bin/vibe.mjs"},"engines":{"node":">=18"},"optionalDependencies":{"puppeteer-core":"^24.43.1"},"_id":"@davedinapoli/vibe@0.1.0","gitHead":"937af95a531b354d71877fd592f457cffcb149a1","_nodeVersion":"20.9.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-+i2xCGyTCF8BqXF+qxk7XrcA0HKL18CP9eEh4rx31Oc74e0EQvUW7tsAv8KLO42CXrQNkqvFM/n+Zm2GkJGl4Q==","shasum":"c0068cad28b87b867053234813e05cf17b80b847","tarball":"https://registry.npmjs.org/@davedinapoli/vibe/-/vibe-0.1.0.tgz","fileCount":16,"unpackedSize":116467,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDeZSgBzWpE/P/3PhjTwYW6QwST6Kje7F0+8xOXBsmvpQIhANYqC4ynyccMgF66RVa9GZy39GpAoB8Ft2EPhwdjNYei"}]},"_npmUser":{"name":"davedinapoli","email":"dev@davedinapoli.de"},"directories":{},"maintainers":[{"name":"davedinapoli","email":"dev@davedinapoli.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vibe_0.1.0_1781766243942_0.684472140119949"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-18T07:04:03.812Z","0.1.0":"2026-06-18T07:04:04.144Z","modified":"2026-06-18T07:04:04.367Z"},"maintainers":[{"name":"davedinapoli","email":"dev@davedinapoli.de"}],"description":"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.","homepage":"https://davedinapoli.de/vibe","keywords":["claude","claude-code","mcp","remote","vibe","notifications","cli"],"repository":{"type":"git","url":"git+https://github.com/dave12031975/vibe.git"},"author":{"name":"Dave Di Napoli"},"bugs":{"url":"https://github.com/dave12031975/vibe/issues"},"license":"MIT","readme":"# Vibe — answer Claude Code from your phone\n\nClaude Code is working in your terminal. It hits a decision it shouldn't guess —\n\"Rewrite the auth flow, or patch it?\" Instead of stalling (or guessing wrong),\nit asks **you**: a push lands on your phone with the question and the options.\nYou tap **A / B / C** or type a reply, and the answer types itself straight back\ninto the **live** session. No clone, no copy-paste, no babysitting the terminal.\n\n```\nClaude Code ──(vibe_ask)──▶  Vibe backend ──push──▶  📱 your phone\n     ▲                                                     │\n     └──────── answer typed into the live session ◀────────┘\n```\n\nThis package is the **machine side**: a tiny MCP server + Claude Code hooks that\nlet your sessions reach you. You answer in the **Vibe** iOS app (or the macOS\ndesk panel).\n\n## What you need\n\n- **macOS** + **VS Code** (the answer is typed back via the\n  [Vibe Inject](https://marketplace.visualstudio.com/items?itemName=davedinapoli.vibe-inject)\n  extension — install it once).\n- **Node 18+** (`node --version`).\n- The **Vibe app** (iOS / macOS) to answer on, and a **token** it gives you.\n\n## Setup (one command)\n\n1. In the Vibe app, open **Settings → Connect your Mac**. It mints a personal\n   token (`vibe_sk_…`) and copies it to your clipboard.\n2. In your terminal:\n\n   ```sh\n   npx @davedinapoli/vibe init\n   ```\n\n   Paste the token when asked (or pass it inline: `npx @davedinapoli/vibe init vibe_sk_…`).\n\n`init` will:\n\n- verify the token against the hosted backend,\n- write `~/.vibe/config.json` (chmod `600` — only your token lives there),\n- copy the runtime to `~/.vibe/app` (stable; survives npm cache cleanup),\n- register the Claude Code hooks in `~/.claude/settings.json`,\n- register the `vibe` MCP server (`vibe_ask`, `vibe_ask_text`),\n- wire a one-line shell helper so each session gets a stable id.\n\n3. Install the **Vibe Inject** VS Code extension.\n4. **Open a new terminal** and start a fresh `claude` session.\n\nThen ask Claude to do something it should check with you first — the question\nreaches your phone, and your answer flows back.\n\nCheck your install any time:\n\n```sh\nnpx @davedinapoli/vibe doctor\n```\n\n## What Claude gets\n\n| Tool | What it does |\n|------|--------------|\n| `vibe_ask` | Ask you a decision with 2–3 options (A/B/C). Non-blocking. |\n| `vibe_ask_text` | Ask you an open question; you reply with free text. |\n| `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`. |\n\n## Privacy & security\n\n- The **only secret** stored on your machine is your own token (`~/.vibe/config.json`, `chmod 600`).\n  There is no service key and no push certificate on your machine — those stay\n  server-side. Your token is scoped to **your** account: it can only read and\n  write your own questions, sessions, and devices.\n- Revoke a token any time in the app (**Settings → Connect your Mac → Revoke**).\n  Tokens also expire automatically.\n- The embedded project URL and publishable key are public by design.\n\n## Uninstall\n\nRemove the hooks block(s) for `~/.vibe/app/hooks/...` from\n`~/.claude/settings.json`, run `claude mcp remove vibe --scope user`, delete the\nshell block marked `vibe instance-id bridge` from your shell rc, and\n`rm -rf ~/.vibe`.\n\n## Links\n\n- Vibe — <https://davedinapoli.de/vibe>\n- VS Code extension — `davedinapoli.vibe-inject`\n\nMIT © Dave Di Napoli\n","readmeFilename":"README.md","_rev":"1-a3fe3cf6ca6aca5d3fd2f1537203a36f"}