[FEATURE] Self-hosted environment configs with IPN/Tailscale connectivity for claude.ai and mobile

Resolved 💬 5 comments Opened Feb 14, 2026 by JayDoubleu Closed Mar 18, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

Claude Code's cloud environments are great, but they require internet-exposed infrastructure. Many developers run internal environments on solutions like Proxmox, Unraid, or bare-metal homelab servers that are only reachable through IPN (IP Private Network) overlays like Tailscale or ZeroTier. These environments are intentionally not exposed to the public internet for security reasons.

Today there is no way to:

  • Define a self-hosted environment that claude.ai or the Claude mobile app can connect to
  • Route that connection through an IPN network like Tailscale
  • Use the same rich session UX (diffs, approvals, progress) against infrastructure you own and control

The workarounds (SSH + tmux + third-party terminal apps) lose the native Claude Code UX entirely. The ecosystem of tools trying to solve this (#25570, #15208) signals strong demand for first-party support.

Proposed Solution

Introduce an environment config that can be defined locally and registered with Claude, describing how to reach a self-hosted Claude Code instance over an IPN network.

1. Environment definition (e.g., ~/.claude/environments.json or per-project in .claude/settings.json):

{
  "environments": [
    {
      "name": "homelab-dev",
      "host": "100.x.y.z",
      "port": 22,
      "transport": "ssh",
      "network": "tailscale",
      "user": "claude-agent",
      "auth": "key",
      "working_dirs": [
        "/home/claude-agent/projects/api",
        "/home/claude-agent/projects/frontend"
      ]
    }
  ]
}

2. A lightweight server/relay mode in Claude Code CLI (e.g., claude --serve) that the self-hosted machine runs, exposing a session endpoint only on the Tailscale interface.

3. Client support in claude.ai and Claude mobile to discover and connect to registered environments. These would appear in the environment picker alongside cloud environments. The connection would be routed through the IPN network, meaning:

  • The host never needs a public IP or open ports
  • Traffic stays within the Tailscale/WireGuard mesh
  • Authentication can leverage Tailscale ACLs + SSH keys

4. Session parity with cloud environments: full conversation view, diff review, action approvals, and the ability to attach/detach without killing the session.

Alternative Solutions

  • SSH + tmux + Termius/Blink/Moshi: Works but loses the native Claude Code UX. No push notifications, no diff viewer, no approval flow. Fragile over mobile connections.
  • Third-party relays (Happy Coder, Clauder, CodeRemote): Extra infrastructure, ongoing costs, and maintenance burden for what should be a first-party capability.
  • Cloud environments only: Forces code onto cloud VMs, which is a non-starter for air-gapped projects, large local datasets, GPU workloads, or teams with strict data residency requirements.
  • VS Code Remote Tunnels model: VS Code solved this problem for editors. Claude Code could follow the same pattern for AI-assisted development.

Priority

High - Significant impact on productivity

Feature Category

Configuration and settings

Use Case Example

  1. I run a Proxmox cluster at home with dev VMs. One VM has my project checked out with Docker, local databases, and MCP servers running.
  2. The VM is only reachable via Tailscale (IP 100.x.y.z). No public IP, no port forwarding.
  3. I define this as an environment in my Claude config and run claude --serve on the VM.
  4. From claude.ai on my work laptop, or the Claude Android app on my phone, I select "homelab-dev" from the environment picker.
  5. Claude connects through Tailscale, attaches to the session, and I get the full Claude Code experience against my own infrastructure.
  6. My code never leaves my network. The only traffic going through Anthropic's servers is the LLM conversation itself.

Additional Context

Related issues:

  • #25570 - iOS App as Thin Client for Local Claude Code Instances (closest prior request, focused on iOS/LAN)
  • #15208 - SSH Connector for Claude Code for Web (SSH-based environment registration)
  • #24231 - Device-code OAuth flow for remote SSH access (auth pain point when using Tailscale + SSH today)
  • #24379 - Binding a default cloud environment per repository (per-repo environment config)

Tailscale's tsnet library could make integration straightforward, as it allows embedding a Tailscale node directly into a Go/Rust binary without requiring a system-level Tailscale install.

---

This feature request was drafted with the help of Claude Code.

View original on GitHub ↗

This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗