Skip to content

Streamlit — ADEN Dashboard Runtime

Streamlit serves auto-generated dashboards produced by the ADEN (AKKO Data-Engine Native) pipeline. When a user asks a natural language question, ADEN generates SQL, executes it, and produces a Streamlit dashboard — this service renders those dashboards in the browser.

Architecture

ADEN Pipeline
   |
   | writes .py + data to PVC
   |
+--v-------------------+
|  akko-aden-reports   |
|  (shared PVC)        |
+--+-------------------+
   |
+--v-----------+
|  Streamlit   |
|  (:8501)     |
|  serves .py  |
+--------------+
  • ADEN writes generated Streamlit .py files and data to the shared akko-aden-reports PVC
  • Streamlit mounts this PVC read-only and serves the dashboards
  • Prometheus scrapes /metrics via ServiceMonitor

URLs

Mode URL
Kubernetes (k3d) https://reports.<domain>

Configuration (Helm values)

akko-streamlit:
  enabled: true
  image:
    repository: localhost:5050/akko-streamlit
    tag: "2026.04"
  replicas: 1
  service:
    port: 8501
  reportsPvc: "akko-aden-reports"    # Must match akko-aden.reports.pvcName
  ingress:
    host: "reports.akko.local"
  serviceMonitor:
    enabled: true
    interval: 30s
  resources:
    requests:
      cpu: 50m
      memory: 128Mi
    limits:
      cpu: 500m
      memory: 512Mi

Health Check

Streamlit responds to HTTP requests on port 8501:

livenessProbe:
  httpGet:
    path: /healthz
    port: 8501
  initialDelaySeconds: 10
  periodSeconds: 30
readinessProbe:
  httpGet:
    path: /healthz
    port: 8501
  initialDelaySeconds: 5
  periodSeconds: 10

RBAC (who can access)

Streamlit dashboards are served through the ingress and protected by OAuth2-Proxy (ForwardAuth middleware). Users must be authenticated via Keycloak SSO.

For the ShinyProxy multi-tenant setup (recommended for production), each user gets an isolated Streamlit pod — see the ShinyProxy documentation.


Key Features

Feature Description
ADEN integration Auto-renders dashboards generated by the NL-to-SQL pipeline
Shared PVC Reads dashboards from the akko-aden-reports volume
Prometheus metrics ServiceMonitor scrapes /metrics on port 8501
Lightweight 128 Mi RAM base, scales per dashboard complexity

Resource Requirements

Component Minimum RAM Recommended
Streamlit 128 Mi 512 Mi

Troubleshooting

Dashboard Not Found

Symptoms: Accessing a dashboard URL returns a 404 or blank page.

Cause: The ADEN pipeline has not written the dashboard file to the PVC, or the PVC is not mounted correctly.

Solution:

# Check that the PVC exists and is bound
kubectl get pvc -n akko akko-aden-reports

# List files in the reports PVC
kubectl exec -n akko deploy/akko-akko-streamlit -- ls -la /reports/

# Check Streamlit logs
kubectl logs -n akko deploy/akko-akko-streamlit --tail=50

Streamlit Pod CrashLoopBackOff

Symptoms: The Streamlit pod restarts repeatedly.

Cause: Missing Python dependencies in the Streamlit image, or a generated dashboard script has a syntax error.

Solution:

# Check pod logs for the error
kubectl logs -n akko deploy/akko-akko-streamlit --tail=100

# Verify the image has the required dependencies
kubectl describe pod -n akko -l app.kubernetes.io/name=akko-streamlit | grep Image