Remote Claude Development

I wanted Claude Code available even when my laptop was closed. The solution: run it on a remote server I can access from anywhere.

The Problem

Claude Code runs in a terminal. When I close my laptop, the session ends. This creates friction:

  • Long-running tasks need my laptop open
  • Ideas on a walk can’t trigger Claude to work on something
  • Mobile access means SSH, which is clunky

I needed Claude Code running somewhere that’s always on.

The Setup

I use a seedbox (a remote server typically used for file transfers) that’s always running. The key components:

ComponentPurpose
code-serverVS Code in a browser
Claude CodeThe AI coding assistant
SyncthingFile sync between Mac and server
HappyMobile-friendly Claude Code wrapper

The seedbox runs Linux but doesn’t have root access. This means no systemd for service management. Everything uses cron-based auto-restart scripts instead.

How File Sync Works

Syncthing keeps my Claude folder in sync bidirectionally:

  • Edit on Mac → syncs to server → Claude on server sees changes
  • Claude on server creates file → syncs to Mac → available locally

For sensitive files that shouldn’t leave my Mac, I use sens/ folders. Any folder named sens is excluded from sync via Syncthing’s ignore patterns.

Accessing Claude Remotely

Three methods, depending on context:

Browser (code-server) Full VS Code interface. Works on any device with a browser. Run Claude Code in the integrated terminal.

SSH Direct terminal access. Fast and lightweight. Just ssh server then claude.

Mobile (Happy) Happy wraps Claude Code to enable mobile connectivity. Start a session with happy instead of claude, then control it from your phone.

The Mobile Workflow

This is the pattern I use most:

  1. Start session on server: cd ~/claude && happy
  2. Do initial work: Set up the context, start a task
  3. Walk away: Claude keeps working
  4. Check from phone: See progress, send follow-up prompts
  5. Resume on laptop later: Full history preserved

The magic is that Claude keeps running. I can start something, go for a walk, and check progress from my phone. When I’m back at my desk, everything syncs.

Session Handoff

To continue a desktop session from mobile:

  1. Get the session ID from Claude (or check session info)
  2. Resume from mobile: happy --resume <session-id>

This loads the conversation history into a new process. The original session can continue separately if needed.

Auto-Restart Without Systemd

Seedboxes typically don’t give you systemd access. The workaround is cron jobs that check if a service is running and restart it if not. This pattern keeps code-server and Syncthing running even after reboots or crashes.

What I Use This For

Long tasks: Refactoring, large migrations, anything that takes time. Start it and check back later.

Mobile ideas: Walking the dog and have an idea? Send it to Claude from my phone. It’s working on it by the time I’m home.

Continuous availability: My laptop can sleep. Claude doesn’t have to.

Tradeoffs

Latency: SSH adds a bit of lag. Not noticeable for Claude interactions but matters for real-time editing.

Setup complexity: Getting everything configured took a weekend. Now it just works.

Mobile limitations: Happy’s mobile app has a quirk where the first message can get lost if sent too quickly. Workaround: send a quick ”.” before the real request.

Is It Worth It?

For me, yes. The ability to have Claude working while I’m doing something else is genuinely useful. The mobile access means ideas don’t get lost waiting for me to reach my laptop.

If you’re a casual Claude Code user, probably not worth the setup. If you’re using it daily and want it always available, the investment pays off.


Related: My Claude Code Setup, Self-Improvement Loops