To run Claude Code on Windows from your phone, install Ubuntu with WSL, then paste Melta's one setup line into PowerShell opened as administrator. The line turns on Windows' SSH server, allows your phone's key, signs the PC in to Tailscale, installs Herdr in Ubuntu and keeps it running with a sign-in task. It ends with "OK: everything is set." or a list of what is missing.
Key facts
- One line, pasted into PowerShell or Command Prompt opened as administrator.
- Turns on OpenSSH Server and opens port 22 in the Windows firewall.
- Installs Node.js 20 in Ubuntu only when its Node.js is missing or older than 18.
- A Windows task, Melta Herdr, starts Herdr at sign-in; a keeper checks it every 30 seconds.
- Without WSL you get a Windows terminal and Notes, but no panes or chat.
- Safe to run again: steps already done are skipped.
What do you need before you start?
- Windows 10 or 11 with an administrator account. The line refuses to run in a normal window and tells you to open Terminal (Admin) from the Start button's right-click menu.
- Ubuntu in WSL, for panes and chat. Run
wsl --installin an administrator PowerShell, restart, then open Ubuntu from the Start menu once to pick a user name. Install Claude Code or Codex inside Ubuntu: that is where your agents run. - Tailscale on your phone, signed in, if you want to reach the PC from outside your home network.
Where is the setup line and how do I run it?
In the Melta app, tap Add Host, choose Tailscale, then Windows above the command, and copy it. It has this shape, with your phone's real key and a notification token filled in:
powershell -NoProfile -ExecutionPolicy Bypass -Command "& ([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://getmelta.app/setup.ps1'))) -Tailscale -Key 'ssh-ed25519 AAAA... melta-iphone' -Token mlt_..."
Paste it into PowerShell or Command Prompt, opened as administrator, and press Enter. The script is public at getmelta.app/setup.ps1 if you want to read it first, which is a good habit for anything you run as administrator.
What does the setup line do, step by step?
- SSH server. Adds Windows' own OpenSSH Server if it is missing, sets the service to start automatically, starts it, and adds a firewall rule for port 22.
- Your phone's key. Writes the key to
%ProgramData%\ssh\administrators_authorized_keys, which Windows uses for administrator accounts, and to your own~/.ssh/authorized_keys, then sets the file permissions OpenSSH requires. - Tailscale, because the line from the app includes
-Tailscale. It installs Tailscale with winget when it is missing, then opens a browser window to sign the PC in. Use the same Tailscale account as your phone. - Ubuntu's part. Runs Melta's Linux setup inside Ubuntu in a Herdr-only mode. It installs Node.js 20 when Ubuntu's own Node.js is missing or older than 18 (Ubuntu 22.04 ships 12), installs or updates Herdr and the Melta notification plugin, and writes a small keeper script.
- Keep Herdr running. WSL stops Ubuntu, and Herdr's server with it, once its last window closes. So the line registers a Windows task called Melta Herdr that starts at sign-in, runs the keeper with no window, and restarts up to three times if it fails. The keeper checks Herdr's server every 30 seconds and starts it again if it has stopped. The line then waits up to 20 seconds to see the server running.
- What to type into Melta. It prints your Windows user name, the Tailscale IP and the local IP.
[Screenshot: PowerShell after the setup line, ending with "OK: everything is set." and the melta-setup line]
Herdr keeps sessions alive on the PC, so a dropped phone signal does not end them.
What does "melta-setup: warn" mean?
The last line of the output is for the app: melta-setup: ok, melta-setup: warn <codes> or melta-setup: fail <codes>. The app shows each code in plain words, and the list printed just above it says the same thing. A warn means the PC works but something is still missing. The common ones:
no-wsl: Ubuntu isn't set up, so there are no panes or chat yet. Runwsl --install, restart, open Ubuntu once, then run the line again.wsl-root: Ubuntu has no user of its own yet. Open it from the Start menu once to create one.tailscale-login: Tailscale is installed but not signed in. Sign in with the same account as your phone.herdr-keep: Herdr didn't start in the background. Open Ubuntu once, runherdr, then run the line again.
A fail, such as not-admin, means the line stopped. Every step is safe to repeat: fix what it names and paste the same line again.
What works on plain Windows without WSL?
Without Ubuntu there is no Herdr, so there are no panes and no chat. You still get a Windows terminal (Command Prompt or PowerShell) over SSH, and Notes work as they are. The app says "Panes and chat need Herdr in WSL" when it connects to a PC in this state. If your agents run in a Docker container instead, install Herdr in that container and point the host at it under Run Commands In; the Windows setup page has the steps.
Common questions
Do I need WSL to run Claude Code from my phone on Windows?
For panes, agent status and chat, yes, or a Docker container with Herdr in it. Without either, you get a Windows terminal and Notes only.
Does it keep working after I close every window?
Yes. The Melta Herdr task starts Herdr when you sign in to Windows and the keeper restarts it if it stops, so no Ubuntu window needs to stay open. A sleeping PC can't be reached, so set sleep to Never when plugged in.
Which Node.js version does it install?
Node.js 20, and only when Ubuntu's Node.js is missing or older than 18. If you use nvm, it installs through nvm and adds nvm to your login shell, so the terminal in the app finds Node.js and agents installed with it.
Can I run the line again?
Yes. Steps that are already done are skipped, so running it again is how you fix a warn or update Herdr.
Melta does this for you: one line on the PC, then every Claude Code pane on your phone. Melta is free; join the waitlist.