📜 Changelog
LaraKube CLI is evolving rapidly. We maintain a high-level changelog here for major architectural shifts, while specific technical commits can be tracked on GitHub.
🚀 Unified Ecosystem Updates​
June 2026: Two-Stage CI, Resource Defaults & Multi-Env Plex (CLI v0.20.0)​
A stability and developer-experience release — faster CI retries, Node.js 24 compatibility, and validated multi-environment Plex on a single node.
- Two-stage GitHub Actions pipeline: the generated
larakube-deploy-*.ymlworkflow is now split into abuildjob and a separatedeployjob (needs: build). A failed deploy (wrong manifest, missing secret) no longer re-runs the full Docker build — just re-run thedeployjob. The build job adds explicit Composer and Docker layer caching (actions/cache@v5,type=gha) for faster subsequent builds. - Node.js 24 action upgrades: all bundled GitHub Actions bumped to Node.js 24-compatible versions —
actions/checkout@v6,actions/cache@v5,actions/setup-node@v6,docker/login-action@v4,docker/build-push-action@v7,docker/setup-buildx-action@v4,azure/k8s-set-context@v4. Avoids the Node.js 20 deprecation warning enforced by GitHub from June 16, 2026 onwards. - Reduced default CPU request (
100m→50mper app pod): the scheduling floor for web, horizon, reverb, and queue pods is now 50m. On a 2 GB / 1 CPU node this allows staging and production (6 app pods total) plus a Plex Commons to co-exist within the node's CPU budget. The limit stays at1full core, so a pod can still burst to maximum CPU when available. Adjust per-env withlarakube resources. plex:resourcescommand: interactively tune memory limits and storage sizes for Plex Commons services (MariaDB, Redis, SeaweedFS, Meilisearch, MinIO) without re-runningplex:init. Shows a summary table, prompts for new values with k8s-quantity validation, re-applies the Commons manifest, and waits for the rollout. See Commons Resource Tuning.- Multi-environment Plex validated:
stagingandproductionof the same app now deploy as separate tenants on one Plex node. Tenant identifiers are environment-aware (my_appfor production,my_app_stagingfor staging) — each gets its own database, Redis logical DB (DB 0 / DB 1), and S3 bucket. Validated end-to-end via GitHub Actions on a $12 DigitalOcean VPS. See Two Environments, One Server. cloud:configure:ghahost sweep: the GHA configuration wizard now prompts for Reverb and SeaweedFS hosts (same aslarakube env) to ensureVITE_REVERB_HOSTis baked into the Docker image at build time. Previously, this prompt was absent fromcloud:configure:gha, causing WebSocket connections to break in production builds.- GHCR pull-secret fix:
cloud:configure:ghanow creates theghcr-loginKubernetes pull secret for projects using the default GHCR path (no explicit registry configured), not just those with an explicit registry entry. Previously, the default-GHCR path skipped pull-secret creation, causingImagePullBackOffon the first deploy.
June 2026: Local HTTPS Overhaul & .kube TLD (CLI v0.19.0)​
A comprehensive overhaul of the local HTTPS trust chain and local domain naming.
.kubeTLD migration: All local development domains now use.kubeinstead of.dev.test. Every project, service, and companion app gets a*.kubeaddress (your-app.kube,traefik.kube,console.kube,s3.project.kube,mailpit.kube,phpmyadmin.kube,redisinsight.kube,vite.your-app.kube, etc.). The old.dev.testaddresses are retired.larakube trust:check: New command that diagnoses the full local HTTPS trust chain end-to-end — CA files present in~/.larakube/certificates/, CA trusted in the system keychain, DNS resolving live for.kubedomains, system cert validity, and per-app cert validity. Returns exit code1if any issues are found; safe to use in scripts and CI.larakube trust:reset: New command that destroys and regenerates the local CA. Asks you to typeresetto confirm (or--forceto skip). Per-app certs regenerate automatically on the nextlarakube up.larakube trust:remove: Replaces the oldlarakube untrustcommand. Removes the LaraKube Local CA from the system trust store using SHA-1 fingerprints (macOS) or file paths (Linux/Windows).- Certificate path: The CA and all per-app certs now live under
~/.larakube/certificates/(previously~/.larakube/). - dnsmasq hardening (macOS): dnsmasq now runs as a root daemon (
sudo brew services) so it can bind port 53. Addslisten-address=127.0.0.1andbind-interfacesto avoid conflicts with OrbStack/Docker network bridges.trust:checkprobes DNS live rather than just checking file existence. - laravel-secrets local fix: Local secrets handling corrected for edge cases in the split
.envarchitecture. - Traefik server-side apply fix: Resolved a conflict when applying Traefik manifests with
kubectl apply --server-side.
June 2026: Air-Gapped Bundle Hardening (CLI v0.18.x)​
A production-hardening series for the offline enterprise delivery path. All changes are backwards-compatible — existing bundles and .larakube.json files are unaffected.
- Image tag isolation (v0.18.27): Local dev images and bundle images no longer share the
:latesttag.larakube upnow buildsapp:local;bundle:buildproducesapp:{env}-latest(e.g.app:airgap-latest). Kustomizeimages:rewrite blocks in each overlay enforce the split. Building a bundle on your laptop no longer crashes your running local pods. --skip-imagesflag (v0.18.28):bundle:install --skip-imagesre-runs the entire configuration wizard (hostname prompts, secret generation, TLS cert regeneration) without re-importing the Docker image tarballs. Turns a typo-correction from a minutes-long wait into a matter of seconds.--swap=<size>flag (v0.18.29):bundle:install --swap=1Gallocates swap space before k3s starts, preventing OOM crashes on 1 GB VPS instances. Usesfallocate+mkswap+swaponand persists the entry to/etc/fstab. Idempotent: skipped automatically if/swapfilealready exists.
See the full Air-Gapped Bundles guide for usage examples.
June 2026: Resource Limits & Hand-edit Safety (CLI v0.17.2)​
A stability and safety release. This introduces:
- Secret masking: Aggressive redaction of high-confidence token shapes in CLI logs.
- Sudo escapeshellarg: Enhanced security when wrapping commands in
sudo. - Manifest hand-edit advisory:
larakube healnow detects manual edits to.infrastructure/k8smanifests, warns you, and preserves them instead of overwriting them. - Per-component resource limits: The interactive
larakube resourcescommand lets you define CPU and memory bounds for your app pods (with fallback inheritance and redundancy pruning) to ensure stability.
June 2026: Digest-Pinned Deploys (CLI v0.17.1)​
A security hardening for remote deploys. The manual registry path now deploys the immutable image digest the registry assigned (repo@sha256:…) instead of a mutable :tag — a tag can be re-pushed to point at different bytes, a digest can't. GitHub Actions already pinned the digest; this brings larakube cloud:deploy to parity. (It falls back to the tag, with a warning, only if docker buildx can't resolve the digest.)
June 2026: Environment-First Cluster Ops & Multi-Node Storage (CLI v0.17.0)​
Two themes: the cluster:* commands stop making you memorize namespaces and contexts, and multi-node storage gets an honest, guided story — stateless by default, with a one-command path to externalize and an opt-in shared filesystem for the apps that truly need one.
- Environment-first
cluster:*:cluster:grant,cluster:revoke, andcluster:usersnow take an environment inside a project —larakube cluster:grant production --name lloyd— and target that env's namespace and its own cluster context automatically (a literal namespace still works standalone). Standalone, they prompt for a context instead of silently using whateverkubectlpoints at.cluster:users <env>now lists who has access; auditing a deploy SA's live RBAC rules moved behind--scope.cluster:grantalso auto-creates a missing namespace and gitignores the minted*.kubeconfig, andcontext:importbinds the imported context to the matching environment so teammates get the same env-first DX. See Team Access and Rotating & Revoking Credentials. - Multi-node storage, made honest: on
multi-node-ha, app pods run stateless (per-pod ephemeral storage) so they spread freely across nodes — state is externalized to object storage (S3/Spaces) and Redis/database. Newlarakube cloud:externalize <env>turns that into one guided step: it flips the env'sFILESYSTEM_DISK/SESSION_DRIVER/CACHE_STORE/QUEUE_CONNECTION, offers to join a Plex Commons for the S3 + Redis backends, and never clobbers Commons-owned credentials — andcloud:deploynow offers to run it instead of only warning. - Opt-in shared storage (experimental): apps that genuinely need a shared cross-node folder can set
sharedStorage: trueand runlarakube cloud:provision:nfsto install an in-cluster NFS provisioner (thelarakube-nfsReadWriteMany StorageClass). It's a soft single-point-of-failure (one NFS pod, while your app pods stay HA) and does not work on DOKS (the mount hangs) — prefer externalizing where you can. See Shared Storage. - Cloud connection split out of
.larakube.json: a project's infra coordinates (cluster context, server) now live in a gitignored.larakube.local.json, so the committed blueprint carries no cluster details. Plus a scheduler cloud-wait so CronJobs don't fire before managed/Commons services are reachable.
June 2026: Teammate RBAC & Credential Lifecycle (CLI v0.15.0)​
Cluster access for your team without giving anyone SSH to your server — plus the tools to audit, rotate, and revoke every credential, and a safety net for your kubeconfig.
- Teammate RBAC (cluster-native, no SSH):
larakube cluster:grant <namespace> --name lloydgives a teammate their own namespace-scoped kubeconfig — built on Kubernetes' built-inview/edit/adminroles (--read/--edit(default) /--admin). One person is one identity: granting them a second app just adds a binding, their kubeconfig never changes, and re-runninggrantwith a different flag upgrades/downgrades their role instantly. Before you grant an app, they can't even see it exists. They onboard with one command —larakube context:import lloyd.kubeconfig— and you remove them withcluster:revoke --name lloyd(one app, or off-board entirely). No SSH, no server login, nosudo— just scoped Kubernetes access. - Credential lifecycle:
cluster:userslists every deploy SA and teammate (and audits a namespace's live RBAC scope, so drift shows);cluster:revokeis the kill-switch; andcloud:configure:gha <env> --rotatekills a leaked CI token and re-issues a fresh one — CI keeps working, the leaked copy dies. See Rotating & Revoking Credentials. - Kubeconfig safety:
context:backupsnapshots your~/.kube/config(dated), andcontext:restorelets you pick one from a list — handy before anything that rewrites it (anorb reset, a cloud CLI, etc.). It also snapshots your current config before restoring, so a restore is itself reversible.
June 2026: Least-Privilege Deploys & Managed Clusters (CLI v0.14.0)​
The headline is security: deploys no longer ship your cluster-admin cert. Both the manual path and CI now deploy as a credential that can touch exactly one namespace — plus first-class managed-cluster (DOKS) support and real server hardening.
- Namespace-scoped deploy credentials:
larakube cloud:deployand the GitHub Actions workflow now deploy as a per-app, per-environmentdeployerServiceAccount locked to its own{app}-{env}namespace. Your admin kubeconfig never leaves your machine; CI gets a namespace-scoped, Secret-bound token. If a repo leaks, the blast radius is one namespace — not your whole cluster. See Surgical Credentials. Validated end-to-end on a single-node VPS via both manual deploy and GitHub Actions. - Managed Kubernetes (DOKS):
larakube cloud:provision:doksinstalls Traefik and returns the LoadBalancer IP. Clusters are now identified by their kube-context (cloud.context) — so DOKS/EKS/GKE/AKS all work, picked from your kubeconfig instead of typing an IP — alongside a per-environmentstorageClass. Tooling is wired; multi-node end-to-end validation is still in progress. - Server hardening:
cloud:provisionnow hardens the box — UFW default-deny firewall (allowing SSH/80/443/6443 + the k3s pod/service CIDRs), fail2ban, automatic security updates, key-only SSH, and a guarded disable-remote-root-login (only after thelarakubeuser is proven to work, so you can't lock yourself out). Newlarakube cloud:hardenre-applies all of it to an already-provisioned server. - Discoverable
cloud:configure:*:cloud:configure:base,:gha,:registry, and:usersnow show up inlarakube list(the barecloud:configurestill runs the full guided flow). The dead repo-clone-on-VPSserverstep was removed — both deploy paths ship a self-contained image. plex:joinservice picker: choose which Commons services to join (e.g. share Redis but keep MySQL self-hosted) instead of all-or-nothing.context:remove: cleanly drop a stale kube-context (and its cluster/user entries) after deleting a droplet;cloud:nukeoffers it on teardown.- Per-environment registry: configure GHCR or Docker Hub per environment — it drives both
cloud:deploy's registry push (for multi-node) and the generated GitHub Actions workflow. - Fixes: the scoped apply strips the cluster-scoped
Namespaceobject (the scoped SA owns only namespaced resources); corrected GitHub-expression rendering in the generated workflow; andcloud:provision/cloud:configureno longer accidentally clobber sibling commands.
June 2026: Local Dev Hardening (CLI v0.11.6 – v0.11.8)​
Stability fixes for the local development experience, addressing Vite HMR and test suite reliability.
- Fixed Vite HMR full-reload loops: MinIO temporary files were triggering constant full-reload messages. Added
watch.ignoredconfiguration to exclude.infrastructure/volume_datafrom Vite's file watcher. - Fixed hanging test suite: The
PortableCommandTestwas hanging when prompts ran in subprocesses. Tests now complete cleanly without user input (277 passing). - Cleaned volume_data from gitignore: Runtime data (MinIO temps, service databases) now excluded from git by default, preventing untracked file clutter.
June 2026: Split .env Architecture (CLI v0.11.3 – v0.11.5)​
Local development configuration now uses .env as the single source of truth, allowing config changes to take effect immediately without larakube up restarts.
- Split .env architecture: Service connection variables (DB_HOST, REDIS_PORT, etc.) now come via Kubernetes ConfigMap/Secret (environment-driven), while app config lives in
.envfor instant edits without cluster restarts. - Wayfinder keep-alive: The CLI no longer strips Wayfinder from
vite.configduring scaffolding; Wayfinder is now conditional onwayfinder()plugin presence instead. - WSL2 & local setup fixes: Improved k3s setup, host trust, and
/etc/hostsmanagement for WSL2 and Linux environments without flaky elevation prompts.
June 2026: Cloud Deploy Hardening (CLI v0.11.1 – v0.11.2)​
Shaking out the first real multi-app deploy onto a shared Commons. The Plex tier is now validated end-to-end on a single-node VPS via GitHub Actions — a React/Inertia app sharing MySQL + Redis + MinIO, on valid Let's Encrypt TLS with production-safe config. Multi-node (DOKS) remains the next validation.
- One guided
cloud:configure: the whole setup now runs in order from a single command — server + web host, an optional Commons join, then CI + secrets — asking the environment once. No more rememberingbase → server → plex:join → gha; the single-step sub-actions remain for surgical re-runs. plex:joinauto-heals: after marking the Commons services managed, it regenerates manifests itself, so a deploy never ships duplicate self-hosted pods next to the Commons.- Production-safe by default: cloud environments deploy with
APP_ENV=productionandAPP_DEBUG=falseinstead of inheriting the scaffold's local values — no more debug mode live on a public URL. A locked.env.<env>is still honoured. cluster:setupprefers native k3s (the lightest option) and defaults to it on Linux; k3d (k3s-in-Docker) is the macOS/Windows fallback, and Docker is only required for that path.- Fixes: the Wayfinder CI step now fires for any app that actually uses Wayfinder (it was gated on an unrelated feature, breaking React/Vue/Svelte builds);
gha:configureno longer crashes while uploading the kubeconfig; and the web-host prompt can't be skipped or left on a local.kubehost.
June 2026: The "Plex Commons" Release (CLI v0.11.0)​
Multiple apps can now share one set of backing services — the Commons — on a single node, each tenant fully isolated. This is the shoestring-hobbyist and agency tier of the Scaling Journey: reclaim the RAM wasted by duplicate data stacks without giving up per-app isolation.
- Shared Commons, isolated tenants: one set of services, where each app gets its own database + login, Redis logical DB, and S3 bucket — the same isolation model as several apps sharing one managed database.
- Pick your backends: the Commons runs any mix of a Postgres / MySQL / MariaDB database, Redis, Meilisearch, and S3 object storage (SeaweedFS or MinIO). MySQL/MariaDB and MinIO landed in this release alongside the original Postgres/Redis/SeaweedFS; the driver enums own each backend's image, port, and tenant-provisioning, so the Commons never drifts from the project defaults.
- Demand-driven & additive: each app's blueprint declares its drivers;
plex:joinprovisions only what that app needs and never disables a service another tenant still uses. - Commands:
plex:init,plex:join,plex:status,plex:leave,plex:remove,plex:destroy,plex:export.plex:statusworks inside or outside a project (it'll prompt for a cluster context, likeplex:init). - Honest scope: verified on a single-node VPS via manual
larakube cloud:deploy. GitHub-Actions-driven Plex deploys and multi-node clusters (DOKS) are on the roadmap but not yet validated.
May 2026: The "Any-Cluster Deployments" Release (CLI v0.9.0)​
Two themes: the per-environment blueprint matures, and generated overlays now drop into a managed Kubernetes cluster (EKS, GKE, AKS, DigitalOcean) without hand-editing — while the cheap single-VPS path stays exactly as it was.
- Per-environment deployment strategy: each environment sets its own
strategy(single-nodeormulti-node-ha);localis always single-node. App storage volumes (PVCs) moved into each environment's overlay so their access mode follows that env's strategy (ReadWriteOnce for single-node, ReadWriteMany for HA). - Cloud config moved into the environment: SSH connection details and teammate access now live under
environments[env].cloudinstead of a detached top-level map, so they can't drift from the environment they describe. Older blueprints migrate automatically on load. - Managed-Kubernetes overlay knobs (all optional; each defaults to today's output): a per-env
namespaceoverride (in-cluster service addresses follow it), an opt-inserviceAccount+ annotations for IRSA / Workload Identity, image-pull-secret control (omitImagePullSecretfor clusters that pull via the node role, e.g. ECR), and a rawingressAnnotationspassthrough for ALB certificate ARNs, security groups, and conditions. - Fixes:
larakube cloud:configure baseandusersno longer crash (they called methods that didn't exist); removed the deadproductionImagefield; corrected stale.larakube.ymlreferences (the config has long been.larakube.json).
Single-node and existing-blueprint output is unchanged (snapshot-verified) — this release is additive, with legacy cloud config migrating transparently.
May 2026: The "Portable Local Environment" Release (CLI v0.7 – v0.8)​
A CLI-free path for collaborators. larakube portable generates a self-contained larakube.sh wrapper so a teammate can run the project locally with just docker, kubectl, and jq — no LaraKube CLI binary install required.
- The wrapper covers the full lifecycle plus host / TLS / trust setup, so Vite HMR and Reverb WebSockets work over real
*.kubeURLs on a teammate's machine. - Leaner committed blueprint: transient, machine-specific fields (
isScaffolding,path) are now stripped from.larakube.jsonon save.
May 2026: The "Environment-Aware Generation" Release (CLI v0.6.0)​
Building on the per-environment schema, manifest generation now honors every environment in .larakube.json — not just the conventional local + production. Environment names became a soft contract: rename production to main, add a qa, and the only follow-up is larakube heal.
- Per-environment overlays: the engine renders a complete overlay for each cloud environment (its own namespace, ingress, hosts, and per-env feature set).
larakube env <name>now generates the new env's overlay from its own config instead of copying production, andlarakube healregenerates every environment. - Managed services fully removed where managed: marking a service
managedin an env now strips its Deployment/Service via a kustomize$patch: delete(local keeps running it), and its volume manifest is no longer written into that env at all — no more stray, unreferenced files. - Name-agnostic feature scoping: feature applicability is computed per env (
appliesToEnvironment) rather than a fixed env list. Common features (Horizon, Queues, Reverb, Scheduler) now correctly reach custom envs likestaging/qa; SSR applies to every cloud env; local-only tooling (Boost/AI/MCP/Mailpit) stays local. larakube heal --prune: removes generated manifests the blueprint no longer produces — stale volumes, overlays for dropped environments — while always preserving locked files. Opt-in; never automatic.- Smarter
larakube envprompts: the "managed externally" prompt now offers the project's full externalizable stack (database, cache, search, object storage), and per-service custom-host prompts are limited to genuinely client-facing endpoints (Reverb WebSocket, S3) so you're not pestered for admin consoles. - Per-service host correctness: each environment's ingress now routes to its own configured host, fixing cloud overlays that previously inherited the production domain.
Production and local manifest output are unchanged (snapshot-verified) — this release is additive for custom environments and managed services.
May 2026: The "Environment-Aware Commands" Release (CLI v0.5.0)​
Makes day-to-day commands understand environments as data, and gives every service its own optional hostname.
- Config-driven environment discovery: environment lists come solely from
.larakube.json. Rename or add environments freely — commands no longer reference hardcoded env names. - Per-service hosts: each environment can give a service its own subdomain (e.g. Reverb on
ws.example.com, S3 oncdn.example.com) independent of the web host, via a declarativeHasHostscontract. NewgetHost()/setHost()accessors. larakube envrewired to the per-environment schema (fixing a crash after v0.4.0); it now gathers ingress, managed services, web host, and per-service host overrides for new environments.- Sensible command defaults: observation commands (
k9s,kustomize,console) default tolocalwith no prompt; cloud/GitHub commands drop hardcodedproductionand prompt from the configured cloud environments instead. - Security fix: database/cache admin consoles no longer leak into non-local (cloud) ingress hosts — they remain local-only.
- Reliability:
larakube cloud:provisionis now idempotent, so re-running it while adding a second project to a node is safe.
May 2026: The "Per-Environment Schema" Release (CLI v0.4.0)​
This release reshapes .larakube.json so every environment owns its own configuration — ingress, managed services, hosts. It's the foundation for multi-environment deployments where local, staging, QA, and production may legitimately need different settings (e.g., projects deployed across isolated VPCs/networks where each env runs an entirely different ingress controller).
- Per-environment overrides:
environmentsis now a map keyed by env name. Each env carries its owningress,managed,hosts, plus optionaladdFeatures/excludeFeaturesfor the rare cases where a feature's natural environment scope needs to be overridden. - Enum-driven feature scoping:
LaravelFeature::defaultEnvironments()declares where each feature naturally applies —BOOST,AI,MCP,MAILPITdefault to local-only;SSRto production-only; everything else runs everywhere. The blueprint's top-levelfeatureslist stays lean and you don't repeat yourself per env. - Cleaner production manifests: dev-only feature env vars (
BOOST_*, etc.) no longer leak into production deployments — feature filtering is now env-aware end-to-end. - Folder-name guard:
larakube upandlarakube healnow fail fast with explicit rename instructions when the project folder name doesn't match thenamefield in.larakube.json(the common case: cloning a GitHub repo whose default folder name differs in capitalization). - MCP command hygiene:
make:mcp-app-resourceis now hidden fromlarakube list(it's a LaraKube CLI-internal scaffolding command, not a project-facing one). - Breaking blueprint changes (clean break, no compat layer — migrate manually):
ingressController(top-level) →environments.<env>.ingressmanagedServices(top-level, production-only) →environments.<env>.managedproductionHost→environments.production.hosts.webenvironments: ["local", "production"]→environments: {"local": {…}, "production": {…}}
- Migration: edit
.larakube.jsonto the new shape (see the environments-config-schema plan for the full target shape), then runlarakube healto regenerate manifests against the new schema. Existing K8s deployments stay running — no cluster-level migration needed.
May 2026: The "First-Class Testing" Release (CLI v0.3.0)​
This milestone made local Laravel testing inside Kubernetes feel native and safe, while shipping the foundation for production-grade SSR.
- Testing: New
larakube testcommand — defaults to in-memory SQLite regardless of project DB driver soRefreshDatabasecan never wipe dev data.--dbprovisions<app>_testingon MySQL/MariaDB/PostgreSQL (auto-persistsprovisionTestDbto.larakube.jsonon first use). - Safety Net:
larakube art test,larakube php artisan test,larakube php vendor/bin/pest,larakube exec vendor/bin/phpunit, etc. — all routes auto-delegate to the safetestflow. No more accidentally-wiped dev databases. - Hot Reload: New
larakube reloadrecycles Octane workers and gracefully drains Horizon/queues via aHasReloadCommandcontract. Newlarakube watchpairs with it — a pure-PHP polling watcher with no host dependencies. Paths configurable via newwatchPathsfield in.larakube.json. - SSR: New
ssrfeature flag generates a production-onlynode-ssrDeployment + Service for Inertia Server-Side Rendering. Local dev intentionally skipped (Inertia v3 has native Vite SSR; v2 local SSR adds latency for no benefit). - Self-Update: New
larakube updatecommand pulls the latest CLI release from GitHub. - Faster Pod Boots: Conditional install during
larakube up(vendor, node_modules, SSR bundle) means subsequent pod restarts boot in ~5s instead of ~2 min. - Cleaner Local Dev:
AUTORUN_LARAVEL_OPTIMIZEand cache flags disabled in local pods..envedits show up without restarting the pod; test-time env overrides actually take effect. - Vite 8 Fix: Node pod readiness probe under Vite 8 fixed via explicit
--host 0.0.0.0(Vite 8's bare--hostbound to IPv6 wildcard only). - Help Passthrough:
larakube art migrate --help(and 9 other proxies) now shows the inner command's help instead of LaraKube CLI's. - Breaking: The old
larakube test(HTTP smoke check) was renamed tolarakube smoke. The--with-dbflag was renamed to--db(old name kept as backward-compat alias).
May 2026: The "Cloud Pilot" Release​
This milestone transformed LaraKube CLI into a professional deployment suite, establishing the $6/mo Baseline and the Scaling Roadmap.
- Ecosystem: Established the $6/mo (1GB RAM) VPS as the official baseline for stable production Kubernetes.
- GitOps: Launched Cloud Pilot, an automated GHA-to-GHCR pipeline that offloads heavy builds to GitHub to prevent OOM on small servers.
- AI-Native: Refactored the core into a Dual-MCP architecture (Local Mechanic + Master Architect).
- Console: Migrated to Filament v5 for a professional "Control Plane" aesthetic and Saloon-powered API integration.
- UX: Added interactive Anchor Links and Share Buttons to the documentation for better developer collaboration.
🔗 Technical Release Notes​
For a line-by-line breakdown of every fix and feature, please follow our individual repository releases:
- LaraKube CLI Releases: Tracking the core PHP orchestration engine.
- LaraKube Console Releases: Updates to the visual Kubernetes Control Plane.
- LaraKube CLI Documentation: Ongoing improvements to guides and visual schematics.