Skip to main content
Latest · v1.2.0released yesterday

Get labctl

One binary with the web dashboard embedded. No Go toolchain, no Node, no build step — download it, verify it, and run the loop.

Check this before you download

Docker needs at least 4 CPUs and 8 GB of memory. labctl init runs a 3-node cluster plus the full platform stack; the 2 GB a fresh Docker VM ships with is not enough, and it fails as confusing TLS handshake timeout errors partway through. On macOS raise it in Docker Desktop → Resources, or start Colima with --cpu 4 --memory 8.

  • 4 CPUs
  • 8 GB memory
  • macOS · Linux · WSL2
Direct download

Pick your platform

Or use the scripted install below, which detects your OS and architecture and verifies the checksum for you.

Always verify what you downloaded.checksums.txt
Scripted install

Three steps to a running lab

1

Get the binary

shell
# Set the version you want, then run the block as-is.
VERSION=1.2.0
OS=$(uname -s | tr '[:upper:]' '[:lower:]')            # darwin | linux
ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')   # amd64 | arm64
BASE="https://github.com/sagar2395/snowopslabs/releases/download/v${VERSION}"

curl -fsSL "${BASE}/labctl_${VERSION}_${OS}_${ARCH}.tar.gz" -o labctl.tar.gz
curl -fsSL "${BASE}/checksums.txt" -o checksums.txt

# Verify before you trust it.
(command -v sha256sum >/dev/null && sha256sum -c checksums.txt --ignore-missing) \
  || shasum -a 256 -c checksums.txt --ignore-missing

tar xzf labctl.tar.gz labctl
sudo mv labctl /usr/local/bin/
labctl --version
2

Clone the repo

labctl runs scripts from scenarios/, platform/ and runtimes/ at runtime, so the release archive is not standalone. The binary just saves you installing Go and Node.

shell
git clone https://github.com/sagar2395/snowopslabs.git
cd snowopslabs
cp config/.env.example .env
3

Run the loop

shell
labctl doctor        # is your machine ready? fixes printed inline
labctl init          # cluster + platform stack
labctl scenario list
labctl ui            # dashboard at http://localhost:3939
Changelog

Release history

Every published release, newest first.

v1.2.0

Latest

Changelog

  • 38e1840e8d8034284ca2099bf216aa68c80eb306: Fixing backup restore and cost right sizing ( <>)
  • 23e75e5c4f7a4ddc4da75532279dc5d271d4b23e: Merge pull request #42 from sagar2395/claude/pr-main-issue-linking-9homur (@sagar2395)
  • 987516c290e222e24662c376c298444c2f78d42e: fix(ci): use portable date -r instead of stat -c for backup age (@claude)
View on GitHub

v1.1.0

A usability-focused release: the full "Autoscaling Under Load" UX audit remediation plus platform, observability, application, and lab-reset improvements — and the new SnowOps Labs brand. Each artifact below is the labctl CLI with the web UI embedded — one self-contained binary per platform.

Highlights

Applications

  • Application Details page — project overview, detected tech stack, and the real Dockerfile + Helm chart (with in-repo paths) so you can understand and tinker with how each app is built and deployed.
  • app deploy now imports the local image into k3d/kind (building it first if missing) before deploying — no more ImagePullBackOff on a fresh cluster.

Platform

  • Fixed the component Details view crashing ("Cannot read properties of null (reading 'length')") for most tools.
  • Install commands now resolve $NAMESPACE / $DOMAIN_SUFFIX / $SCRIPT_DIR / $VALUES_FILE inline and show a variables legend explaining every value (secrets included).
  • New "Configuring Grafana" guide (login, pre-provisioned datasources + UIDs, dashboard provisioning).

Observability

  • Application Request Metrics and Autoscaling Under Load dashboards now show data — fixed PromQL label/histogram bugs and pinned the Prometheus datasource UID.
  • Chaos Mesh dashboard reachable via a Traefik ingress at chaos.<domain> — no manual port-forward.
  • Live HPA state surfaced on the Apps view; app logs open correctly in Grafana Explore.

Scenarios

  • Scenarios that set up a platform tool (chaos-mesh, argocd, kyverno, cert-manager) now declare it as a prerequisite, so dependencies are listed and the platform "used in scenarios" links resolve.
  • Scenario detail modal renders Objectives, an applyable "how it's implemented" snippet section (paths shown from the repo root), and a checks table with in-UI Verify.
  • User-tunable scenario parameters (min/max replicas, thresholds), validated before apply.

Lab reset

  • New "Reset lab" button in the UI.
  • Reset now deactivates scenarios and incidents (both labctl lab reset and the top-level labctl reset), in proper order — no more stale "active" state against a fresh cluster.
  • Learning progress survives a lab reset and has its own separate reset control.

Brand & docs

  • New SnowOps Labs brand identity, logo, and README polish (badges, demo screenshots/GIFs).
  • Windows/WSL2 support noted in the README.

Install

Download the archive for your platform below (verify against checksums.txt), or follow the README Quickstart.

Full changelog: https://github.com/sagar2395/snowopslabs/compare/v1.0.0...v1.1.0

Changelog

  • 464a7d54a5176cd877448f2f62ecde93d7816964: Merge pull request #28 from sagar2395/claude/readme-demo-assets-sus0d5 (@sagar2395)
  • fb968230e2fe90343751cde753e7f69ad9a0fb3d: Merge pull request #29 from sagar2395/claude/readme-demo-assets-sus0d5 (@sagar2395)
  • 27be54ece7b1786b4c8fa8c1560106996c5abe7a: Merge pull request #34 from sagar2395/fix/autoscaling-audit-p0-p1 (@sagar2395)
  • e71cc9adafef51770f49d9e0a6fc9f2d1ae99c3e: feat(apps): add an application details page (Claude Opus 4.8 [email protected])
  • 9cf2a487e15ae6e5283688646f5e078d350b4ed7: feat(reset): UI lab reset, deactivate scenarios/incidents, separate learn reset (Claude Opus 4.8 [email protected])
  • 5a725d5f1e5fd11f2676f4d47080caa1d62b28d9: feat(ui): add SnowOps Labs brand identity (@sagar2395)
  • 99948aecb221a11484aab1b0c258ecf21cf35dea: fix(ci): deploy env-promotion's prerequisite app in the kind e2e (Claude Opus 4.8 [email protected])
  • cd0c6819902e08f91d2359d4950ced409d5b2f64: fix(observability): make app dashboards show data; fix Grafana/chaos UX (Claude Opus 4.8 [email protected])
  • 388635758860dcc04efa5ca786896d9af4c9cb78: fix(platform): declare self-installed deps, resolve install vars, reset ordering (Claude Opus 4.8 [email protected])
  • 5bf39aad9677921af8c75ec644d38f95e854ec29: fix(ui): stop platform detail crash on empty lists; root snippet paths (Claude Opus 4.8 [email protected])
  • 3880c84512b3b432ee907a8f233e5383a11edd8d: fix: Making changes during review ( <>)
  • cf08032d3e5f1149395dcce7d55aa8eedfc2e9a7: test(appdetail): raise coverage; fix errcheck on deferred Close (Claude Opus 4.8 [email protected])
  • bc852e075fd530466c76f96f30fc9316822272ff: test(ui): pass requestConfirm to Learn in tests (Claude Opus 4.8 [email protected])
View on GitHub

v1.0.0

Changelog

  • 410218c0299864ab1f5ef28b4706606f9cc8a24a: Fixing CI (Sagar Chhabra [email protected])
  • 99c013315b755c3f661e2c2fb4d0de3040962e58: Fixing bugs (Sagar Chhabra [email protected])
  • 41f64cc8ae0d8121f2a4aaf82534916d65e8afe4: Merge pull request #1 from sagar2395/fix/e2e-workflow-consistency (Sagar Chhabra [email protected])
  • 9b89e8fe8a592834a80c32fbaae065ee0929f3c1: Merge pull request #19 from sagar2395/claude/pr-6-stuck-workflows-a4zefv (Sagar Chhabra [email protected])
  • 60b268c24a0b93c2507ea98f54ff491a0fa2941f: Merge pull request #21 from sagar2395/claude/issue-7-0z1pp0 (Sagar Chhabra [email protected])
  • 4198500109a5bc21b51f534fe957504a8f4ae0cb: Merge pull request #22 from sagar2395/feature/update-gitignore (Sagar Chhabra [email protected])
  • b820bbc250bf7b442c4a9a49786c4d91ffd0b5ae: Merge pull request #23 from sagar2395/claude/issue-16-metrics-endpoint (Sagar Chhabra [email protected])
  • 91480c5c037c9e8f14c09d0b5075cf2b764dbed9: Merge pull request #24 from sagar2395/claude/issue-4-docker-resources (Sagar Chhabra [email protected])
  • 87fffdc6c1baf6c234a292d6360e96743381bdfc: Merge pull request #25 from sagar2395/feature/roadmap-implementation (Sagar Chhabra [email protected])
  • 108be8e3e705a97d4b12d27310a9eaea29cfed25: Merge pull request #26 from sagar2395/feature/modifying-docs (Sagar Chhabra [email protected])
  • 76aca35fdc47991c7c2d1041f87b71bc71ceb888: Merge pull request #27 from sagar2395/feature/release-fix (Sagar Chhabra [email protected])
  • 3c5a4b78acd08bcbfeb3b7988ea7bf56f4b6fec9: Merge pull request #6 from VedantMadane/fix/issue-3 (Sagar Chhabra [email protected])
  • 61631ce1871c2751c0b237199fafce995cb20173: Rebuilding UI and fixing bugs (Sagar Chhabra [email protected])
  • 594e07216eaf0349293fa98734aadb5e4ba91a53: SnowOps Labs — initial public release (Sagar Chhabra [email protected])
  • 206507d9fa2fb65d7c4ef246e09653512ae0f0a4: Updating gitignore (Sagar Chhabra [email protected])
  • 7beab4581659aab83e71b0ff94b5f2a00b02b4d6: Updating golreleaser (Sagar Chhabra [email protected])
  • d7f5e93b5c51104dd0b3cf35fd642623611b53c7: Working on the roadmap to add more features to this application (Sagar Chhabra [email protected])
  • 3c5f9c1f04788b8edd7f23c3578563fc3d4d1550: build: land the labctl binary at repo-root ./bin/labctl (#7) (Sagar Chhabra [email protected])
  • 9a5ba89a9fe5bd85c8618cf5b71fb0603fae4579: feat(doctor): warn when the Docker VM has < 4 CPU / 8 GB (#4) (Sagar Chhabra [email protected])
  • 0a2bd4a523015da653f914712cdc145608c240a1: feat(metrics): optional Prometheus /metrics endpoint (#16) (Sagar Chhabra [email protected])
  • b871ecc1ca61b1c1edd69bab1b5d21ad6a70cda2: feat: Modifying docs (Sagar Chhabra [email protected])
  • 970072f336c46d1bf4a376cb0d0e13069ed883b1: feature: Making environment consistent (Sagar Chhabra [email protected])
  • f6490ecaef048daa879f314611a6f3065434a7ec: fix: Drop stray echo-server namespace refs from chaos scenario manifests (Vedant Madane [email protected])
  • 3a2eb4fbb1f00161f83b86f91d0bdb455170aaf0: refactor: move Go/labctl source under src/, keep content at root (#7) (Sagar Chhabra [email protected])
View on GitHub