This document covers everything you need to install AIOStack on a Kubernetes cluster — the one-line installer, manual Helm installation, cloud IAM setup, and uninstallation.
- Quick Start
- Prerequisites
- Installation Methods
- Cloud IAM Setup
- Configuration Options
- CLI Reference
- Post-Installation
- Troubleshooting
- Uninstallation
- Support
The fastest path:
curl -fsSL https://aurva.ai/install.sh | bashThe script is interactive — it detects your cluster, asks for Aurva credentials, generates copy-paste IAM commands for AWS/GCP, and runs the Helm install. Plan on 10 minutes end to end.
- Helm 3.x — helm.sh/docs/intro/install
- kubectl — kubernetes.io/docs/tasks/tools
- Configured cluster context (
kubectl get nodesmust succeed)
- Kubernetes 1.29+ with eBPF support (EKS, GKE, AKS qualify out of the box)
- Linux kernel 5.15+ on worker nodes
Sign up at app.aurva.ai/signup to get a Company ID and Validation Key. The installer will prompt for these.
To enable IAM, RDS, and S3 inventory the outpost needs read-only cloud access:
- AWS — IAM Role for Service Account (IRSA) on EKS
- GCP — Workload Identity on GKE
The installer prints the exact commands. See Cloud IAM Setup below.
curl -fsSL https://aurva.ai/install.sh | bashWhat it does:
- Checks prerequisites (Helm, kubectl, cluster reachability)
- Detects cluster, region, and cloud provider
- Prompts for Aurva credentials and namespace
- Generates pre-populated IAM setup commands (AWS or GCP)
- Adds the Helm repository
- Installs the chart
- Verifies pods are running
curl -fsSL https://aurva.ai/install.sh -o install.sh
chmod +x install.sh
./install.shgit clone https://github.com/aurva-io/ai-observability-stack.git
cd ai-observability-stack
./install.shIf you prefer to skip the script entirely, see the docs site for the manual Helm flow. The condensed version:
helm repo add aiostack https://charts.aurva.ai/
helm repo update
helm install myaiostack aiostack/aiostack \
--namespace aiostack \
--create-namespace \
--set companyId=YOUR_COMPANY_ID \
--set validationKey=YOUR_VALIDATION_KEYFor AWS IRSA or GCP Workload Identity, add the corresponding serviceAccount.annotations (see Cloud IAM Setup).
The outpost calls read-only cloud APIs to inventory IAM roles, RDS instances, and S3 buckets. The installer detects your cluster type and prints copy-paste commands. The summary is here for reference.
Permissions required on the IAM role:
IAM: iam:ListRoles, iam:GetRole, iam:ListAttachedRolePolicies,
iam:GetPolicy, iam:GetPolicyVersion, iam:ListRolePolicies,
iam:GetRolePolicy
RDS: rds:DescribeDBInstances, rds:DescribeDBClusters,
rds:DescribeDBSubnetGroups, rds:ListTagsForResource
S3: s3:ListAllMyBuckets, s3:GetBucketLocation,
s3:GetBucketPublicAccessBlock, s3:GetBucketTagging,
s3:GetBucketVersioning, s3:GetBucketAcl
The installer generates the full aws iam create-policy, create-role, and trust-policy commands with your account ID and OIDC issuer pre-filled.
After the role is created, install with:
helm install myaiostack aiostack/aiostack \
--namespace aiostack \
--set serviceAccount.annotations."eks\.amazonaws\.com/role-arn"="arn:aws:iam::ACCOUNT:role/aiostack-outpost-secure-readonly-role" \
--set companyId=... \
--set validationKey=...The installer generates gcloud iam service-accounts create, role binding, and Workload Identity binding commands. Required role: roles/iam.securityReviewer plus custom roles for RDS/S3 equivalents.
After the GCP SA is bound, install with:
helm install myaiostack aiostack/aiostack \
--namespace aiostack \
--set serviceAccount.annotations."iam\.gke\.io/gcp-service-account"="aiostack-outpost@PROJECT.iam.gserviceaccount.com" \
--set companyId=... \
--set validationKey=...If you skip cloud IAM, AIOStack still runs and observes kernel-level traffic. You won't get the IAM/RDS/S3 datasource inventory until it's enabled.
| Setting | Description |
|---|---|
companyId |
Your Aurva company identifier |
validationKey |
Authentication key from app.aurva.ai |
| Setting | Default | Description |
|---|---|---|
namespace |
aiostack |
Kubernetes namespace |
releaseName |
myaiostack |
Helm release name |
createNamespace |
true |
Create the namespace if missing |
observerVersion |
latest |
Observer (eBPF DaemonSet) image tag |
outpostVersion |
trueID-delta |
Outpost (cluster service) image tag |
isOutpostUrlSecure |
false |
Use HTTPS for outpost → commander |
skipNamespaces |
kube-system,aiostack-test,aiostack,monitoring,gke-mcs |
Namespaces excluded from observation |
commanderUrl |
hq.aurva.ai:443 |
Control plane endpoint |
The installer can save your config for reuse:
# aiostack-config-YYYYMMDD-HHMMSS.yaml
namespace: aiostack
releaseName: myaiostack
companyId: company-abc123
validationKey: key-xyz789...
observerVersion: latest
outpostVersion: trueID-delta
isOutpostUrlSecure: false
skipNamespaces: kube-system,aiostack-test,aiostack,monitoring,gke-mcs
createNamespace: trueLoad it on a re-run:
./install.sh --config aiostack-config-20251115-120000.yamlSaved configs contain credentials. Set
chmod 600and never commit them.
./install.sh [OPTIONS]
OPTIONS:
-h, --help Show help and exit
-v, --verbose Print detailed command output
-c, --config FILE Load a saved configuration file
--version Print installer version and exit
Environment overrides:
VERBOSE=true ./install.sh
CONFIG_FILE=my-config.yaml ./install.shkubectl get pods -n aiostackExpected:
NAME READY STATUS RESTARTS AGE
aiostack-observer-xxxxx 1/1 Running 0 2m
aiostack-outpost-xxxxx 1/1 Running 0 2m
# observer (eBPF DaemonSet)
kubectl logs -n aiostack -l app.kubernetes.io/name=observer --tail=100
# outpost (cluster service)
kubectl logs -n aiostack -l app.kubernetes.io/name=outpost --tail=100
# everything from this release
kubectl logs -n aiostack -l app.kubernetes.io/instance=myaiostack --all-containers --tail=50Sign in at app.aurva.ai. Within a few minutes you'll see discovered AI workloads, identity chains, and data flows.
# Helm missing
brew install helm # macOS
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash # Linux
# kubectl missing or no cluster context
kubectl config current-context
kubectl config get-contexts
kubectl config use-context <name>kubectl describe pods -n aiostack
kubectl top nodes
kubectl get events -n aiostack --sort-by='.lastTimestamp'Common causes: node capacity, image pull permissions, missing IRSA/Workload-Identity binding.
kubectl logs -n aiostack <pod-name> --previous
kubectl describe pod -n aiostack <pod-name>Most often a credential mismatch — verify companyId and validationKey in the console.
helm repo add aiostack https://charts.aurva.ai/
helm repo update
helm search repo aiostackkubectl auth can-i create deployments -n aiostack
kubectl auth can-i create daemonsets -n aiostackYou need permissions to create namespaces, deployments, daemonsets, service accounts, and (cluster-)role bindings.
./install.sh --verbose
kubectl get nodesk9s makes inspecting pods and logs significantly faster. Recommended for any non-trivial debugging.
For deeper troubleshooting see the docs.
curl -fsSL https://aurva.ai/uninstall.sh | bashThe uninstaller is also interactive — it finds your release, confirms before removing, and cleans up the namespace.
helm uninstall myaiostack -n aiostack
kubectl delete namespace aiostack
helm repo remove aiostack # optionalhelm get values myaiostack -n aiostack > my-saved-values.yamlReinstall later with ./install.sh --config <saved>.yaml or helm install -f my-saved-values.yaml.
Before uninstalling, we'd appreciate a quick note at support@aurva.io about what didn't work. It helps us improve the product.
- Docs — aurva.ai/docs
- GitHub — github.com/aurva-io/ai-observability-stack
- Issues — github.com/aurva-io/ai-observability-stack/issues
- Email — support@aurva.io
- Dashboard — app.aurva.ai