Releases: jedwards1230/labctl
Release 0.7.0
Install
go install github.com/jedwards1230/labctl@0.7.0Or download a static binary for your platform below.
What's Changed
- refactor!: move service commands under a
svcnamespace by @jedwards1230 in #14
Full Changelog: v0.6.0...v0.7.0
Release 0.6.0
Install
go install github.com/jedwards1230/labctl@0.6.0Or download a static binary for your platform below.
labctl v0.6.0
This release introduces MCP tool annotations, read-only/service filtering for MCP, a new labctl init command for manifest scaffolding, and a self-update command — alongside contributor documentation and build metadata improvements.
Features
labctl init — Manifest Scaffolding
A new init command bootstraps a starter manifest file in the current directory, making it easier to get started with labctl without writing configuration from scratch.
labctl initMCP Tool Annotations & Filtering
MCP tool exposure now supports annotations and two new filter modes:
- Read-only filter — restrict MCP tools to read-only operations, preventing any state-mutating calls through the MCP interface.
- Service filter — limit which services are exposed as MCP tools, giving finer control over what gets surfaced.
Configure these options in your manifest or via CLI flags (see labctl mcp --help for details).
labctl self-update
A new self-update command fetches and installs the latest release of labctl directly, removing the need to manually download new versions.
labctl self-updateHonest Build-Info Version Reporting
labctl version / build-info output now reports accurate version metadata, replacing placeholder values that appeared in previous builds.
Improvements
- Added
CONTRIBUTING.mdwith guidelines for contributors, covering development setup, branching conventions, and PR expectations.
Commits
- Merge pull request #13 from jedwards1230/feat/mcp-controls-and-manifest-init (9b5c3f1)
- Merge pull request #12 from jedwards1230/docs/add-contributing (f86a51f)
Full Changelog: v0.5.0...v0.6.0
Release 0.5.0
Install
go install github.com/jedwards1230/labctl@0.5.0Or download a static binary for your platform below.
labctl v0.5.0
This release adds a self-update command for keeping labctl current without manual downloads, and delivers a broad hardening pass covering secret scrubbing, exit-code correctness, spec caching, and a security vulnerability fix.
Features
Self-Update Command
labctl can now update itself in place:
labctl self-updateFetches the latest release and replaces the current binary. Build info (labctl version) now reports honest version metadata derived from the actual build rather than a placeholder.
Bug Fixes
- Secret scrubbing: Sensitive values are no longer leaked in logs or error output.
- Exit-code parity: Commands now return non-zero exit codes consistently on failure, making labctl more reliable in scripts and CI pipelines.
- Spec cache: API spec lookups are now cached correctly, reducing redundant network calls and fixing stale-spec edge cases.
- CVE bump: Updated a dependency with a known CVE.
Improvements
- Expanded test coverage across the hardening batch to back the above fixes.
labctl versionoutput now reflects true build-time version information.
Commits
- Merge pull request #11 from jedwards1230/feat/self-update (8c1ee3f)
- Merge pull request #10 from jedwards1230/feat/hardening-batch (5500604)
Full Changelog: v0.4.0...v0.5.0
Release 0.4.1
Install
go install github.com/jedwards1230/labctl@0.4.1Or download a static binary for your platform below.
What's Changed
- fix: review-round hardening batch (secret scrubbing, exit-code parity, spec cache, CVE bump, tests) by @jedwards1230 in #10
Full Changelog: v0.4.0...v0.4.1
Release 0.4.0
Install
go install github.com/jedwards1230/labctl@0.4.0Or download a static binary for your platform below.
labctl v0.4.0
This release focuses on reliability, correctness, and security hardening — introducing a secrets-provider interface, fixing several behavioral bugs, and significantly expanding test and CI coverage.
Features
Scheme-Dispatched Secrets Provider Interface
A new secret subsystem introduces a pluggable, scheme-dispatched interface for resolving secrets at runtime. The first provider targets 1Password, allowing manifest values to reference secrets via a URI scheme (e.g., op://vault/item/field) rather than embedding credentials in plain text. Additional providers can be registered following the same interface contract.
Breaking Changes
None in this release.
Bug Fixes
- Sensitive value redaction — secret material is now masked in log output and error messages, preventing accidental credential leakage.
- Dry-run mode — dry-run no longer executes side-effecting operations; behavior is now consistent across all command paths.
- Exit codes — error conditions that previously exited with code
0now return non-zero exit codes, making labctl safer to use in scripts and CI pipelines. - Context propagation —
context.Contextis now threaded correctly through async and batched operations, enabling proper cancellation and timeout handling. - Lint violations — a batch of static-analysis findings (shadowed variables, unchecked errors, improper error wrapping) have been resolved.
Improvements
- Expanded test coverage — new tests cover dispatch logic, paginated responses, JSON-RPC over WebSocket, and example manifests.
- golangci-lint in CI — linting is now enforced on every pull request via GitHub Actions, preventing regression of the correctness fixes above.
Commits
- Merge pull request #9 from jedwards1230/feat/test-ci-hardening (fb285fb)
- Merge pull request #8 from jedwards1230/feat/correctness-batch (29caed2)
Full Changelog: v0.3.0...v0.4.0
Release 0.3.0
Install
go install github.com/jedwards1230/labctl@0.3.0Or download a static binary for your platform below.
What's Changed
- feat(secret): scheme-dispatched secrets-provider interface with 1Password provider by @jedwards1230 in #7
Full Changelog: v0.2.0...v0.3.0
Release 0.2.0
Install
go install github.com/jedwards1230/labctl@0.2.0Or download a static binary for your platform below.
labctl v0.2.0
This release delivers a major expansion of labctl's capabilities, introducing JSON-RPC over WebSocket transport, OAuth2 authentication, OpenAPI-based service inference, composed pipelines, and a built-in MCP server — rounding out the core Phase 2 and Phase 3 feature set.
Features
JSON-RPC over WebSocket (jsonrpc-ws)
labctl now supports JSON-RPC 2.0 communication over WebSocket connections, enabling real-time, bidirectional interaction with homelab services that expose a WebSocket endpoint.
OAuth2 Authentication
Auth strategies now include OAuth2 support. Configure OAuth2 credentials in your service manifest to have labctl handle token acquisition and refresh automatically when calling protected APIs.
OpenAPI Inference
labctl can now inspect an OpenAPI specification and infer available operations, reducing the need for hand-written manifest entries for services that publish a spec. Point labctl at an OpenAPI document and it will derive callable commands automatically.
Composed Pipelines
Multiple service calls can now be chained into a composed pipeline, allowing the output of one step to feed into the next. Define pipeline stages in your manifest to orchestrate multi-step homelab workflows from a single command.
MCP Server
labctl now ships with an embedded MCP (Model Context Protocol) server, exposing registered service operations as MCP tools. This enables AI assistant integrations to invoke labctl-managed homelab services directly.
Improvements
Expanded Auth Test Coverage
Authentication strategies and CLI exit-code contracts are now covered by a dedicated test suite, improving reliability and making regressions easier to catch.
CI: actions/setup-go bumped to v6 (Node 24)
The CI pipeline now uses actions/setup-go@v6, aligning with the Node 24 runner baseline and ensuring consistent Go toolchain setup in automated builds.
Commits
- Merge pull request #5 from jedwards1230/feat/phase-2-3 (a5f2e74)
- Merge pull request #4 from jedwards1230/test/cli-auth-coverage (ca5c24f)
- Merge pull request #3 from jedwards1230/ci/setup-go-v6 (c40ad97)
Full Changelog: v0.1.0...v0.2.0
Release 0.1.1
Install
go install github.com/jedwards1230/labctl@0.1.1Or download a static binary for your platform below.
This release focuses on test coverage and CI/CD improvements with no user-facing changes.
Improvements
- Enhanced test coverage for authentication strategies and CLI exit-code contract to improve reliability
- Updated CI/CD pipeline to use actions/setup-go v6 with Node 24 support for faster and more reliable builds
Commits
- Merge pull request #4 from jedwards1230/test/cli-auth-coverage (ca5c24f)
- Merge pull request #3 from jedwards1230/ci/setup-go-v6 (c40ad97)
Full Changelog: v0.1.0...v0.1.1
Release 0.1.0
Install
go install github.com/jedwards1230/labctl@0.1.0Or download a static binary for your platform below.
labctl v0.1.0
Initial release of labctl, a manifest-driven CLI for homelab service APIs, introducing optional OpenTelemetry tracing support and automated CI tooling.
Features
Optional OpenTelemetry Tracing
labctl now supports optional distributed tracing via OpenTelemetry. When enabled, traces are emitted for CLI operations, making it easier to observe and debug interactions with homelab service APIs. Tracing is opt-in and can be configured without affecting normal CLI usage.
Improvements
AI-Powered PR Review Workflow
A GitHub Actions workflow has been added to automatically run AI-assisted code review on pull requests, helping maintain code quality as the project grows.
Commits
- Merge pull request #1 from jedwards1230/feat/otel (443c3c0)
- Merge branch 'main' into feat/otel (b4cb810)
- Merge pull request #2 from jedwards1230/feat/pr-review (ca8341b)
Full Changelog: 2c7c366...v0.1.0