Skip to main content
Latest · v1.2.0released 3 days ago

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 noreply@anthropic.com)
  • 9cf2a487e15ae6e5283688646f5e078d350b4ed7: feat(reset): UI lab reset, deactivate scenarios/incidents, separate learn reset (Claude Opus 4.8 noreply@anthropic.com)
  • 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 noreply@anthropic.com)
  • cd0c6819902e08f91d2359d4950ced409d5b2f64: fix(observability): make app dashboards show data; fix Grafana/chaos UX (Claude Opus 4.8 noreply@anthropic.com)
  • 388635758860dcc04efa5ca786896d9af4c9cb78: fix(platform): declare self-installed deps, resolve install vars, reset ordering (Claude Opus 4.8 noreply@anthropic.com)
  • 5bf39aad9677921af8c75ec644d38f95e854ec29: fix(ui): stop platform detail crash on empty lists; root snippet paths (Claude Opus 4.8 noreply@anthropic.com)
  • 3880c84512b3b432ee907a8f233e5383a11edd8d: fix: Making changes during review ( <>)
  • cf08032d3e5f1149395dcce7d55aa8eedfc2e9a7: test(appdetail): raise coverage; fix errcheck on deferred Close (Claude Opus 4.8 noreply@anthropic.com)
  • bc852e075fd530466c76f96f30fc9316822272ff: test(ui): pass requestConfirm to Learn in tests (Claude Opus 4.8 noreply@anthropic.com)
View on GitHub

v1.0.0

Changelog

View on GitHub

The incident field notes

One real Kubernetes failure a week — the symptom, the commands that found it, and the fix. Written from actual lab runs, not from memory.

Signups aren't open yet — set NEXT_PUBLIC_NEWSLETTER_ENDPOINT to the Kit form endpoint to switch this on.

You'll get the Kubernetes Incident Response Field Guide, plus occasional emails about new scenarios, posts and paid offerings such as courses and workshops. Unsubscribe any time.