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-serverrepackaged 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 remotevscode-serverover 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.jsonworkspaces; 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)
- ★ Kasm Workspaces — containerized Linux desktops + browsers + apps; community + paid editions. Useful when "I need Firefox + VS Code + a Postgres GUI in a browser tab."
- Apache Guacamole — clientless VNC / RDP / SSH gateway in a browser.
- Selkies / WebRTC desktops — newer, GPU-accelerated remote desktop in browser.
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
.ipynbsupport — code-server / OpenVSCode Server both render notebooks fine.
Auth in front of these
- ★ Tailscale + Tailscale SSH — simplest.
code-serverreachable 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 extensions —
code-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.