Tooling

Self-Hosted Browser-Based IDEs

code-server, OpenVSCode Server, Coder, Gitpod self-host — VS Code in your browser, on your hardware.

A category that exists because Codespaces is great but not free forever, and sometimes you want to code from an iPad or a borrowed laptop. For broader reproducible local dev see Dev Environments. For the AI-coding side see Self-Hosted AI & LLMs (Continue, Tabby).

Single-server VS Code in a browser

  • code-server (Coder) — VS Code in a browser, served by a single binary. Mature, widely deployed, works on Pi / NAS / cloud VM. The default for "give me VS Code at code.example.com."
  • OpenVSCode Server (Gitpod) — Microsoft's official vscode-server repackaged for self-host; closer-to-upstream VS Code than code-server in some areas.
  • Microsoft code tunnel — built into VS Code; lets you reach a remote vscode-server over a Microsoft tunnel. Free, but routes through Microsoft.
  • Eclipse Theia — VS Code-fork-shape framework you can build a custom cloud IDE on top of. Heavier; for product teams, not end users.

Multi-user / dev-environment platforms

  • Coder (the platform, not code-server) — Terraform-defined dev environments per-developer; spins up VMs / containers / k8s pods on demand; integrates with code-server, JetBrains Gateway, JupyterLab. The serious self-hosted Codespaces.
  • Gitpod self-hosted (Gitpod Enterprise) — was OSS, now commercial-only for self-host. Gitpod Cloud is fine; if you must self-host, Coder is the OSS path.
  • Daytona — open-source dev environment manager; declarative devcontainer.json workspaces; self-host-friendly.
  • DevPod (Loft Labs) — open-source client-only Codespaces alternative; spins workspaces on any cloud or local Docker.

Browser-based JetBrains

  • Projector — JetBrains' own browser frontend (legacy); replaced by:
  • JetBrains Gateway + Remote Development — current; Gateway desktop client connects to a remote IDE process; not pure-browser but as close as JetBrains gets.
  • Coder integrates JetBrains Gateway natively if your team is mixed VS Code + JetBrains.

Linux-desktop-in-a-browser (broader than IDE)

Notebook-style adjacent

  • JupyterHub — multi-user Jupyter; the canonical "notebooks for a team" self-host. Coder + Jupyter is a common combo.
  • Marimo — reactive Python notebooks; can be served. See Notebooks.
  • VS Code's .ipynb support — code-server / OpenVSCode Server both render notebooks fine.

Auth in front of these

  • Tailscale + Tailscale SSH — simplest. code-server reachable only over your tailnet.
  • Cloudflare Access / Pomerium / Authelia / Authentik — when you need to share with people who aren't on your tailnet.
  • Built-in password — code-server has one; do not expose it on the public internet without an auth proxy in front, even so.

Patterns to adopt

  • One container per project for code-server. Mount the workspace; pin tools via mise / Devbox; bake extensions into the image.
  • Persistent home volume — extensions, settings, history live in $HOME/.local/share/code-server.
  • Resource limits — code-server happily eats RAM with TypeScript; cap it.
  • Tailscale Funnel for sharing with teammates without opening ports.
  • Pre-installed extensionscode-server --install-extension ms-python.python ... in the Dockerfile.
  • Backups of the workspace volume — your in-progress work lives there.

Pick this if…

  • Default "VS Code at a URL": code-server.
  • Closer-to-upstream VS Code: OpenVSCode Server.
  • Per-developer ephemeral environments: Coder (platform) or Daytona.
  • Client-side launcher / no central server: DevPod.
  • Browser-Linux-desktop, not just IDE: Kasm Workspaces.
  • VNC / RDP / SSH bastion in browser: Apache Guacamole.
  • Notebook team: JupyterHub.
  • Don't want to run any of this: GitHub Codespaces or Gitpod Cloud.

On this page