Skip to content

VS Code in your browser, with code-server

Your editor in a tab. Your projects right where you left them.

Deploy on exe.dev

Shelley handles the setup. About 5 minutes.

Prefer a terminal?
curl -fsSL https://hub.exe.dev/deploy/code-server/prompt.txt | ssh exe.dev new --prompt=/dev/stdin

code-server puts VS Code on your VM and the editor in your browser. Laptop, tablet, borrowed computer—pick up where you left off.

What you get#

  • VS Code in your browser, protected by exe.dev login.
  • A Linux terminal with Git and Docker ready to go.
  • Projects and editor settings on disk; code-server starts on boot.
What's running, and where
Private https://my-code-server.exe.xyz/ Your editor and terminal
my-code-server.exe.xyz exe.dev VM
code-server 4 VS Code, managed by systemd :8000~/.local/share/code-server
Your projects ~/code

Deploy with Shelley#

Click Deploy and Shelley will set up code-server on a new VM, then check that it works. No config-file wrangling required.

Prefer a terminal?
curl -fsSL \
  https://hub.exe.dev/deploy/code-server/prompt.txt \
  | ssh exe.dev new --prompt=/dev/stdin
What Shelley is told
Set up code-server on this VM by following the exe.dev recipe at https://hub.exe.dev/deploy/code-server.md from top to bottom.

The recipe's example VM name is my-code-server. This VM's name is the output of `hostname`: use it wherever the recipe writes my-code-server. Skip the step that creates the VM; you are on it.

You are done when all of these are true. Check each one yourself:
- VS Code in your browser, protected by exe.dev login.
- A Linux terminal with Git and Docker ready to go.
- Projects and editor settings on disk; code-server starts on boot.

Read the whole recipe, including the closed details. For initial setup,
follow "Install by hand" first, skipping VM creation and SSH.
The opening walkthrough is for the owner. Do not run the walkthrough,
backup, restore, or update commands during setup.
Keep the VM private. If port 8000 is occupied, ask the owner before
replacing anything. Leave existing Git and coding-agent settings alone.
Finish with https://$(hostname).exe.xyz/?folder=/home/exedev/code,
using this VM's actual hostname, and remind the owner to keep it private.

Finish with the URLs I should open.

Also at /deploy/code-server/prompt.txt. The recipe it follows is /deploy/code-server.md.

Open your editor#

Follow the link Shelley gives you and sign in to exe.dev. No second password to remember. Your project folder, ~/code, is ready; choose Trust Folder & Continue when you're working with your own code.

Warning

Keep this VM private. code-server's password is off; exe.dev login is the lock. Anyone you share the VM with gets a terminal with sudo, too. Never make it public.

Make something#

In Terminal → New Terminal, try this on the VM:

mkdir -p ~/code/hello
echo '<h1>Hello, browser!</h1>' > ~/code/hello/index.html
python3 -m http.server 3000 --bind 0.0.0.0 --directory ~/code/hello

Open https://my-code-server.exe.xyz:3000/. Ta-da! Edit hello/index.html, refresh, repeat. Ctrl+C stops the server.

Using a framework? See Next.js, Vite, and friends for preview settings.

Setup and upkeep#

Your work lives on the VM. Push your repos and keep a backup off the VM, too. The commands are here when you need them.

Install by hand

On your computer (pick another name if my-code-server is taken):

ssh exe.dev new --name=my-code-server
ssh my-code-server.exe.xyz

On the VM, as exedev, use Coder's installer. The exe.dev proxy handles HTTPS and login:

curl -fsSL https://code-server.dev/install.sh | sh -s -- --version=4.141.0
mkdir -p ~/.config/code-server ~/code
cat > ~/.config/code-server/config.yaml <<'EOF'
bind-addr: 0.0.0.0:8000
auth: none
cert: false
enable-remote-storage: true
disable-telemetry: true
EOF
sudo systemctl enable --now code-server@exedev

Check that it's alive and enabled at boot:

systemctl is-enabled code-server@exedev
curl -fsS --retry 10 --retry-connrefused --retry-delay 1 http://localhost:8000/healthz

enabled and a JSON reply mean you're ready (expired just means idle). Open https://my-code-server.exe.xyz/?folder=/home/exedev/code.

Back up and restore

Pause anything writing to your projects. On the VM, save your projects, settings, and extensions:

umask 077
sudo systemctl stop code-server@exedev
tar -czf ~/code-server-backup.tar.gz -C ~ \
  code .config/code-server .local/share/code-server
sudo systemctl start code-server@exedev

On your computer, copy the archive off the VM. Keep it private; it may contain project secrets.

scp my-code-server.exe.xyz:code-server-backup.tar.gz .

To restore, install code-server on a fresh private VM first. Use its name below and copy the archive from your computer:

scp code-server-backup.tar.gz my-code-server.exe.xyz:

Then, on that VM:

sudo systemctl stop code-server@exedev
tar -xzf ~/code-server-backup.tar.gz -C ~
sudo systemctl start code-server@exedev

Reopen the editor. Your projects, settings, and extensions should be back.

Update

Back up first. On the VM, rerun just the installer command with a newer 4.x release, then:

sudo systemctl restart code-server@exedev
code-server --version

Check the version, then refresh your browser. Your files stay put.

Something stuck?

On the VM, check the service log:

journalctl -u code-server@exedev -n 50 --no-pager

Check that bind-addr is 0.0.0.0:8000 and nothing else is using that port. If another service owns it, investigate before stopping anything.

Frequently asked questions#

Where do I get extensions?

Use the Extensions sidebar. code-server uses Open VSX, not Microsoft's marketplace, so some VS Code extensions aren't available.

Can I bring my GitHub repos and coding agents?

Yep. Use the GitHub integration for private repos. Want an AI sidekick? See the Claude Code guide.

Will terminal commands keep running when I close the tab?

Use tmux for long-running commands. Your files stay on the VM, but don't rely on a browser terminal staying connected forever.

Can I use desktop VS Code too?

Yes! VS Code over SSH opens the same VM and files from your desktop editor.

Updated Oct 14, 2026 · Markdown · manifest.json · Something wrong? Tell us