Agent Installation
The PulseStream agent is a lightweight service that runs in your Kubernetes cluster. It collects telemetry (logs, events, metrics) and streams it to the PulseStream control plane for AI-powered analysis.
Prerequisites
Section titled “Prerequisites”- Kubernetes 1.27+
- Helm 3.10+
- A PulseStream account with a workspace
Platform support
Section titled “Platform support”All PulseStream agent images are published as multi-architecture manifests supporting both linux/amd64 and linux/arm64. No special configuration is required. Kubernetes automatically pulls the correct image for your node architecture.
| Architecture | Supported | Examples |
|---|---|---|
| x86_64 (amd64) | Yes | Standard EC2 instances, GCE, AKS nodes |
| ARM64 (aarch64) | Yes | AWS Graviton (m7g, c7g, r7g), GKE Tau T2A, Ampere |
Mixed-architecture clusters (amd64 and arm64 nodes) work out of the box. All bundled components (PostgreSQL, OpenSearch, Vector, NATS) also support both architectures.
Provisioning flow
Section titled “Provisioning flow”PulseStream uses token-based provisioning — you never need to copy-paste API keys:
- Generate a provisioning token in the PulseStream dashboard (valid for 30 minutes)
- Apply the YAML manifest to your cluster (creates a Kubernetes Secret)
- Install the agent via Helm — it reads the secret automatically
- The agent exchanges the token for permanent credentials and connects
Install with Helm
Section titled “Install with Helm”Step 1: Generate a provisioning token
Section titled “Step 1: Generate a provisioning token”Go to Settings → Connection in the PulseStream dashboard and click Generate Provisioning Token. Copy the YAML manifest.
Step 2: Apply the provisioning secret
Section titled “Step 2: Apply the provisioning secret”kubectl apply -f agent-provision.yamlStep 3: Install the agent
Section titled “Step 3: Install the agent”helm install pulsestream-agent oci://public.ecr.aws/b2g7w6t0/charts/pulsestream-agent \ --version 0.4.0 \ --namespace pulsestream-agent \ --create-namespaceThe agent reads the provisioning secret, exchanges it for permanent credentials, and connects to the control plane automatically.
Resource footprint
Section titled “Resource footprint”No configuration is required. The agent works out of the box with sensible defaults. Plan for approximately 2 CPU cores and 4 GiB memory available in your cluster, plus a small per-node overhead for the log-collection DaemonSet (~100m CPU and ~128 MiB memory per node).
Verify connection
Section titled “Verify connection”After installation, check the agent status:
kubectl get pods -n pulsestream-agentkubectl logs -n pulsestream-agent deployment/pulsestream-agent --tail=20In the PulseStream dashboard, navigate to Settings → Connection. The status should show as connected.
Upgrading
Section titled “Upgrading”helm upgrade pulsestream-agent oci://public.ecr.aws/b2g7w6t0/charts/pulsestream-agent \ --version <new-version> \ --namespace pulsestream-agentUninstalling
Section titled “Uninstalling”The standard uninstall removes the agent and every resource it owns — including all data.
helm uninstall pulsestream-agent --namespace pulsestream-agentkubectl delete namespace pulsestream-agentWhat this removes
Section titled “What this removes”| Resource | Removed by |
|---|---|
| Deployments, StatefulSets, DaemonSets, Services | helm uninstall |
| ConfigMaps and Secrets owned by the chart | helm uninstall |
| ClusterRoles and ClusterRoleBindings | helm uninstall |
| PersistentVolumeClaims (PostgreSQL, OpenSearch, Analyzer) and the underlying PersistentVolumes | kubectl delete namespace (cascading) |
agent-provision secret you applied in step 2 of install | kubectl delete namespace |
| The namespace itself | kubectl delete namespace |
Verify the uninstall
Section titled “Verify the uninstall”# Namespace gonekubectl get namespace pulsestream-agent
# No chart-owned cluster-scoped leftovers (should print nothing)kubectl get clusterrole,clusterrolebinding | grep pulsestream-agentIf the namespace finalizer hangs for more than a minute, list what’s blocking:
kubectl get namespace pulsestream-agent -o json | jq '.status.conditions'