A feature-complete Web UI for Headscale
  • TypeScript 90.4%
  • Go 3.8%
  • Nix 3.4%
  • CSS 0.9%
  • Shell 0.9%
  • Other 0.6%
Find a file
2026-04-20 21:46:57 -04:00
.devcontainer feat: update nodejs 22 references to 24 2026-03-17 13:24:55 -04:00
.github docs: use cf_account_id 2026-04-11 14:56:46 -04:00
app fix(ui): correctly handle mobile breakpoints for the navbar 2026-04-20 21:46:57 -04:00
cmd feat: rebuild browser ssh from the ground up 2026-04-09 21:56:42 -04:00
docs docs: deploy stable and beta docs 2026-04-11 14:32:21 -04:00
drizzle feat: rebuild browser ssh from the ground up 2026-04-09 21:56:42 -04:00
internal feat: pull local endpoints/addresses from host info 2026-04-11 12:25:17 -04:00
nix chore: update nix pnpm deps hash 2026-04-11 01:02:59 +00:00
patches fix: patch tailscale to support a custom DERP port 2026-04-07 00:24:50 -04:00
public feat: rebuild browser ssh from the ground up 2026-04-09 21:56:42 -04:00
tests refactor: extract isNoExpiry utility for zero-time handling 2026-04-11 00:00:37 +01:00
.dockerignore chore: switch to build script 2025-10-19 14:09:56 -04:00
.gitignore fix: patch tailscale to support a custom DERP port 2026-04-07 00:24:50 -04:00
.npmrc docs: deploy stable and beta docs 2026-04-11 14:32:21 -04:00
.oxfmtrc.json feat: switch to oxc linting/formatting 2026-01-15 22:09:58 -05:00
.oxlintrc.json feat: switch to oxc linting/formatting 2026-01-15 22:09:58 -05:00
AGENTS.md chore: update agents file 2026-03-14 11:50:19 -04:00
build.sh fix: patch tailscale to support a custom DERP port 2026-04-07 00:24:50 -04:00
Caddyfile chore: add tooling for go wasm 2025-06-16 11:45:23 -04:00
CHANGELOG.md docs: fix changelog 2026-04-11 14:39:49 -04:00
compose.yaml chore: upgrade dev to 0.28 2026-02-08 11:11:56 -05:00
config.example.yaml feat: switch to a generalized api key config 2026-03-27 13:32:59 -04:00
Dockerfile fix: add patch command to docker build 2026-04-09 22:42:51 -04:00
drizzle.config.ts feat: cleanup removal of old ssh plexer and logic 2025-06-20 00:14:00 -04:00
flake.lock flake.lock: Update 2026-04-12 08:51:58 +00:00
flake.nix feat: update nodejs 22 references to 24 2026-03-17 13:24:55 -04:00
go.mod fix: upgrade to new tailscale go version to fix ssh 2025-09-27 12:10:15 -04:00
go.sum fix: upgrade to new tailscale go version to fix ssh 2025-09-27 12:10:15 -04:00
lefthook.yml fix: bruh 2026-01-15 22:16:49 -05:00
LICENSE chore: add license and readme again 2024-03-26 10:24:28 -04:00
mise.toml feat: upgrade to node 24 and drizzle 2026-03-17 13:22:48 -04:00
package.json fix: remove unnecessary remix-utils dependency 2026-04-10 21:01:07 -04:00
pnpm-lock.yaml feat: de-uglify the ACL editor 2026-04-10 21:00:52 -04:00
react-router.config.ts chore: update dependencies 2026-01-15 22:11:19 -05:00
README.md docs: new installation docs! 2025-10-16 21:03:40 -04:00
tsconfig.json docs: deploy stable and beta docs 2026-04-11 14:32:21 -04:00
vite.config.ts feat: upgrade to vite 8 stable 2026-03-17 13:41:47 -04:00
vitest.config.ts feat: replace openid-client with clean-room oidc system 2026-04-03 16:36:27 -04:00

Headplane

A feature-complete web UI for Headscale

Preview

Headscale is the de-facto self-hosted version of Tailscale, a popular Wireguard based VPN service. By default, it does not ship with a web UI, which is where Headplane comes in. Headplane is a feature-complete web UI for Headscale, allowing you to manage your nodes, networks, and ACLs with ease.

Headplane aims to replicate the functionality offered by the official Tailscale product and dashboard, being one of the most feature complete Headscale UIs available. These are some of the features that Headplane offers:

  • Machine management, including expiry, network routing, name, and owner management
  • Access Control List (ACL) and tagging configuration for ACL enforcement
  • Support for OpenID Connect (OIDC) as a login provider
  • The ability to edit DNS settings and automatically provision Headscale
  • Configurability for Headscale's settings

Deployment

Refer to the website for detailed installation instructions.

Versioning

Headplane uses semantic versioning for its releases (since v0.6.0). Pre-release builds are available under the next tag and get updated when a new release PR is opened and actively in testing.

Contributing

Headplane is an open-source project and contributions are welcome! If you have any suggestions, bug reports, or feature requests, please open an issue. Also refer to the contributor guidelines for more info.


ACLs Machine Management

Copyright (c) 2025 Aarnav Tale