Connectivity testing tool for the Anvil homelab
- Go 98.6%
- Makefile 1.4%
|
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
|
||
|---|---|---|
| .planning | ||
| cmd/canyouhearme | ||
| deploy | ||
| internal | ||
| .gitignore | ||
| .woodpecker.yml | ||
| AGENTS.md | ||
| canyouhearme.toml | ||
| go.mod | ||
| go.sum | ||
| Makefile | ||
| README.md | ||
canyouhearme
Connectivity testing tool for the Anvil homelab. Runs on the metal hosts themselves and asks: from this host right now, what can I reach, and via what path?
Checks
| Check | What it tests |
|---|---|
| TCP | Raw network reachability to each host's IPs (port 22) |
| SSH | SSH daemon available on port 22 |
| HTTP | Service endpoints responding with 2xx/3xx |
| DNS | Domain names for all services resolve |
| Mesh | All 8 Tailscale nodes reachable via 100.64.x.x |
| Trace | Network path via ICMP traceroute (planned) |
Usage
canyouhearme # full check
canyouhearme --quick # one TCP + one HTTP per host
canyouhearme --hosts amber,brick # specific hosts
canyouhearme --checks tcp,ssh # specific checks
canyouhearme --format json # machine-readable output
canyouhearme --verbose # per-path detail
Metrics
Writes to node_exporter's textfile collector (matching rcheck/dedup pattern). Default: /var/lib/node_exporter/textfile_collector/canyouhearme.prom.
| Metric | Labels |
|---|---|
canyouhearme_check_up |
host, check, path |
canyouhearme_check_duration_secs |
host, check, path |
canyouhearme_tailscale_available |
— |
canyouhearme_mesh_peers_up |
— |
canyouhearme_trace_hops |
target_host, path |
canyouhearme_trace_final_rtt_ms |
target_host, path |
Override directory: --metrics-dir /custom/path or CANYOUHEARME_METRICS_DIR.
Build
make build # CGO_ENABLED=0 static binary
make cross # linux/amd64, linux/arm64, darwin/arm64
make test # go test ./...
make lint # go vet + gofmt
Config
Built-in inventory covers all 8 Anvil hosts. No config file required. Override via TOML at /etc/canyouhearme/canyouhearme.toml or via flags and env vars. See .planning/SPEC.md for full details.