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.
Features
How it worksWhen you start a session, this extension makes your open workspace reachable to your phone through a Microsoft dev tunnel (the secure port-forwarding service built into VS Code). 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 third-party server in the middle. What you need
Setup1. Install the
|
| OS | Command |
|---|---|
| macOS | brew install --cask devtunnel |
| Windows | winget install Microsoft.devtunnel |
| Linux | curl -sL https://aka.ms/DevTunnelCliInstall \| bash |
Verify it works:
devtunnel --version
2. Sign in to dev tunnels (one time)
devtunnel user login --github
devtunnel user login --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).
3. Start a session
- In VS Code, open the folder you want to work on.
- Command Palette (
Cmd/Ctrl+Shift+P) → "CodeMote: Start Mobile Session". - A panel opens with a QR code.
4. Pair your phone
- Install and open the CodeMote app.
- Scan the QR code — or tap paste and paste the pairing string shown under the QR.
- You're in. Browse files, open the editor, switch to the terminal.
The status bar shows CodeMote: N devices while connected.
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: 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 dev tunnel
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
List the tunnels owned by the account you're signed into:
devtunnel list
CodeMote's tunnels are the ones named codemote-…. To inspect a specific one:
devtunnel show codemote-<hash>
⚠️ 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 third-party server. Your files and terminal stream directly between your phone and your computer, routed through Microsoft's dev tunnel service (which you sign in to yourself). No CodeMote-operated service ever sees your code.
Troubleshooting
| You see… | Fix |
|---|---|
| "devtunnel CLI not found" | Install it (table above); make sure devtunnel --version works in a fresh terminal, then restart VS Code so it picks up your PATH. |
"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. |
| 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). |
| "Failed to start the tunnel" | Your devtunnel login may have expired — run devtunnel user login again. |
| Can't start/reconnect after changing accounts | 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 dev tunnel above. |
Support
Questions or issues? Contact support@codemote.app (placeholder — set your real support channel before publishing).
© 2026 CodeMote. All rights reserved.