VibeKit Remote Agent — Drive Your Laptop's Claude Code from iPhone

A small Node CLI you install on your laptop. It links to your VibeKit account, listens for tasks from your iPhone, and runs Claude Code locally against your real codebase. Same agent loop, same model quality — your phone is just the input device.

Install + link

npm install -g vibekit-agent
vibekit-agent link

Latest published version: [email protected]. The link command prints a code; open the iOS app, paste it under Remote Agents, done. Then:

cd ~/code/your-project
vibekit-agent start

The agent now listens. Send a task from iOS ("fix the 500 on /api/users"), the agent runs Claude Code in this directory, commits the fix, and sends the result back to your phone.

Commands

vibekit-agent link
Pair this machine with your VibeKit account. Generates a one-time code you enter in the iOS app.
vibekit-agent start [--directory <path>]
Start listening for remote tasks. Defaults to the current directory; --directory changes scope.
vibekit-agent status
Show whether this machine is linked and what user it's linked to.
vibekit-agent config --tools <list>
Whitelist which Claude Code tools the remote operator can invoke (default = safe set).
vibekit-agent logout
Clear stored credentials. The pairing on the iOS side stays until you remove it there too.

Why outbound WebSocket (not SSH / tunnel)

The agent opens a WebSocket to app.vibekit.bot as a normal HTTPS connection. No inbound ports, no SSH config, no ngrok. Works behind corporate firewalls, hotel wifi, NAT — anywhere an outbound HTTPS call goes through.

The gateway sits between your laptop and the mobile client. Your laptop never has a public address.

Hosted app vs Remote agent — when to use which

 Hosted app on VibeKitRemote agent (vibekit-agent)
Where the code livesVibeKit's EFSYour laptop's disk
Where the agent runsVibeKit FargateYour laptop's CPU
Stays online when laptop sleeps?YesNo
Has a public URL?Yes (*.vibekit.bot)No (local-only)
Best forApps you want to ship + shareDriving your existing local project from your phone

Tool safety

The agent inherits Claude Code's tool model. By default, the operator from your phone can only invoke a safe set (file reads, file writes inside the workspace, Bash with whitelisted prefixes). You can broaden or narrow this with vibekit-agent config --tools.

If you're skittish: link a project-specific worktree (git worktree add ../scratch) and run the agent against that, so even if you tell the operator something rash, the blast radius is limited.

Related packages

FAQ

What is vibekit-agent?

A small Node CLI that runs on your laptop and listens for tasks dispatched from the VibeKit iOS app. When a task arrives, it invokes Claude Code locally — same agent loop, same file-system access, same model quality. You're running real Claude Code on your own machine, with mobile as the input device.

How does this differ from a hosted app on VibeKit?

A hosted app runs on VibeKit's Fargate cluster — we own the container. The remote agent runs on YOUR laptop — you own the file system. Use remote agent when you want to drive your existing local codebase from your phone (the bug fix you noticed while away from the laptop). Use hosted apps when you want VibeKit to do the hosting too.

Does it require port forwarding or a public IP?

No. vibekit-agent opens an outbound WebSocket to VibeKit's gateway. The mobile client also connects to the gateway. Both ends talk through that bridge — your laptop never needs an inbound public port, NAT-busting, or ngrok. It works from a coffee-shop wifi, from behind a corporate firewall, from your kitchen.

Is my code private?

The code stays on your laptop. The WebSocket carries the user's prompt and the agent's response messages; the agent's file reads / writes are local. VibeKit's gateway sees the messages (encrypted in transit) but doesn't host your code. If you don't want VibeKit to see prompts either, run the agent against your own Anthropic key — the agent talks directly to Anthropic for model calls.

Drive your laptop's Claude Code from iPhone
npm i -g vibekit-agent · link · start · phone becomes the input device
Get the iOS App →