- API Keys: List, create, expire, and delete API keys (by prefix or ID).
- Nodes: List, get, register, delete, expire, rename, tag, and backfill IPs.
- Users: List, create, delete, and rename users.
- Policies: Get and update policy documents.
- Pre-Auth Keys: List, create, expire, and delete pre-auth keys.
- Customizable HTTP client, user agent, and logger support.
- Idiomatic Go API with context support.
- Go: 1.26+
- Headscale: v0.28.0+
go get github.com/hibare/headscale-client-gopackage main
import (
"context"
"fmt"
hsClient "github.com/hibare/headscale-client-go/v1/client"
"github.com/hibare/headscale-client-go/v1/nodes"
)
func main() {
// Create client
client, err := hsClient.NewClient(
"http://headscale:8080",
"your-api-key",
hsClient.ClientOptions{},
)
if err != nil {
panic(err)
}
// List nodes
nodeList, err := client.Nodes().List(context.Background(), nodes.NodeListFilter{})
if err != nil {
panic(err)
}
for _, node := range nodeList.Nodes {
fmt.Printf("Node: %s (%s)\n", node.Name, node.ID)
}
}| Resource | Description |
|---|---|
client.APIKeys() |
Manage API keys |
client.Nodes() |
Manage nodes |
client.Users() |
Manage users |
client.Policy() |
Manage policy |
client.PreAuthKeys() |
Manage pre-auth keys |
For full API documentation, see pkg.go.dev.
See the examples/ directory for more usage examples.
# Run tests
make test
# Run E2E tests (requires Docker)
make e2e-test
# Lint
golangci-lint run
# Format
go fmt ./...See CONTRIBUTING.md for contribution guidelines.
MIT License. See LICENSE for details.
