Customer-facing demo stack for an AiOps mitigation loop:
- Run deterministic sequence (
code-two/run) - Persist decision artifacts (
decision-log.jsonl) - Expose decision status over HTTP (
code-two/demo-api) - Publish the API securely via Cloudflare Tunnel + DNS
- .NET SDK 9+
kubectl(optional for Kubernetes portion)cloudflared(for public DNS exposure)
From repo root:
scripts/demo/run-demo-sequence.shThis writes decision events to:
code-two/run/logs/decision-log.jsonl
In a second shell, run the API:
scripts/demo/run-demo-api.shAPI endpoints:
GET /healthGET /api/statusGET /api/decisions?limit=25
Default local URL:
http://127.0.0.1:8787/api/status
- Authenticate
cloudflaredonce:
cloudflared tunnel login- Create/update tunnel config and DNS route:
scripts/cloudflare/setup-tunnel.sh bunnyhop-demo bunnyhop.work http://127.0.0.1:8787- Run the tunnel:
scripts/cloudflare/run-tunnel.sh bunnyhop-demoYour DNS hostname (bunnyhop.work) will route to the local demo API while the tunnel is running.
Bring up the monitoring stack in your minikube cluster:
scripts/demo/setup-monitoring.shIn another shell, run the demo API so Prometheus can scrape decision metrics:
scripts/demo/run-demo-api.shThen open Grafana/Prometheus and Kubernetes Dashboard:
scripts/demo/open-monitoring.shGrafana dashboard included: bunnyhop aiops overview
Grafana login: admin / bunnyhop
Override runtime behavior without editing XML:
AIOPS_LIFETIME=2 AIOPS_DURATION=3000 AIOPS_MATRIXLOOPS=10000 scripts/demo/run-demo-sequence.shOverride log location:
AIOPS_DECISION_LOG=/tmp/decision-log.jsonl scripts/demo/run-demo-sequence.shOriginal planning and delivery docs remain in:
PRODUCT_DEMO_PLAN.mdDEMO_RUNBOOK.md