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.