Skip to content

Release v0.1.0#4

Merged
ceballosiker merged 82 commits into
mainfrom
develop
May 20, 2026
Merged

Release v0.1.0#4
ceballosiker merged 82 commits into
mainfrom
develop

Conversation

@ceballosiker
Copy link
Copy Markdown
Owner

v0.1.0 — first release

The first cut of exit-node: on-demand Tailscale exit nodes that rotate across GCP regions and keep pfSense's gateway IP in sync. Driven from a CLI for humans (exitnode) and an MCP stdio server for AI agents (exitnode-mcp).

What's in this release

Binaries

  • exitnode — cobra CLI with 8 subcommands: up / down / rotate / list / status / health / pfsense sync / cost
  • exitnode-mcp — stdio MCP server with all 10 tools from spec §11

Orchestration (internal/core)

  • Rotate state machine: mint → provision → wait → authorize → probe → cut over → verify → cleanup
  • pfSense-revert-on-failure guarantees: home network never loses its VPN
  • Named lifecycle ops (Start / Stop / Destroy) for the MCP layer
  • Idempotent Up, no-orphan cleanup, table-driven mocked tests

Adapters

  • internal/gcp — Compute Engine apiv1, Debian-12 base image, server-side filtered AggregatedList
  • internal/tailscale — official v2 API, OAuth client-credentials, ephemeral auth-key mint
  • internal/pfsense — community pfsense-api plugin REST adapter
  • internal/verifytailscale CLI + curl shellout probe

Distribution

  • scripts/install.sh — VM first-boot bootstrap fetched via GCP startup-script-url
  • Goreleaser packaging for linux/darwin × amd64/arm64 with tar.gz + SHA256 checksums
  • GitHub Actions CI: vet, golangci-lint v2.12, race tests, cross-build matrix

Examples + Docs

  • examples/config.toml — annotated reference config
  • examples/mcp.json — Claude Desktop / OpenClaw MCP snippet
  • README with prerequisites, install, configure, MCP setup, troubleshooting

Releasing

Merging this PR updates main. Tagging v0.1.0 afterwards fires .github/workflows/release.yml, which runs goreleaser to produce the platform archives + checksums attached to the GitHub release.

ceballosiker and others added 30 commits May 12, 2026 12:15
Plan 1: foundation & core (config, state, interfaces, rotate orchestrator)
ceballosiker and others added 29 commits May 20, 2026 20:57
Plan 2: real client implementations + install.sh + integration test
Plan 3: CLI + MCP server + CI + release pipeline
@ceballosiker ceballosiker merged commit 64fe417 into main May 20, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant