Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
8802828
feat: implement shell rc management with block generation and testing
bartrosa Jul 15, 2026
c975a45
feat: add GPU detection functionality with unit tests
bartrosa Jul 15, 2026
50dc4f3
feat: add components for build tools, version control, and language p…
bartrosa Jul 15, 2026
0b15ae1
feat: introduce stack component management with orchestration and pre…
bartrosa Jul 15, 2026
84c1f50
feat: add Weaviate service integration
bartrosa Jul 15, 2026
07648b7
feat: add Valkey service integration
bartrosa Jul 15, 2026
c8237d6
feat: add Tempo service integration
bartrosa Jul 15, 2026
47b1997
feat: add multiple service integrations for homelab-cli
bartrosa Jul 15, 2026
c0c344d
feat: add service registration package for homelab-cli
bartrosa Jul 15, 2026
c7928d3
feat: add Redis service integration to homelab-cli
bartrosa Jul 15, 2026
7bda23b
feat: add RabbitMQ service integration to homelab-cli
bartrosa Jul 15, 2026
2600239
feat: add Qdrant service integration to homelab-cli
bartrosa Jul 15, 2026
aab1a14
feat: add Prometheus service integration to homelab-cli
bartrosa Jul 15, 2026
e9ef4d3
feat: add PostgreSQL service integration to homelab-cli
bartrosa Jul 15, 2026
cfd98ec
feat: add NATS service integration to homelab-cli
bartrosa Jul 15, 2026
c17f491
feat: add MySQL service integration to homelab-cli
bartrosa Jul 15, 2026
fbdd36b
feat: add MongoDB service integration to homelab-cli
bartrosa Jul 15, 2026
4dd58ea
feat: add MinIO service integration to homelab-cli
bartrosa Jul 15, 2026
6725df0
feat: add Loki service integration to homelab-cli
bartrosa Jul 15, 2026
e63b527
feat: add Grafana service integration to homelab-cli
bartrosa Jul 15, 2026
62ec827
feat: add ClickHouse service integration to homelab-cli
bartrosa Jul 15, 2026
2ecb82b
feat: introduce services management for homelab-cli
bartrosa Jul 15, 2026
4d0a00d
feat: implement interactive prompting system for service initialization
bartrosa Jul 15, 2026
443442c
feat: update configuration structure for services and stack management
bartrosa Jul 15, 2026
df4d1b1
feat: enhance CLI commands for data and observability services
bartrosa Jul 15, 2026
c1d4e11
refactor: replace toolchain command with stack command in CLI
bartrosa Jul 15, 2026
edb027b
chore: update install script version in usage instructions
bartrosa Jul 15, 2026
984f0a9
feat: enhance README and documentation for v0.2.0 provisioning release
bartrosa Jul 15, 2026
f7befc8
feat: add integration test command to Makefile
bartrosa Jul 15, 2026
e00cfe6
chore: update dependencies in go.mod and go.sum
bartrosa Jul 15, 2026
996e42f
chore: update maintainer information in goreleaser configuration
bartrosa Jul 15, 2026
1306124
chore: update CHANGELOG and CONTRIBUTING documentation for v0.2.0 rel…
bartrosa Jul 15, 2026
fa0f86b
feat: add Arcadedb and Nebulagraph service templates with configurati…
bartrosa Jul 15, 2026
2e63306
feat: register Arcadedb and Nebulagraph services in the registration …
bartrosa Jul 15, 2026
3b4fb4b
feat: implement NebulaGraph service with configuration and testing
bartrosa Jul 15, 2026
090febd
feat: implement ArcadeDB service with configuration and testing
bartrosa Jul 15, 2026
39aca9a
feat: add network exposure handling and service presets
bartrosa Jul 15, 2026
44b6d04
feat: enhance vector command descriptions and service listing
bartrosa Jul 15, 2026
b0808e8
docs: add support for graph databases and related presets
bartrosa Jul 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ nfpms:
- id: lab
builds:
- lab
maintainer: "Your Name <you@example.com>"
maintainer: "Bart Rosa <contact@bartrosa.dev>"
description: "Homelab automation CLI from bare metal to GPU-served LLMs"
license: Apache-2.0
bindir: /usr/bin
Expand Down
50 changes: 50 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,56 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Added — v0.3.0 "Developer Environment"

- **`lab stack`** (rename from `lab toolchain`; aliases `toolchain`, `tc`): component registry, dependency-ordered install, presets, GPU detection, shell PATH management (`shellrc`).
- **26 stack components** across language, build-tool, container, GPU, VCS, package-manager, and database-embedded categories (Python/Node/Go/Rust/Scala/Kotlin, uv, CUDA/ROCm, DuckDB/SQLite, Docker/Podman, …). No Ruby, no .NET.
- **`lab services` framework**: compose orchestrator, shared `homelab-net`, embedded templates, stdin prompt engine, secret handling, service presets.
- **15 services**: postgres (pgvector/postgis/timescaledb plugins), mysql/mariadb, redis, valkey, mongodb, clickhouse, rabbitmq, nats, qdrant, weaviate, prometheus, grafana (auto-provisioned datasources), loki, tempo, minio.
- **High-level wrappers**: `lab obs up/down`, `lab vector up`, `lab data up`.
- **Config**: `stack.*` and extended `services.*` (runtime `auto`, instances, presets).
- **Docs**: [`docs/services.md`](docs/services.md), updated README/commands/configuration.
- **Tests**: stack orchestrator/presets/shellrc/gpu, services orchestrator/templates/postgres, prompt stdin.

### Changed

- `lab toolchain` → `lab stack` (alias preserved).
- `services.runtime` default: `auto` (prefer docker on Ubuntu, podman on Silverblue).

### Added — Graph Databases

- Service category: **`graph`**
- **ArcadeDB** (Apache 2.0) — multi-model graph + document + KV + vector, single container, Studio UI, Cypher/Gremlin/SQL, optional protocol plugins
- **NebulaGraph** (Apache 2.0) — 4-container compose (metad + storaged + graphd + studio), nGQL, automated post-init for host registration and password setup
- Service presets: **`graphrag`** (arcadedb + qdrant + minio + postgres), **`graph-lab`** (arcadedb + nebulagraph)
- **`lab vector`** accepts graph databases with built-in vector search (forwards to `lab services up`)
- Optional **`PostUpper`** interface for post-compose setup (NebulaGraph)
- Docs: graph database catalog, licensing rationale, embedded graph alternatives (Kuzu / LadybugDB)

## [0.2.0] - TBD

**Provisioning Release** — distribute `lab`, create verified bootable USB installers, and bootstrap Ubuntu or Fedora Silverblue on a fresh OS.

Implementation landed iteratively in v0.1.0–v0.1.1; v0.2.0 is the documented stable milestone for the full workflow.

### Added

- Release plumbing: GoReleaser `.tar.gz`, `.deb`, `.rpm`, and `checksums.txt` for linux/darwin amd64/arm64.
- `scripts/install.sh` and `scripts/uninstall.sh` — curl install with SHA256 verification, prefix detection, optional PATH setup.
- `lab self-update` with `--check`, `--version`, `--pre-release`, and `--yes` (`internal/updater`).
- `lab iso list|download|disks|images|write` — ISO catalog, verified downloads (SHA256 + GPG), USB disk listing, safe `dd` writes on Linux (`internal/iso`).
- `lab bootstrap essentials` — idempotent baseline for Ubuntu and Fedora Silverblue (`internal/bootstrap`, `internal/pkgmgr`: apt, rpm-ostree, detect).
- Testable process runner: `internal/exec`.
- Provisioning guide: [`docs/provisioning.md`](docs/provisioning.md).

### Changed

- README: v0.2.0 provisioning walkthrough, install/upgrade docs, full command status table.
- `docs/commands.md`: ISO interactive write, `bootstrap essentials` flags, `self-update` reference.
- `docs/architecture.md`: adapter model, `internal/iso` and `internal/updater` packages.
- Terminal UX (carried from v0.1.1): progress bars, GPG key import, theme-adaptive output, interactive ISO picker.
- CI: GitHub Actions Node 24 runtime; golangci-lint v2.12.2 for Go 1.25.

## [0.1.1] - 2026-07-15

### Changed
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
- `make`, `git`.
- Optional: `goreleaser` locally if you are cutting releases.

`make ci` downloads `golangci-lint` and formatters via `go run` pins — no global install required.
`make ci` downloads **golangci-lint v2.12.2** and formatters via `go run` pins — no global install required.

## Getting started

Expand Down
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ install: ## go install with ldflags
test: ## Run tests
go test ./... -race -cover

test-integration: ## Run compose integration tests (not in CI)
go test ./... -tags=integration -cover

lint: ## Run golangci-lint
go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.12.2 run

Expand Down
Loading