Docs / Configuration reference

Configuration reference

Every input, environment variable and chart value you can set, with defaults. Setup walk-throughs are on the install pages.

GitHub Action inputs (protet/monitor@v1)

Preview: see the Action page for current status.

InputDefaultDescription
token (required)Ingest token from the dashboard, stored as a secret.
environmentprodCloud target. Only prod exists; other values fall back to it.
gateway-urlempty (https://ingress.protet.io)Ingest base URL override, for on-prem or self-hosted.
app-urlempty (https://protet.io)Account base URL override, for on-prem or self-hosted.
fail-on-maliciousfalseFail the job on a malicious verdict.
github-token${{ github.token }}Token used to write the pull request comment. Needs pull-requests: write.

Cloud collector variables

If you run your own collector against the cloud ingest, the dashboard (Connect your cluster) shows these three values:

VariableValueDescription
GATEWAY_URLhttps://ingress.protet.ioWhere events are posted (POST /v1/ingest).
INGEST_REFRESH_URLhttps://protet.io/v1/ingest/refreshWhere the refresh token is traded for an access token.
INGEST_REFRESH_TOKENfrom the dashboardThe long-lived refresh token. Treat it as a password.

On-prem install variables

Read by the pipeline services, set through docker-compose or Helm. The docker-compose files and the Helm chart ship with your on-prem deployment.

VariableDefaultDescription
MODEL_BUNDLE_URLemptyWhere to pull the signed bundle at runtime: https://protet.io/v1/bundle.
MODEL_BUNDLE_KEYemptyYour pull token. Sent as the x-license-key header.
MODEL_BUNDLE_DIRemptyDirectory holding a pre-extracted bundle. When set it takes precedence over the URL (air-gapped installs).
BUNDLE_PUBLIC_KEYemptyBase64 Ed25519 public key that verifies the bundle. From GET /v1/public-keys, field bundle.
LICENSE_ENFORCEfalse in the compose file and chartSet true to require a valid license. An expired license then stops the services at start.
LICENSE_FILE/license/license.jsonPath of the license inside the container.
LICENSE_PUBLIC_KEYemptyBase64 Ed25519 public key that verifies the license. From GET /v1/public-keys, field license.

docker-compose also reads these (set in the shell or a .env next to the compose file):

VariableDefaultDescription
BUNDLE_DIR./bundleHost folder with the extracted bundle (bundle overlay). Mounted read-only at /bundle.
LICENSE_DIR./licenseHost folder with license.json (bundle overlay). Mounted read-only at /license.
SLACK_WEBHOOK_URLemptyOptional. Also post alerts to this Slack incoming webhook.
TETRAGON_ADDRlocalhost:54321Collector: address of the Tetragon gRPC server.
REDIS_URLredis://redis:6379Redis used between services. The compose collector uses redis://localhost:6379 because it runs on the host network.
NODE_NAMEcompose-node-0Name stamped on events from this host.

Helm values

ValueDefaultDescription
global.imageTaglatestImage tag for all services. Pin it to the version you were given.
global.imagePullPolicyAlwaysKubernetes pull policy.
global.imagePullSecretemptyName of a docker-registry secret for the image registry.
redis.enabledtrueRun the chart's own Redis. Set false and fill redis.url to use another.
redis.urlredis://redis:6379Redis address.
redis.maxmemory1gbRedis memory ceiling. The eviction policy is deliberately noeviction; do not change it.
license.enforcefalseRequire a valid license. Set true for on-prem.
license.secretNameemptyKubernetes secret holding license.json, mounted at /license.
signing.bundlePublicKeyemptyPublic key verifying the bundle (BUNDLE_PUBLIC_KEY).
signing.licensePublicKeyemptyPublic key verifying the license (LICENSE_PUBLIC_KEY).
modelBundle.diremptyMount path of the bundle (MODEL_BUNDLE_DIR).
modelBundle.pvcNameemptyPersistent volume claim holding the extracted bundle.
modelBundle.urlemptyBundle endpoint (MODEL_BUNDLE_URL). With dir and pvcName, pods refresh the bundle from it on every start and keep the last verified copy if Protet is unreachable.
modelBundle.keySecretNameemptySecret holding your pull token. Required with modelBundle.url.
modelBundle.keySecretKeyLICENSE_KEYKey inside that secret; exposed to the pod as MODEL_BUNDLE_KEY.
collector.enabledtrueRun the per-node collector that reads Tetragon.
collector.tetragonAddrtetragon.kube-system.svc.cluster.local:54321Tetragon gRPC address.
collector.ignoredBinariescontainerd-shim,pause,runc,tiniBinaries the collector skips.

The chart's values.yaml is the authority for the rest (resources and the other pipeline services).

Limits, lifetimes and retention

WhatValue
Free plan build sessions500 per calendar month
Access token lifetime1 hour (expires_in: 3600)
Refresh (ingest) token lifetime90 days
Build activity retention (cloud)at most 24 hours, never archived
Build result retention (cloud)up to 6 hours, then deleted
Largest API request body64 KiB (65,536 bytes)
Sign-ups, verification re-sends and password-reset requests5 per hour per source address, counted separately for each
Logins10 per hour per email and source address
Intel filescached for 5 minutes