Skip to main content

W'xOps Portal v0.4.0 — Darlane & wxops CLI

Xeus Nguyen
Platform Engineer

Darlane brings on-demand parallel debug pods to every deployed service — no scaffold changes, no kubectl juggling. Configure the pod through the portal's Promotion panel, then use the wxops CLI to browse the catalog, pull up the exact debug commands for any service, or stream local file changes directly into the running pod.

What's New

Darlane — Per-Environment Parallel Debug Pods (headline feature)

A new class of developer capability: ephemeral debug pods that run in parallel with the real workload, scoped to a single environment, and fully governed by the same GitOps pipeline as every other config change.

What a Darlane pod gives you

  • Scale up on demandreplicas: 0 means zero cost at rest; scale to 1 when you need it and back to 0 when done
  • Exec into your actual runtime — with the real env vars, secrets, and service mesh present (no local simulation)
  • File-sync from local — stream changes from your workstation directly into the pod volume; the pod's hot-reload picks them up without a redeploy
  • Mirror live traffic — via Mirrord; your local process receives real cluster traffic without re-routing production

Architecture: overlay-driven, not scaffold-time

Darlane config lives in the overlay kustomization.yaml as a JSON 6902 op: add patch targeting spec.parameters.darlane on the XTenantApp resource:

# Minimal patch written by the portal to overlays/dev/kustomization.yaml
- op: add
path: /spec/parameters/darlane
value:
enabled: true
replicas: 0
ttl: 4h

Dev overlays are committed directly to main. Staging and production overlays open a PR with the portal-managed label for platform-team review.

Promotion panel: Enable Darlane wizard

The Darlane button appears on each environment row once the overlay exists.

SettingNotes
ReplicasDefault 0 (scaled down at rest)
Start commandFree text + preset buttons (uvicorn, flask, air, node — all default port 8080)
File syncToggle + mount path + "Seed volume from pod image" checkbox
TTL1h / 2h / 4h (default) / 8h / 12h / 24h
Env overridesKey/value rows injected only into the Darlane pod — for feature flags
Traffic weight0–100% of ingress traffic routed to the pod (ingress-enabled apps only)
Sticky sessionCookie name, SameSite, Secure flag (enabled when trafficWeight > 0)
Header routingRoute a specific HTTP header to the pod; works with trafficWeight: 0
Production gateproductionOverride confirmation checkbox (managers and platform-team only)

Step 2 shows a diff-aware YAML preview labeled + added / ~ changed / − removed when reconfiguring an existing Darlane block.

Inline debug commands

When Darlane is enabled, the portal shows copy-paste commands:

# Exec
kubectl -n <namespace> exec -it deployment/<app>-darlane -- bash

# Port-forward
kubectl -n <namespace> port-forward deployment/<app>-darlane 8080:8080

# Traffic mirror (Mirrord)
mirrord exec --target deployment/<app>-darlane --target-namespace <namespace> -- <cmd>

# File sync (wxops CLI)
wxops darlane sync <app>
wxops darlane sync <app> --local ./src --remote /app/src

Deployment naming follows the XTenantApp composition convention: dev{appName}-darlane, staging{appName}-staging-darlane, production{appName}-production-darlane.

Permission model

EnvironmentWho can enable
devAny member of the owning team
staging{org}:Managers sub-group or platform-team
production{org}:Managers sub-group or platform-team

wxops CLI (headline feature)

A standalone terminal client for the portal — the same REST API as the browser, without opening a browser.

Installation

# Linux amd64
curl -L https://<portal-host>/api/v1/cli/download/linux/amd64 \
-o /usr/local/bin/wxops && chmod +x /usr/local/bin/wxops

# macOS arm64
curl -L https://<portal-host>/api/v1/cli/download/darwin/arm64 \
-o /usr/local/bin/wxops && chmod +x /usr/local/bin/wxops

# Or build locally from the repo root
make cli-install

Available targets: linux-amd64, linux-arm64, darwin-amd64, darwin-arm64.

Commands

wxops login — PKCE browser flow. Saves the session token to ~/.wxops/credentials.json. For CI, set WXOPS_PORTAL_URL + WXOPS_TOKEN env vars instead — WXOPS_TOKEN takes precedence over the credentials file.

wxops catalog list

wxops catalog list [--kind Component] [--lifecycle production]

Tabwriter output across all entity kinds. Filter by kind and/or lifecycle.

wxops catalog get <kind> <name>

Full details for a single entity — name, lifecycle, owner, type, description, source.

wxops debug <service> [--env dev|staging|production]

Resolves the entity, shows per-environment Darlane state, and prints ready-to-run kubectl, mirrord, and wxops darlane sync commands:

$ wxops debug payment-api

Darlane debug payment-api
Namespace tenant-wxops
Deployment payment-api-darlane
Lifecycle production

Darlane status
dev ✓ enabled
staging · overlay exists — Darlane not enabled
production — no overlay

wxops darlane sync <app>

Watches a local directory with fsnotify, debounces rapid changes, and streams a tar archive into the Darlane pod using kubectl exec … tar xf -.

FlagDefaultDescription
--local.Local directory to watch
--remote/appTarget path inside the pod
--envdevTarget environment
--excludeGlob patterns to ignore
--debounce300msWait after last change before syncing
--namespacederivedOverride the K8s namespace
--deploymentderivedOverride the deployment name

wxops version — prints wxops version v0.4.0.

CLI Download Card — Overview Dashboard

The portal Overview page now includes a compact CLI download card in the right-hand sticky column (below the Identity panel). It lists download links for all platform targets and links to the CLI documentation.

Upgrade Notes

No database migrations. No new required environment variables.

The wxops CLI binary is released alongside the portal image. Existing sessions are fully compatible — users who have already authenticated can re-login with v0.4.0 and the credentials file is reused.

Resources