ModGPT — ASK Platform Overview¶
The ASK platform is a production AI assistant system composed of five microservices deployed on Kubernetes via ArgoCD. This section documents each application's container images, Helm charts, environment matrix, configuration variables, and secrets.
Application Inventory¶
| Application | Repo | Type | Port(s) | Helm Chart |
|---|---|---|---|---|
| ASK Core Service | ask-core-service |
Python / FastAPI | 8000 | core-service v1.0.0 |
| ASK Assistant Service | ask-assistant-service |
Python / FastAPI (multi-image) | 8000 / 8001 / 8003 / 8080 | assistant-service v0.2.2 |
| ASK Frontend | ask-frontend |
Node.js / Next.js | 3000 | frontend v1.0.0 |
| ASK Knowledge Management Service | ask-knowledge-management-service |
Python / FastAPI | 8000 | knowledge-management-service v1.0.0 |
| ASK DevOps | ask-devops |
Infrastructure-only | N/A | N/A |
Environment Matrix¶
| Environment | Code | Cloud/DC | Core | Assistant | Frontend | KMS | Voice |
|---|---|---|---|---|---|---|---|
| Development | ai71-uaen-dev-ask71 |
Azure UAE North | ✅ | ✅ (+ preview) | ✅ | ✅ | — |
| Staging | ai71-uaen-stg-ask71 |
Azure UAE North | ✅ | ✅ | ✅ | ✅ | — |
| Production — Mufti | ai71-uaen-prod-mufti |
Azure UAE North | ✅ | ✅ | ✅ | ✅ | — |
| Production — ATRC | ai71-atrc-uaen-prod-ask |
Azure ATRC | ✅ | ✅ | ✅ | ✅ | — |
| PP Production | ai71-pp-auh1-prod-ask |
On-prem Abu Dhabi | ✅ | ✅ | ✅ | ✅ | ✅ |
| MEC1 Staging | ai71-mec1-stg-ask71 |
Azure MEC1 | ✅ | — | ✅ | — | — |
| Edge Production | edge-uaen-prod-ask |
Edge UAE North | — | ✅ | — | ✅ | — |
| core42 Dev | ai71-modgpt-auh1-dev-ask |
On-prem RKE2 (core42) | 🔄 | 🔄 | 🔄 | 🔄 | — |
Environment naming convention
Format: ai71-{project}-{location}-{env}-{app}
| Token | PP value | core42 value |
|---|---|---|
project |
pp |
modgpt |
location |
auh1 |
auh1 |
env |
prod |
dev |
app |
ask |
ask |
Shared Architecture Decisions¶
Container Images — Registry¶
All production images are pushed to Azure Container Registry:
Dependency Proxy¶
All Dockerfiles accept an ARG DEPENDENCY_PROXY_PREFIX (or PROXY_PREFIX) so the build pipeline can route pulls through a registry mirror when building in air-gapped or bandwidth-restricted environments.
Python Dependency Management¶
All Python services use uv for fast, reproducible installs from locked uv.lock files. Private packages (internal GitLab PyPI indexes) are mounted as build secrets — credentials are never baked into image layers.
Private PyPI indexes consumed:
- connectors-lib — external connector integrations
- iam-client — Zitadel IAM SDK
- storage-lib — Azure Blob / MinIO abstraction
- foundry-client — AI71 Foundry LLM proxy SDK
- document-understanding — document parsing SDK
- evals-sdk — evaluation pipeline SDK
- ask-feature-flags — LaunchDarkly-style feature flag SDK
Secrets Management¶
| Environment | Backend | ExternalSecret provider |
|---|---|---|
| PP / Azure / ATRC | Azure Key Vault | provider: azure |
| core42 | HashiCorp Vault | provider: vault (ClusterSecretStore: vault-backend) |
An ExternalSecret CRD (via External Secrets Operator) syncs secrets into Kubernetes Secret objects on a 1-minute refresh cycle.
Secret naming convention (Azure): {release-name}--{SECTION__KEY} in Key Vault → SECTION_KEY env var in pod.
Secret path (Vault): secret/cl1/<service>/ → see Service Config & Secrets Inventory.
Config Management¶
Non-secret configuration is version-controlled in config/default.toml (Dynaconf format). Environment-specific overrides are stored in Helm values files and mounted as config/override.toml at deploy time.
Helm Chart Release¶
Charts are published to GitLab's OCI Helm registry via CI:
ArgoCD uses the HTTP Package Registry API for deployments due to an OCI multi-level path JWT auth issue with ArgoCD v3.x.Async Job Queue¶
All backend services that run background jobs use Hatchet as the workflow/job orchestration engine. Each worker image is a separate Kubernetes Deployment consuming Hatchet job queues.
ArgoCD Deployment¶
Applications are deployed via ArgoCD using the App of Apps (cluster-addons) pattern. Each service has:
- An ApplicationSet driving environment-specific Application CRs
- Helm value files sourced from helm/environments/values-<env>.yaml
- Separate AppProject per application group for RBAC
The DevOps repo (ask-devops-main) owns the ArgoCD Application manifests; individual service repos own their Helm charts.