The daemon
Set up your Mac
The app is the cockpit; the Vibe Machine daemon on your Mac does the work. It's a small, free, open-source program that runs your Claude Code sessions and streams them to your phone. Setting it up takes about five minutes.
Before you start
- A Mac. The daemon runs there and starts at login.
- Node 24 or newer.
brew install node, or the installer from nodejs.org. - Claude Code, installed and signed in with your own account: run
claudeonce in a terminal and sign in. Vibe Machine never sees your sign-in; it runs theclaudeyou installed. - Your repos in one folder,
~/devby default. - Optional: Tailscale on the Mac and the phone, to reach your Mac away from home. Without it the phone finds the Mac on the same Wi-Fi.
- Optional: Xcode with a simulator, for before-and-after screenshots of the iOS apps you work on.
Install and pair
-
Install the daemon
In Terminal on your Mac:
npm install -g vibemachine-daemon -
Run setup
vibemachine setupSetup starts the daemon in the background (it starts again at every login) and shows a QR code. If macOS asks whether
nodemay accept incoming connections, allow it: that's how the phone reaches the Mac on your Wi-Fi. -
Scan it with your iPhone
Open Vibe Machine and scan the QR code, or point the iPhone's Camera at it. Codes last ten minutes; for a fresh one, run:
vibemachine pair -
Start a session
Tap +, pick a repo and type what you want.
Check, update, remove
vibemachine doctor | Checks everything the phone needs: Node, Claude Code and its sign-in, the daemon, Wi-Fi and Tailscale, your projects folder, pushes and Xcode. Each failing check says what to do. |
|---|---|
vibemachine update | Installs the newest release and restarts the daemon. Your settings and sessions are kept. A session running on the phone stops and picks up again with your next prompt. |
vibemachine pair | Shows a fresh pairing code, for a new phone or an expired code. |
vibemachine uninstall | Stops the daemon, removes its login item and its Tailscale Serve rule, and says what's left. Add --purge to delete your sessions, screenshots and keys too. Then npm uninstall -g vibemachine-daemon removes the command. |
What runs on your Mac
The daemon is open source under the MIT licence, at github.com/pnlazzaro-png/vibemachine-daemon. Read it before you run it, if you like.
- Your own Claude Code. It runs the unmodified Claude Code program you installed, under your own sign-in. It never sees, stores or sends your credentials.
- Your own network. It listens only on your Mac, your Wi-Fi (encrypted, with a certificate your phone pins when it pairs) and your tailnet if you use Tailscale.
- Your own data. Sessions, screenshots and usage figures stay on your Mac, and on your phone once it's paired. See the privacy policy.
Before-and-after screenshots
For an iOS app, add a .vibemachine.json at the root of its repo. After every build in a turn, the daemon installs the app in the simulator, opens each screen with its launch arguments, waits settle_ms, and takes the picture. For a web project, web shows the page live instead (or as well). For example:
{
"preview": {
"simulator": "iPhone 17 Pro",
"bundle_id": "com.example.myapp",
"app": "build/DerivedData/Build/Products/Debug-iphonesimulator/MyApp.app",
"settle_ms": 3000,
"screens": [
{ "name": "Home", "args": [] },
{ "name": "Settings", "args": ["-openSettings", "YES"] }
],
"web": "http://localhost:5173"
}
}
Screenshots need Xcode and a simulator on the Mac. Web previews need only the URL.