Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>CodeMoteNew to Visual Studio Code? Get it now.
CodeMote

CodeMote

CodeMote

|
62 installs
| (0) | Free
Control your desktop VS Code from your iPhone & iPad — files, editor, a real terminal, Git & PRs — over a secure zero-setup tunnel.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

CodeMote lets you reach the VS Code workspace on your desktop from a native iOS app. No file-syncing and no cloud copy of your code: the phone is a remote control for the editor that's already running on your computer.

This extension is the desktop half. You also need the CodeMote iOS app on your iPhone or iPad.

Control your code IDE from your iPhone, anywhere — browse your workspace file tree Run agent CLIs and a full terminal live — start dev servers and talk to your AI Edit code and ship it in one place — live editing plus full Git, no credentials on your phone Manage multiple workspaces at once — switch without killing what's running

New in 2.0

  • ⚡ Zero-setup connection. Cloudflare quick tunnels are the new default — Start Mobile Session just works, no devtunnel install and no login. Prefer a stable URL that survives restarts? Pick ngrok, Tailscale, or devtunnel with CodeMote: Change Connection Method.
  • 🔀 Git PR review. Open, diff, close, and merge pull requests from your phone.
  • 📝 Notes. A first-class notes editor on the phone.
  • 🖼️ In-editor media. View images & Markdown and play video/audio right in the mobile editor.

Want AI agent chats from your phone? The extension host can't run agents, so native Claude Code chats live in the companion codemote-cli — run npx codemote-cli start in any project (no IDE needed) to steer Claude from a native chat UI with tool-permission prompts, sub-agents, and rewind.


Features

  • 📁 Browse your workspace — navigate the open folder's file tree from your phone.
  • ✏️ Edit & save — open files in a mobile editor with conflict protection so you never clobber a newer version.
  • 🖼️ View media — images, Markdown, and video/audio playback in the mobile editor.
  • 💻 A real terminal — run any command on your actual machine, with persistent sessions that survive backgrounding the app.
  • 🔀 Shared terminals — mirror one terminal between VS Code and your phone, or promote a phone-only session to the desktop.
  • 🌿 Git & PRs — status, diff, commit, push, branches, plus pull-request review (open, diff, close, merge) — no credentials ever leave your machine.
  • 📝 Notes — jot and edit notes from the phone.
  • 🗂️ Multiple workspaces — switch between open folders without killing what's running.
  • 🔌 Your choice of tunnel — Cloudflare (zero setup, default), ngrok, Tailscale, or Microsoft devtunnel.
  • 🔐 No CodeMote server — your code streams directly between your devices over an encrypted tunnel you control.
  • 🔄 Auto-reconnect — cold-launch the app and it reconnects to your last workspace.

How it works

When you start a session, this extension makes your open workspace reachable to your phone through a tunnel — by default a Cloudflare quick tunnel, with ngrok, Tailscale, and Microsoft devtunnel as stable-URL alternatives. The app connects to that tunnel over an encrypted connection. Your code stays on your machine and streams only to your own paired device — there is no CodeMote server in the middle.


What you need

  1. VS Code with this extension installed.
  2. The CodeMote iOS app on your iPhone or iPad.

That's it for the default (Cloudflare) connection — no CLI to install, no login. A stable URL (one that survives restarts, so your phone reconnects without re-scanning) needs one extra one-time step; see Choosing a connection below.


Setup

1. Start a session

  1. In VS Code, open the folder you want to work on.
  2. Command Palette (Cmd/Ctrl+Shift+P) → "CodeMote: Start Mobile Session".
  3. A panel opens with a QR code. On the default Cloudflare tunnel there's nothing else to configure.

2. Pair your phone

  1. Install and open the CodeMote app.
  2. Scan the QR code — or tap paste and paste the pairing string shown under the QR.
  3. You're in. Browse files, open the editor, switch to the terminal.

The status bar shows CodeMote: N devices while connected.


Choosing a connection

CodeMote reaches your phone through a tunnel. Cloudflare (the default) needs zero setup but hands out a fresh URL each restart, so your phone re-pairs next time. The other three give a stable URL that survives restarts.

Run CodeMote: Change Connection Method to switch — CodeMote remembers your choice.

Provider One-time setup URL Notes
Cloudflare (default) none ephemeral (changes each restart) zero setup, no account; binary auto-downloaded
ngrok free account + one API key stable binary auto-downloaded; static domain auto-assigned
Tailscale install + tailscale up + enable Funnel stable your own tailnet; most private
devtunnel install devtunnel + devtunnel user login stable Microsoft; the login can expire and prompt again

All four run on your own machine under your own account, use no CodeMote server, and work behind NAT/firewalls (outbound-only).

Using Microsoft devtunnel

If you pick devtunnel, install Microsoft's free devtunnel tool and sign in once:

OS Install command
macOS brew install --cask devtunnel
Windows winget install Microsoft.devtunnel
Linux curl -sL https://aka.ms/DevTunnelCliInstall \| bash
devtunnel user login --github     # or: --microsoft

Sign in with a GitHub or Microsoft account. This authorizes your machine to host the tunnel — it is not the same as VS Code's "Turn on Remote Tunnel Access" menu item (don't use that one).


Commands

Open the Command Palette and type "CodeMote":

Command What it does
CodeMote: Start Mobile Session Starts the session and shows the pairing QR.
CodeMote: Show QR Code Shows the QR again with a fresh, single-use pairing code (use this to pair another device, or if a code was already used).
CodeMote: Change Connection Method Switch tunnel provider (Cloudflare / ngrok / Tailscale / devtunnel); the choice is remembered.
CodeMote: New Shared Terminal Opens a terminal mirrored between VS Code and your phone.
CodeMote: Stop Mobile Session Ends the session and disconnects all devices.
CodeMote: Disconnect All Devices Revokes every device's access; they must re-pair.

You can also click the CodeMote status bar item to start a session.


Managing your devtunnel

(Only relevant if you use the devtunnel provider. Cloudflare, ngrok, and Tailscale don't apply here.)

With devtunnel, CodeMote gives each workspace its own persistent tunnel named codemote-<hash> (the hash is derived from the folder path, so the URL stays the same every time you start a session from that folder).

Find the tunnel for your workspace

devtunnel list                 # CodeMote's are named codemote-…
devtunnel show codemote-<hash> # inspect a specific one

⚠️ Don't switch login providers without cleaning up first

Dev tunnel IDs are global and single-owner: a tunnel named codemote-<hash> can only ever be owned by one account. If you signed in with GitHub and later sign in with Microsoft (or a different account of either kind), the new account does not own your existing codemote-<hash> tunnel — so CodeMote can't start or reconnect to it, and you can't recreate it under the new account.

Before switching accounts, delete the old tunnel while still signed into the account that created it:

# while logged in as the ORIGINAL account
devtunnel delete codemote-<hash>     # delete one workspace's tunnel
devtunnel delete-all                 # or delete every tunnel you own

Then sign in with the new account and start the session again — CodeMote will recreate the tunnel under the new owner. (The public URL will change, so re-show the QR and re-pair your phone.)

If you've already switched accounts and lost access to the old tunnel, sign back into the original account, run the delete command above, then switch back.


Security — please read

A connected phone has the same power as sitting at your desktop: it can read and write any file in the open workspace and run any command in the terminal on your machine. That's the whole point — but it means you should treat pairing like handing someone your keyboard.

  • The connection is encrypted end-to-end, and access is protected by a single-use pairing code that the app exchanges for a private credential. Knowing the address is not enough to get in.
  • Treat the QR / pairing code like a password. Don't share screenshots of it.
  • End the session (or Disconnect All Devices) when you're done. Closing the workspace or quitting VS Code also disconnects everything.

Privacy

CodeMote has no CodeMote-operated server. Your files and terminal stream directly between your phone and your computer, relayed through the tunnel provider you choose (Cloudflare, ngrok, Tailscale, or Microsoft devtunnel — all running under your own account). No CodeMote service ever sees your code.


Troubleshooting

You see… Fix
The app can't connect / times out Make sure the session is running (status bar shows "CodeMote: …"), and re-show the QR (codes are single-use).
The URL keeps changing / phone re-pairs every time That's Cloudflare (the ephemeral default). Switch to a stable provider with Change Connection Method for a URL that survives restarts.
"devtunnel CLI not found" Only applies if you chose devtunnel. Install it (table above); make sure devtunnel --version works in a fresh terminal, then restart VS Code.
"Run devtunnel user login…" Run that command in a terminal, then start the session again.
"Open a folder before starting…" CodeMote serves the open workspace — open a folder first.
"Failed to start the tunnel" On devtunnel, your login may have expired — run devtunnel user login again. On other providers, re-run Change Connection Method.
Can't start/reconnect after changing accounts (devtunnel) You switched devtunnel login providers — the new account doesn't own your codemote-<hash> tunnel. Sign back into the original account, run devtunnel delete codemote-<hash> (find it with devtunnel list), then start again. See Managing your devtunnel above.

Support

Questions or issues? Contact s.castellitti.dev@gmail.com.


© 2026 CodeMote. All rights reserved.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft