Skip to content

Deployment modes — A / B / C

AKKO ships three installable shapes from a single repository. Pick the one that matches your customer or environment.

Mode A — AKKO Pro Mode B — ADEN standalone Mode C — AKKO Free
Chart helm/akko/ helm/aden/ helm/akko/
ADEN bundled only ADEN disabled
Trino / OpenMetadata / Keycloak bundled BYO bundled
Cockpit full multi-page UI none — reports.<domain> only full UI minus ADEN page
Disk ~3 GB ~400 MB ~2.6 GB
Memory 16 GB+ 4 GB+ 14 GB+
Use case full data platform "ADEN as add-on" for existing infra AKKO without the AI tier

Mode A — AKKO Pro (default)

Everything bundled. Installs in one command.

helm install akko helm/akko/ -n akko --create-namespace \
  -f helm/examples/values-dev.yaml \
  -f helm/examples/values-domain.yaml \
  -f helm/examples/values-dev-secrets.yaml \
  --set-file akko-keycloak.realm.data=helm/examples/realm-domain.json
flowchart LR
  subgraph akko[akko namespace]
    Cockpit -->|/api/cockpit/aden/| ADEN
    ADEN -->|HTTP| Trino
    ADEN -->|HTTP| OpenMetadata
    ADEN -->|HTTP| LiteLLM
    LiteLLM --> Ollama
    ADEN -->|JDBC| Postgres[(akko-postgresql)]
    ADEN -->|/v1/data/akko/aden/| OPA
    ADEN -- writes --> PVC[(aden-reports PVC)]
    Streamlit -- reads ro --> PVC
    ShinyProxy -- spawns --> StreamlitPod[Streamlit pod per session]
    StreamlitPod -- reads ro --> PVC
  end
  User --> Cockpit
  User --> reports.domain[reports.<domain>]
  reports.domain --> ShinyProxy

Audience: customers who want everything in one platform.


Mode B — ADEN standalone

Only ADEN, plugged into pre-existing infrastructure (Trino, OpenMetadata, Keycloak, Postgres, LLM gateway). Smallest possible install.

helm dependency update helm/aden/
helm install aden helm/aden/ -n aden --create-namespace \
  --set global.domain=aden.client.io \
  -f helm/aden/values-standalone.yaml
flowchart LR
  subgraph aden[aden namespace]
    ADEN
    Streamlit
    ShinyProxy
    OPA
  end
  subgraph customer[customer's existing infra]
    BYO_Trino[Trino]
    BYO_OM[OpenMetadata*]
    BYO_PG[(Postgres)]
    BYO_LLM[LiteLLM / OpenAI / vLLM]
    BYO_IdP[Keycloak / Authentik / Okta / AAD]
  end
  User --> ShinyProxy
  ShinyProxy -->|OIDC| BYO_IdP
  ShinyProxy -- spawns --> StreamlitPod[Streamlit pod per session]
  StreamlitPod -- ro PVC --> Reports[(aden-reports PVC)]
  ADEN -->|HTTP| BYO_Trino
  ADEN -->|HTTP| BYO_OM
  ADEN -->|HTTP| BYO_LLM
  ADEN -->|JDBC| BYO_PG
  ADEN -- writes --> Reports

* Optional — ADEN runs in degraded mode if OpenMetadata is absent (Trino information_schema substring fallback, ~50% precision).

Audience: customers who already run their own platform and want to add "text-to-SQL → Streamlit" as a feature.


Mode C — AKKO Free

The full AKKO platform without ADEN. Same helm/akko/ chart, ADEN disabled in values:

helm install akko helm/akko/ -n akko --create-namespace \
  -f helm/examples/values-dev.yaml \
  -f helm/examples/values-domain.yaml \
  -f helm/examples/values-dev-secrets.yaml \
  --set-file akko-keycloak.realm.data=helm/examples/realm-domain.json \
  --set akko-aden.enabled=false \
  --set akko-streamlit.enabled=false \
  --set akko-shinyproxy.enabled=false \
  --set akko-opa.adenPoliciesEnabled=false
flowchart LR
  subgraph akko[akko namespace]
    Cockpit
    Trino
    OpenMetadata
    Keycloak
    Superset
    Airflow
    JupyterHub
  end
  Cockpit -.no ADEN page.-> Cockpit
  User --> Cockpit

Audience: customers who want AKKO's lakehouse + governance + notebooks without the AI feature.


Switching between modes

From → To Effort Notes
A → C (disable ADEN) helm upgrade with akko-aden.enabled=false Idempotent; PVC retained for the next re-enable
C → A (enable ADEN) helm upgrade with akko-aden.enabled=true (+ secrets) Schema migrations apply automatically via the akko-init job
A → B (extract ADEN) Backup aden schema → install helm/aden/ → restore Dedicated extraction runbook planned; for now follow the generic PostgreSQL backup procedure in Observability & SLO
B → A (absorb into AKKO) helm install akko with akko-aden.enabled=true pointing at the Mode B's existing Postgres Manual values merge

Compliance with R28 (stackable)

Every Mode B external dependency obeys a standard interface:

Category Interface Acceptable backends
Identity OIDC Keycloak, Authentik, Okta, Auth0, Azure AD, Google
LLM OpenAI-compatible REST LiteLLM, vLLM, Ollama, OpenAI, Anthropic-via-LiteLLM
Catalog OpenMetadata REST + degraded mode OpenMetadata, none
Object storage S3 SDK + endpoint object storage (AGPL — see migration plan), SeaweedFS, AWS S3, Backblaze, Wasabi
State Postgres protocol PostgreSQL 13+, AWS RDS, Crunchy, Supabase

A Mode B operator can swap any of those at install time by setting the matching values block — no code rebuild required.


Cockpit feature flags

The cockpit reads /api/version on boot and strips disabled features from the sidebar and page routes. The endpoint is populated by Helm from global.features:

global:
  features:
    adenEnabled: true          # hides the ADEN sidebar item + page when false
    adenPoliciesEnabled: true  # (reserved — mirrors akko-opa.adenPoliciesEnabled)

In Mode C (--set akko-aden.enabled=false), set --set global.features.adenEnabled=false to remove the ADEN entry from the UI entirely. Elements tagged data-feature="adenEnabled" in index.html get a .feature-hidden class and display: none.

Mode B (ADEN standalone) uses the upcoming cockpit-lite image (branding/cockpit-lite/) which ships only the ADEN page + the Streamlit reports launcher — no other AKKO pages.