Skip to content

Run Claude Code on a remote server

A computer for Claude. A breather for your laptop.

Deploy on exe.dev

Shelley handles the setup. About 2 minutes.

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

Claude Code already ships with exeuntu, exe.dev's default VM image. No installer adventure required. Give Claude a project and let your laptop clock off.

This setup uses exe.dev's LLM integration: no API key to paste, and model usage billed to your exe.dev account.

What you get#

  • Claude Code connected to a model, with no API key to paste
  • A project folder at ~/project on persistent disk
  • A claude tmux session that survives disconnects
What's running, and where
Private ssh my-claude-code.exe.xyz your terminal
my-claude-code.exe.xyz exe.dev VM
Claude Code preinstalled; connected to exe.dev's LLM integration ~/.claude
Your project ~/project
tmux keeps your terminal session running when you disconnect

Deploy with Shelley#

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

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

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

You are done when all of these are true. Check each one yourself:
- Claude Code connected to a model, with no API key to paste
- A project folder at `~/project` on persistent disk
- A `claude` tmux session that survives disconnects

Use the preinstalled Claude Code. Run the VM-side setup in "Start coding",
using `exeuntu claude configure` on older images. Create tmux detached
(`tmux new -d -s claude -c ~/project`) rather than attaching. Reuse the
session if it already exists. Do not launch interactive Claude; leave its
first-run prompts to the owner. Do not overwrite existing Claude settings
or switch an existing login; ask the owner if these prevent setup.
Verify from ~/project with `claude -p --model haiku "Reply with exactly: OK"`
and check `tmux has-session -t claude`. Skip the later optional instructions
and FAQ. Finish with the SSH command from "Take a break", using this VM's
name, and tell the owner to run `claude` inside it.

Finish with the URLs I should open.

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

Start coding#

On your computer, create a VM and connect. Pick any free name; if you've already clicked Deploy or have a VM, skip the first command and use its name:

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

On the VM, configure Claude, make a project folder, and open a tmux session:

exeuntu configure claude
mkdir -p ~/project
tmux new -A -s claude -c ~/project

Inside that session, start Claude:

claude

Follow the first-run prompts, then give it a small task. For example:

Build a tiny website for a very opinionated cat.

That's the setup. Your files live in ~/project.

Take a break#

Press Ctrl-b, then d to detach. Claude stays running on the VM when you disconnect. On your computer, use this command to hop back in:

ssh -t my-claude-code.exe.xyz 'tmux new -A -s claude -c ~/project'

A VM restart ends the running session, but not your saved work. Reconnect and run claude --continue from your project's folder on the VM to resume its last conversation.

Make yourself at home#

  • Bring your code: connect a GitHub repo, clone it onto the VM, and run claude from its directory. Use that folder instead of ~/project in the commands above.
  • Peek at your app: ask Claude to serve it on 0.0.0.0:8000, then open https://my-claude-code.exe.xyz/. It's private by default. More about previews.

For Claude's own features, head to Anthropic's quickstart.

Frequently asked questions#

Can I use my Claude subscription instead?

Yes. Skip exeuntu configure claude and run claude auth login on the VM. Open its sign-in link on your computer and paste the code back if prompted. If you already used the setup above, first remove its apiKeyHelper and env.ANTHROPIC_BASE_URL settings from ~/.claude/settings.json.

What if the setup command doesn't work?

Older VMs use exeuntu claude configure. If it says existing user config, it has left your settings alone. On the VM, run claude auth status --text to check your connection settings; the LLM integration docs cover custom settings and using your own API key.

How do I update Claude Code?

On the VM, run claude update, then restart Claude with claude --continue. See updating coding agents if you need a hand.

How do I back up my work?

Commit and push your code. For a copy of the whole VM, run ssh exe.dev cp my-claude-code my-claude-code-backup on your computer (choose a free backup name). To use that copy, connect with ssh my-claude-code-backup.exe.xyz; your files and Claude history are there. Reattach any VM-specific integrations.

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