Fork of tale/headplane (Heady). Web UI for the supported.systems headscale tailnet.
Find a file
2025-08-05 13:16:02 -04:00
.github feat: add matrix build for release 2025-06-24 12:06:23 -04:00
.zed style: format go code on precommit 2025-06-16 11:45:24 -04:00
app Implement path loading 2025-08-05 13:15:03 -04:00
assets docs: redo docs 2025-02-27 15:31:16 -05:00
cmd feat: build a debug-shell and distroless container 2025-06-24 10:56:43 -04:00
docs Update the configuration README 2025-08-05 13:15:03 -04:00
drizzle feat: cleanup removal of old ssh plexer and logic 2025-06-20 00:14:00 -04:00
internal feat: cleanup removal of old ssh plexer and logic 2025-06-20 00:14:00 -04:00
nix Copy drizzle as well 2025-08-05 13:16:02 -04:00
patches feat: upgrade to tailwindcss v4 2025-05-29 11:16:47 -04:00
public feat: add logo and favicon (#238) 2025-06-09 10:30:03 -04:00
tests Implement path loading 2025-08-05 13:15:03 -04:00
.dockerignore feat: add docker build 2024-03-26 10:10:34 -04:00
.envrc feat: add a nix flake (#132) 2025-03-18 00:31:37 -04:00
.gitignore Implement path loading 2025-08-05 13:15:03 -04:00
.npmrc feat: switch away from websocket to stdout messaging for agent 2025-05-25 11:02:19 -04:00
.tool-versions feat: build a debug-shell and distroless container 2025-06-24 10:56:43 -04:00
agent.Dockerfile feat: containerize agent 2025-01-15 10:17:30 +05:30
biome.json Implement path loading 2025-08-05 13:15:03 -04:00
Caddyfile chore: add tooling for go wasm 2025-06-16 11:45:23 -04:00
CHANGELOG.md chore: walk back on nonroot, its too much of a breaking change 2025-06-24 12:23:05 -04:00
compose.yaml chore: add tooling for go wasm 2025-06-16 11:45:23 -04:00
config.example.yaml feat: cleanup removal of old ssh plexer and logic 2025-06-20 00:14:00 -04:00
Dockerfile chore: walk back on nonroot, its too much of a breaking change 2025-06-24 12:23:05 -04:00
drizzle.config.ts feat: cleanup removal of old ssh plexer and logic 2025-06-20 00:14:00 -04:00
flake.lock chore: update flake.lock (#260) 2025-06-22 17:28:45 -04:00
flake.nix Maybe actually fix builds 2025-08-05 13:16:02 -04:00
go.mod fix: cleanup agent and add to ci 2025-06-16 11:45:25 -04:00
go.sum feat: add horrible barely-working go ipn wasm code 2025-06-16 11:45:23 -04:00
lefthook.yml style: format go code on precommit 2025-06-16 11:45:24 -04:00
LICENSE chore: add license and readme again 2024-03-26 10:24:28 -04:00
mise.toml feat: build a debug-shell and distroless container 2025-06-24 10:56:43 -04:00
package.json Implement path loading 2025-08-05 13:15:03 -04:00
pnpm-lock.yaml Implement path loading 2025-08-05 13:15:03 -04:00
react-router.config.ts feat: bundle node_modules into the server 2025-03-24 16:15:38 -04:00
README.md docs: mention versioning policy 2025-04-04 15:44:16 -04:00
tsconfig.json chore: switch to vite for server dev 2025-01-17 08:33:22 +00:00
vite.config.ts fix: basename should always be prefix??? 2025-07-10 11:30:23 -04:00
vitest.config.ts Implement path loading 2025-08-05 13:15:03 -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

Headplane runs as a server-based web-application, meaning you'll need a server to run it. It's available as a Docker image (recommended) or through a manual installation. There are 2 ways to deploy Headplane:

  • Integrated mode unlocks all the features of Headplane and is the most feature-complete deployment method. It communicates with Headscale directly.

  • Simple Mode

    Simple mode does not include the automatic management of DNS and Headplane settings, requiring manual editing and reloading when making changes.

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