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 or OpenAI Codex 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

The link command prints a QR code. In the iOS app tap + > Connect your computer on Home (or Remote in older versions of the app) and scan it, or type the code printed under it. The computer then shows on Home beside your apps and chats, and counts as one of your plan's workspaces. Then:

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

The agent now listens. Send a task from your iPhone ("fix the 500 on /api/users"): the agent runs Claude Code or Codex in this directory, makes the change, and sends the result back to your phone. You can also pick up a Claude Code session you started in the terminal on that computer, then reopen it at the desk with claude --resume.

Claude Code uses your Claude subscription or API key. To run OpenAI Codex instead, log in once with codex login (your own ChatGPT account), then link with vibekit-agent link codex, or switch a computer that is already linked with vibekit-agent start codex. The choice is remembered for this computer. On both engines the app streams replies, shows tool cards, takes images, has Stop, and handles "Ask before actions" approvals from the app or the lock screen. You can also change settings by asking in chat.

Commands

vibekit-agent link
Pair this machine with your VibeKit account. Prints a QR code (and a code to type) for the iOS app.
vibekit-agent start [--directory <path>]
Start listening for remote tasks. Defaults to the current directory; --directory changes scope, and vibekit-agent start codex (or start claude) switches the coding agent.
vibekit-agent status
Show whether this machine is linked, and where its config file lives.
vibekit-agent config --tools <list>
Restrict which tools the remote operator can invoke (default = full access). Codex honors full access or read-only.
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 vibekit.bot over 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.

VibeKit relays between your laptop and the phone. Your laptop never needs 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's always-on agent gatewayYour 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

By default the agent has full access: it edits files and runs commands on your behalf, because you linked the computer for that. Narrow it with vibekit-agent config --tools, or reset to a read-only set with vibekit-agent config --reset-tools. Claude Code follows the exact tool list; Codex runs with full access or read-only. Turn on "Ask before actions" to approve each command and edit from the app or the lock screen.

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, or OpenAI Codex if you link it with vibekit-agent link codex, same agent loop, same file-system access, same model quality. You're running the real coding agent 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. Model calls go straight from your computer to Anthropic or OpenAI on your own Claude or ChatGPT sign-in or API key, so VibeKit never bills them.

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