No description
- TypeScript 100%
|
|
||
|---|---|---|
| .claude/skills/tailscale | ||
| .swamp/workflows | ||
| extensions/models | ||
| workflows/setup-tailscale | ||
| .gitignore | ||
| .swamp.yaml | ||
| CLAUDE.md | ||
| manifest.yaml | ||
| README.md | ||
@keeb/tailscale
Swamp extension for Tailscale installation and tailnet machine inventory.
Models
tailscale/node
Install and authenticate Tailscale on a remote Alpine host over SSH.
| Method | Description |
|---|---|
install |
Install Tailscale, authenticate with an auth key, and capture the tailscale IPv4 |
Global arguments: sshHost, sshUser (default root). Method arguments: authKey.
tailscale/net
Parse tailscale status --json into one resource per tailnet machine.
| Method | Description |
|---|---|
sync |
Parse tailscale status JSON and write a named resource per machine |
Each machine resource carries hostname, dnsName, tailscaleIp, online, os, lastSeen, and timestamp.
Workflows
| Workflow | Description |
|---|---|
setup-tailscale |
Install Tailscale and authenticate on a running VM |
Dependencies
- @keeb/ssh — SSH helpers (
lib/ssh.ts)
Install
swamp extension pull @keeb/tailscale
Usage
Install on a fresh VM, then sync the tailnet into swamp data so downstream models can look up IPs by hostname:
# Install + authenticate on a single VM
swamp model method run my-vm install --args authKey=tskey-auth-xxxx
# Sync the whole tailnet from local tailscale status
swamp model method run tailnet sync \
--args statusJson="$(tailscale status --json)"
License
MIT — see LICENSE.