Skip to main content

Install with Helm

Use this method to run the agent on a Kubernetes cluster. It's the recommended approach for production environments and CI/CD pipelines.

Prerequisites

info

All examples in this guide use the nullplatform-tools namespace. The helm install commands include --create-namespace, so Helm creates it on first install. If you use a different namespace, adjust --namespace and any kubectl -n flags accordingly.

1. Add the Helm repository

helm repo add nullplatform https://nullplatform.github.io/helm-charts
helm repo update

2. Set your values and install

The minimum you need is an API key, an agent repo, and tags.

export NP_API_KEY=<your_api_key>
export AGENT_TAGS=<key1:value1,key2:value2>
export AGENT_REPO=<https://git-provider/your-org/your-repo.git#your_branch>

💡 Tip: Check the logs to confirm that your AGENT_REPO was cloned correctly. See the Variables section below for format examples.

Then install the chart:

helm install nullplatform-agent nullplatform/nullplatform-agent \
--namespace nullplatform-tools --create-namespace \
--set configuration.values.NP_API_KEY=$NP_API_KEY \
--set configuration.values.AGENT_REPO=$AGENT_REPO \
--set configuration.values.TAGS="$AGENT_TAGS"
info

For more advanced installs, see the nullplatform Helm charts repo.

Verify installation

  1. In the platform UI, go to Platform settings > Agents.
  2. Filter by tags or agent ID to find your new agent.

If it shows up, you're good to go.

Variables

Quick reference for the values you pass to the chart. For full details, see the nullplatform Helm charts repo.

Required

ValueWhat it doesHelm pathExample
API keyAuthenticates the agentconfiguration.values.NP_API_KEYNP_API_KEY="npk_..."
Agent repoWhere the agent reads scopes and actions fromconfiguration.values.AGENT_REPOAGENT_REPO="https://git-provider/org/repo.git#main"
TagsMetadata for filtering in the UIconfiguration.values.TAGSTAGS="environment:dev,team:platform"

Optional

ValueWhat it doesHelm pathExample
Log levelControls verbosityconfiguration.values.NP_LOG_LEVELNP_LOG_LEVEL="INFO"

AGENT_REPO formats

You can pass one repo or several, separated by commas. Add #branch to target a specific branch.

Single public repo

AGENT_REPO="https://git-provider/your-org/your-repo.git#your_branch"

Single private repo (with token)

AGENT_REPO="https://<git-token>@git-provider.com/your-org/private-repo.git#your_branch"

Multiple repos

AGENT_REPO="https://git-provider/your-org/your-repo.git#your_branch,https://<git-token>@git-provider.com/your-org/private-repo.git#your_branch"
tip

For private GitHub repos in production, prefer a GitHub App over embedding a personal access token in the URL. The chart includes an init container that handles the App-based clone for you.

info

For the full list of values and defaults, check the nullplatform Helm charts repo.

Use AWS SSM for the API key

For EKS installs, you can keep the API key in AWS SSM Parameter Store instead of passing it as a Helm value. The agent supports --ssm-apikey-parameter as an alternative to --apikey and fetches the parameter at startup with decryption enabled.

You need:

  • An SSM parameter of type SecureString holding the API key (e.g. /nullplatform/agent/api-key).
  • An IAM role for the agent's service account (IRSA) with ssm:GetParameter and kms:Decrypt on that parameter.

Then override the chart args to use the SSM flag, leave NP_API_KEY empty, and annotate the service account with the IRSA role:

# values.yaml
serviceAccount:
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/nullplatform-agent-irsa

configuration:
values:
NP_API_KEY: ""
AGENT_REPO: "https://git-provider/your-org/your-repo.git#main"
TAGS: "environment:prod,team:platform"

args:
- --tags=$(TAGS)
- --ssm-apikey-parameter=/nullplatform/agent/api-key
- --runtime=host
- --command-executor-debug
- --webserver-enabled
- --command-executor-git-command-repos
- $(AGENT_REPO)

Install with:

helm install nullplatform-agent nullplatform/nullplatform-agent \
--namespace nullplatform-tools --create-namespace \
-f values.yaml

Next step: create a notification channel

The agent is now installed and registered. Without a notification channel, it won't respond to any platform events.

Create a notification channel →