Skip to content

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.

  • Kubernetes 1.27+
  • Helm 3.10+
  • A PulseStream account with a workspace

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.

ArchitectureSupportedExamples
x86_64 (amd64)YesStandard EC2 instances, GCE, AKS nodes
ARM64 (aarch64)YesAWS 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.

PulseStream uses token-based provisioning — you never need to copy-paste API keys:

  1. Generate a provisioning token in the PulseStream dashboard (valid for 30 minutes)
  2. Apply the YAML manifest to your cluster (creates a Kubernetes Secret)
  3. Install the agent via Helm — it reads the secret automatically
  4. The agent exchanges the token for permanent credentials and connects

Go to Settings → Connection in the PulseStream dashboard and click Generate Provisioning Token. Copy the YAML manifest.

Terminal window
kubectl apply -f agent-provision.yaml
Terminal window
helm install pulsestream-agent oci://public.ecr.aws/b2g7w6t0/charts/pulsestream-agent \
--version 0.4.0 \
--namespace pulsestream-agent \
--create-namespace

The agent reads the provisioning secret, exchanges it for permanent credentials, and connects to the control plane automatically.

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).

After installation, check the agent status:

Terminal window
kubectl get pods -n pulsestream-agent
kubectl logs -n pulsestream-agent deployment/pulsestream-agent --tail=20

In the PulseStream dashboard, navigate to Settings → Connection. The status should show as connected.

Terminal window
helm upgrade pulsestream-agent oci://public.ecr.aws/b2g7w6t0/charts/pulsestream-agent \
--version <new-version> \
--namespace pulsestream-agent

The standard uninstall removes the agent and every resource it owns — including all data.

Terminal window
helm uninstall pulsestream-agent --namespace pulsestream-agent
kubectl delete namespace pulsestream-agent
ResourceRemoved by
Deployments, StatefulSets, DaemonSets, Serviceshelm uninstall
ConfigMaps and Secrets owned by the charthelm uninstall
ClusterRoles and ClusterRoleBindingshelm uninstall
PersistentVolumeClaims (PostgreSQL, OpenSearch, Analyzer) and the underlying PersistentVolumeskubectl delete namespace (cascading)
agent-provision secret you applied in step 2 of installkubectl delete namespace
The namespace itselfkubectl delete namespace
Terminal window
# Namespace gone
kubectl get namespace pulsestream-agent
# No chart-owned cluster-scoped leftovers (should print nothing)
kubectl get clusterrole,clusterrolebinding | grep pulsestream-agent

If the namespace finalizer hangs for more than a minute, list what’s blocking:

Terminal window
kubectl get namespace pulsestream-agent -o json | jq '.status.conditions'