On this page
Configuration reference#
<!-- Generated by scripts/config-reference.cjs from hyvop/values.schema.json and hyvop/values.yaml. Do not edit by hand: run `node scripts/config-reference.cjs`. -->Every value the chart reads. A key that is not in this list, or a value of the wrong type, is refused by helm lint, template, install and upgrade, with the path in the message.
Give values with --set key=value, or in a file with -f my-values.yaml. The schema lets any key through under core.env, but the chart reads only the ones listed in the core table; another key there has no effect. Every key under the env of an ingestor (ingestors.<cloud>.env) is passed to that ingestor as an environment variable, listed or not.
"Default" is the value in hyvop/values.yaml. "not set" means the file gives none: the chart then does what the description says, or, where there is no description, nothing. A few settings (secrets, the address of the install) are made or worked out by the chart when left empty; the description says so.
global#
| Value | Type | Default | Meaning |
|---|---|---|---|
global.edition |
string: one of community, enterprise |
community |
Edition: community or enterprise (license required for enterprise) |
global.storageClass |
string | "" |
Storage class for the data volumes of PostgreSQL and ClickHouse. Empty: the cluster's default class. |
global.imageRegistry |
string | "" |
When set, every image is pulled from this registry instead of the one in its reference. For a mirror or an air-gapped install. |
global.imagePullSecrets |
array | [] |
Names of the pull secrets every pod uses, for a private registry. They must exist in the namespace. |
global.imagePullPolicy |
string: one of Always, IfNotPresent, Never |
IfNotPresent |
Pull policy for every container. Use Never only with images loaded into the node by hand (kind, minikube). |
license#
| Value | Type | Default | Meaning |
|---|---|---|---|
license.key |
string | "" |
Enterprise license key - contact sales@hyvop.com |
core#
| Value | Type | Default | Meaning |
|---|---|---|---|
core.enabled |
boolean | true |
|
core.serviceAccount.annotations |
object | not set | |
core.image |
string or object | ghcr.io/hyvop-inc/hyvop-core |
An image reference: repository with a tag or a digest, or neither for one of Hyvop's own (the chart then uses appVersion); or a map with repository, tag and optionally pullPolicy. |
core.existingSecret |
string | "" |
A Secret of your own holding jwt-secret-key, jwt-previous-secret-keys, setup-code and ai-key (see README, Secrets). |
core.ingestorExistingSecret |
string | "" |
A Secret of your own holding shared-secret, the secret core proves itself to the ingestors with. |
core.mcpDeployer.enabled |
boolean | false |
Core creates MCP servers itself at run time, and is given a Role on Secrets, Services, ConfigMaps and Deployments of the namespace for it. Off as shipped: the chart deploys the GitHub server. |
core.setupCode |
string | "" |
The first person to open a new install creates its administrator account. Give a code here (a long random value: openssl rand -hex 24) and that screen asks for it, so that only whoever installed Hyvop can claim it. Empty: no code is asked. It is not used once an account exists. |
core.approvals.requests |
string: one of "", send, show-only, by-edition |
by-edition |
send: the people whose turn it is are mailed, reminded and escalated, in every edition. show-only: nothing is mailed, reminded or escalated; the plan shows who would be asked, and answers on the screen still count. by-edition (the default of the chart): send when the licence allows remediation beyond preview, which is Enterprise, show only otherwise, which is Community. Empty, absent or misspelt: core's default, which is by-edition. |
core.approvals.order |
string: one of "", chain, any |
"" |
chain: approvers answer one stage after the other, in the order the plan's chain gives; an answer out of turn is refused (HTTP 409). any: every required approver may answer at once. Empty: core's default (chain). |
core.approvals.stepTimeout |
string or integer, pattern ^$|^[0-9]+(ms|s|m|h|d)?$ |
"" |
How long a step may wait for its person before it is escalated once, for example 5d; 0 never escalates. Empty: core's default (5d). |
core.approvals.escalationEmail |
string | "" |
Who is told when a step is escalated and the chain names nobody further. Empty: the organisation's administrators. |
core.approvals.chainCheckMs |
integer or string (0..), pattern ^[0-9]*$ |
"" |
How often core looks for overdue steps, in milliseconds. Empty: core's default (900000). |
core.mail.host |
string | "" |
The relay's host name. Empty: no relay, no e-mail. The relay can also be set in the settings screen. |
core.mail.port |
integer (1..65535) | 587 |
The relay's port (587 with STARTTLS, 465, 25). |
core.mail.username |
string | "" |
The account at the relay. Empty: none. |
core.mail.password |
string | "" |
The account's password, kept in the Secret as mail-password. With core.existingSecret, put mail-password there yourself and leave this empty. |
core.mail.from |
string | "" |
The sender address. Most relays refuse an address they do not host: set it. |
core.mail.smtpAuth |
boolean or string: one of true, false, "" |
"" |
Whether to sign in at the relay. Empty: core's own default (true). |
core.mail.starttls |
boolean or string: one of true, false, "" |
"" |
Whether to upgrade the connection with STARTTLS. Empty: core's own default (true). |
core.mail.approvals.onPlan |
boolean or string: one of true, false, "" |
"" |
Mail the approvers when a plan is made (core's default: true). |
core.mail.approvals.linkValidity |
string, pattern ^$|^[0-9]+(ms|s|m|h|d)$ |
"" |
How long a mailed link works, for example 7d (core's default: 7d). |
core.mail.approvals.reminderInterval |
string or integer, pattern ^$|^[0-9]+(ms|s|m|h|d)?$ |
"" |
How often an approver who has not answered is reminded, for example 3d; 0 sends no reminder (core's default: 3d). |
core.mail.approvals.maxReminders |
integer or string (0..), pattern ^[0-9]*$ |
"" |
How many reminders at most (core's default: 2). |
core.service.port |
integer (1..65535) | 8081 |
|
core.jobrunr.enabled |
boolean | false |
The job dashboard; off by default (it has no login of its own). |
core.jobrunr.port |
integer (1..65535) | 8082 |
|
core.env.AUTH_MODE |
string: one of DEFAULT, OIDC |
DEFAULT |
DEFAULT: passwords kept by Hyvop. OIDC: an identity provider that speaks OpenID Connect. |
core.env.OIDC_ISSUER_URI |
string, pattern ^$|^https?:// |
"" |
The provider's issuer, whose discovery document core reads. |
core.env.OIDC_CLIENT_ID |
string | "" |
The client registered for Hyvop there, a confidential one, with the redirect address <the address of Hyvop>/api/auth/oidc/callback/oidc. The secret is kept in the Secret hyvop-core-secrets (oidc-client-secret); with core.existingSecret, put it there yourself. |
core.env.OIDC_CLIENT_SECRET |
string | "" |
|
core.env.OIDC_ROLE_CLAIM |
string | groups |
The claim of the ID token that says what a person is, and the values that make an administrator and a user, comma-separated. A dotted name reads inside an object (Keycloak: realm_access.roles). Both lists empty: the claim is not read, the first person to sign in is the administrator, the others get OIDC_DEFAULT_ROLE and an administrator changes roles in Hyvop. |
core.env.OIDC_ADMIN_VALUES |
string | "" |
|
core.env.OIDC_USER_VALUES |
string | "" |
|
core.env.OIDC_DEFAULT_ROLE |
string: one of VIEWER, USER, ADMIN |
VIEWER |
|
core.env.INTERNAL_PROXIES |
string | "" |
Which addresses core takes for Hyvop's own web servers (the ingress, the UI's) when it works out the address a request came from: a regular expression. Empty: every private address. See "The address recorded with an approval" in the README before relying on that address. |
core.env.FRONTEND_URL |
string | "" |
|
core.env.JWT_SECRET_KEY |
string | "" |
The secret sessions are signed with. Leave empty: the chart makes a random one on the first install and keeps it across upgrades. To set your own, use a private string of 32 characters or more (openssl rand -base64 48). core refuses a value that has been published. |
core.env.JWT_PREVIOUS_SECRET_KEYS |
string | "" |
When you replace JWT_SECRET_KEY, put the old value here (comma-separated if several) until the sessions signed with it have expired, so that nobody is signed out by the change. |
core.env.HYVOP_DATA_KEY |
string, pattern ^$|^.{32,}$ |
"" |
The key the secrets the database holds are encrypted under: 32 characters or more, or empty for one the chart makes and keeps. |
core.env.HYVOP_PREVIOUS_DATA_KEYS |
string | "" |
Data keys that were current before, comma-separated, until core has rewritten everything under the current one. |
core.env.INGESTOR_SHARED_SECRET |
string | "" |
What core sends to an ingestor to prove it is core. Leave empty: the chart makes a random secret on the first install and keeps it across upgrades. |
core.env.OPENAI_API_KEY |
string | "" |
The key of the model provider named in AI_PROVIDER below. The chart ships no key: give yours here, with --set, in a values file of your own, or as ai-key in a Secret of your own (core.existingSecret). |
core.env.AI_PROVIDER |
string: one of "", openai, openai-compatible |
"" |
AI features are off until a provider is chosen: "openai" (the OpenAI API) or "openai-compatible" (Azure OpenAI, OpenRouter, Ollama, vLLM...: give OPENAI_BASE_URL and AI_OPENAI_MODEL too). |
core.env.OPENAI_BASE_URL |
string | "" |
The endpoint, with its version path: core adds only /chat/completions to it. Left empty, "openai" uses https://api.openai.com/v1; "openai-compatible" needs it (OpenRouter: https://openrouter.ai/api/v1, Ollama: http://ollama:11434/v1). |
core.env.AI_OPENAI_MODEL |
string | "" |
The model id: left empty, "openai" uses gpt-4o-mini; "openai-compatible" needs it. |
core.env.AI_TIMEOUT |
string or integer, pattern ^$|^[0-9]+(ms|s|m|h)?$ |
"" |
How long one model call may take, for example 120s; 0 is no limit. Empty: core's default (120s). A call that takes longer answers HTTP 504. |
core.env.AI_MAX_OUTPUT_TOKENS |
integer or string (0..), pattern ^[0-9]*$ |
"" |
The longest answer asked of the model, in tokens, for a call that sets no limit; 0 is none. Empty: core's default (4096). |
core.env.AI_BUDGET_TOKENS_PER_MONTH |
integer or string (0..), pattern ^[0-9]*$ |
"" |
Tokens an organisation may use per month; past it, AI calls are refused (HTTP 429). 0 is no limit. An organisation's own budget, set by an administrator in the screen, wins. Empty: core's default (0). |
core.env.AI_BUDGET_TOKENS_PER_RUN |
integer or string (0..), pattern ^[0-9]*$ |
"" |
Tokens one run (a knowledge-graph build, an investigation) may use; it stops there and says why. 0 is no limit. Empty: core's default (0). |
core.env.AI_PRICING_INPUT_USD_PER_MILLION |
number or string, pattern ^[0-9.]*$ |
"" |
What the model costs per million input tokens, in US dollars, for the estimated cost on the usage page. 0 shows the cost as 0. Empty: core's default (0). |
core.env.AI_PRICING_OUTPUT_USD_PER_MILLION |
number or string, pattern ^[0-9.]*$ |
"" |
What the model costs per million output tokens, in US dollars. Empty: core's default (0). |
core.env.OWNERSHIP_AUTO_VALIDATION |
string: one of "", off, two-sources |
"" |
off: no resource is validated without a person's answer. two-sources: the validation agent accepts an owner that two independent sources name. Empty: core's default (off). |
core.env.OWNERSHIP_RECERTIFY_AFTER_DAYS |
integer or string (0..), pattern ^[0-9]*$ |
"" |
After this many days an owner's confirmation is asked for again. Empty: core's default (180). |
core.env.INVESTIGATOR_SUMMARY_JUDGE |
boolean or string: one of true, false, "" |
"" |
Whether a small model checks that the Investigator's sentence is supported by what the code read. Empty: core's default (true). |
core.env.DATALAKE_MIGRATION_LOCK_WAIT |
string or integer, pattern ^$|^[0-9]+(ms|s|m|h)?$ |
"" |
How long a core pod waits for another to finish the data-lake migrations before it gives up, for example 10m. Empty: core's default (5m). |
core.env.MCP_READY_TIMEOUT_SECONDS |
integer or string (0..), pattern ^[0-9]*$ |
"" |
How long core waits for the GitHub MCP server to answer before a knowledge-graph build fails, in seconds. Empty: core's default (180). |
core.env.PIPELINE_BATCH_SIZE |
integer or string (0..), pattern ^[0-9]*$ |
"" |
Events an ownership stage takes per pass. Empty: core's default (20). |
core.env.PIPELINE_CONCURRENCY |
integer or string (0..), pattern ^[0-9]*$ |
"" |
Events of a stage worked at once. Empty: core's default (4). |
core.env.PIPELINE_RECLAIM_IDLE_MS |
integer or string (0..), pattern ^[0-9]*$ |
"" |
How long an event left unacknowledged waits before it is claimed again, in milliseconds. Empty: core's default (30000). |
core.env.INVESTIGATOR_BEAT_SECONDS |
integer or string (0..), pattern ^[0-9]*$ |
"" |
How long one Investigator beat keeps taking batches off the queues, in seconds. Empty: core's default (25). |
core.env.INVESTIGATOR_MODEL_FOR_DECLARED_TEAMS |
boolean or string: one of true, false, "" |
"" |
Whether a workload that declares only a team (a team tag or a manifest, no person) is still investigated by the model, which is asked for a person. Each such workload costs one investigation, two model calls. false: a declared team ends the investigation, no model call, and the resource gets no suggestion. Empty: core's default (true). |
core.env.INVESTIGATOR_MAX_CONCURRENT_INVESTIGATIONS |
integer or string (0..), pattern ^[0-9]*$ |
"" |
How many resources the Investigator investigates at once. Empty: core's default (3). |
core.env.AI_ORGANISATION_MODEL_MAX_RETRIES |
integer or string (0..), pattern ^[0-9]*$ |
"" |
Retries the client makes on a call to the model an organisation brought from the settings screen. The install model of AI_PROVIDER stays the default for any organisation that brought none. Empty: core's default (1). |
core.env.REMEDIATION_AGENT_MODEL |
boolean or string: one of true, false, "" |
"" |
Whether the remediation agent asks a model for a draft of the plan when one is configured. The rules in code decide either way; false writes plans by the rules alone. Empty: core's default (true). |
core.env.KNOWLEDGE_ESTIMATE_SECONDS_PER_CALL |
number or string, pattern ^[0-9.]*$ |
"" |
The seconds one model call is estimated to take, for the time shown before a knowledge-graph build starts. Only an estimate. Empty: core's default (1.0). |
core.env.OWNERSHIP_ACTIVITY_LOG_ENABLED |
boolean or string: one of true, false, "" |
"" |
Whether the ownership activity log is written. Empty: core's default (true). |
core.env.OWNERSHIP_ACTIVITY_LOG_KEEP_DAYS |
integer or string (0..), pattern ^[0-9]*$ |
"" |
How many days a row of the ownership activity log is kept. Empty: core's default (90). |
core.env.OWNERSHIP_ACTIVITY_LOG_WRITE_EVERY_MS |
integer or string (0..), pattern ^[0-9]*$ |
"" |
How often the buffered rows of the ownership activity log are written, in milliseconds. Empty: core's default (1000). |
core.env.OWNERSHIP_ACTIVITY_LOG_PRUNE_CRON |
string | "" |
When rows older than the keep period are deleted: a Spring cron of six fields. Empty: core's default (0 40 3 * * *, every day at 03:40). |
core.env.REMEDIATION_AGENT_ENABLED |
boolean or string: one of true, false, "" |
"" |
Whether the remediation agent writes plans at all. Empty: core's default (true). |
core.env.CORS_ALLOWED_ORIGINS |
string, pattern ^[^*]*$ |
not set | Origins other than the install's own address that may call the API with the session cookie: exact, comma-separated. A wildcard is refused. |
core.env.AUTH_COOKIE_SAME_SITE |
string: one of Strict, Lax, None |
not set | |
core.env.DETECTOR_CATALOGUE_URL |
string | https://registry.hyvop.com/api/v1/detectors |
Where core reads the registry's list. An install installs and runs the catalogue shipped with its release. When this list holds a higher version of a detector the organisation has installed, an administrator is offered the update and can apply it; nothing is applied on its own, and a published rule is applied only if it passes the same checks as a shipped one. |
core.env.DETECTOR_CATALOGUE_REMOTE |
boolean | true |
Set to false on installs that must make no outbound calls: no update is offered and the shipped copy is used as it is. Nothing is lost: every official detector is in the shipped copy. |
core.env.HYVOP_MCP_CA_CERT_CONTENT |
string | "" |
|
core.env.OUTBOUND_ALLOWED_HOSTS |
string | "" |
The address of a Git server is typed by a person (GitHub Enterprise, a self-hosted GitLab). Core calls it only if it is a public HTTPS address: anything inside the cluster or on a private network is refused. Name here, comma-separated, the internal hosts it may call: "gitlab.corp.example,*.git.corp.example". |
core.env.REMEDIATION_ACCOUNT_ENVIRONMENTS |
string | "" |
Which environment each cloud account is, for the approval a remediation plan needs: "111122223333=production,444455556666=development". Read when a resource has no environment tag. An account that is not listed is treated as production: a person approves every change to it. |
core.env.AI_PERSONAL_DATA |
string | stand-ins |
What the model is told of people. "stand-ins": a person goes out as person-3 and is put back in the answer, and two spellings of one person are matched by rules, without the model. "as-is": names, addresses and handles are sent as the integrations give them. Core refuses any other word. |
core.env.JOBS_INGESTION_INVENTORY_CRON |
string | not set | When core collects a connected AWS account (Spring cron expressions, with seconds): inventory every 4 hours, metrics every 2 hours, billing nightly at 02:00. A connected account is also collected at once. Example: 0 0 0/4 * * *. |
core.env.JOBS_INGESTION_METRICS_CRON |
string | not set | Example: 0 0 0/2 * * *. |
core.env.JOBS_INGESTION_BILLING_CRON |
string | not set | Example: 0 0 2 * * *. |
ingestors#
| Value | Type | Default | Meaning |
|---|---|---|---|
ingestors.aws.enabled |
boolean | true |
|
ingestors.aws.image |
string or object | ghcr.io/hyvop-inc/hyvop-ingestor-aws |
An image reference: repository with a tag or a digest, or neither for one of Hyvop's own (the chart then uses appVersion); or a map with repository, tag and optionally pullPolicy. |
ingestors.aws.port |
integer (1..65535) | 5000 |
|
ingestors.aws.serviceAccount.annotations |
object | not set | |
ingestors.aws.extraCidrs |
array | [] |
Private endpoints of the cloud this ingestor may reach on 443, as CIDRs (a VPC endpoint, a private link). Allowed whatever networkPolicy.egress.ingestors.internet says. |
ingestors.aws.workloadIdentity.enabled |
boolean | not set | |
ingestors.aws.workloadIdentity.audience |
string | not set | The full name of the customer's workload identity provider: //iam.googleapis.com/projects/NUMBER/locations/global/workloadIdentityPools/POOL/providers/PROVIDER. Required when enabled. |
ingestors.aws.workloadIdentity.tokenExpirationSeconds |
integer (600..86400) | not set | How long a token lives; the kubelet renews it (default 3600). |
ingestors.aws.tls |
boolean | not set | Whether the ingestor listens with TLS, with the certificate of the install (the default). false only for an image that does not yet. |
ingestors.azure.enabled |
boolean | false |
|
ingestors.azure.image |
string or object | ghcr.io/hyvop-inc/hyvop-ingestor-azure |
An image reference: repository with a tag or a digest, or neither for one of Hyvop's own (the chart then uses appVersion); or a map with repository, tag and optionally pullPolicy. |
ingestors.azure.port |
integer (1..65535) | 5001 |
|
ingestors.azure.serviceAccount.annotations |
object | not set | |
ingestors.azure.extraCidrs |
array | [] |
Private endpoints of the cloud this ingestor may reach on 443, as CIDRs (a VPC endpoint, a private link). Allowed whatever networkPolicy.egress.ingestors.internet says. |
ingestors.azure.workloadIdentity.enabled |
boolean | not set | |
ingestors.azure.workloadIdentity.audience |
string | not set | The full name of the customer's workload identity provider: //iam.googleapis.com/projects/NUMBER/locations/global/workloadIdentityPools/POOL/providers/PROVIDER. Required when enabled. |
ingestors.azure.workloadIdentity.tokenExpirationSeconds |
integer (600..86400) | not set | How long a token lives; the kubelet renews it (default 3600). |
ingestors.azure.tls |
boolean | not set | Whether the ingestor listens with TLS, with the certificate of the install (the default). false only for an image that does not yet. |
ingestors.gcp.enabled |
boolean | false |
|
ingestors.gcp.image |
string or object | ghcr.io/hyvop-inc/hyvop-ingestor-gcp |
An image reference: repository with a tag or a digest, or neither for one of Hyvop's own (the chart then uses appVersion); or a map with repository, tag and optionally pullPolicy. |
ingestors.gcp.port |
integer (1..65535) | 5002 |
|
ingestors.gcp.serviceAccount.annotations |
object | not set | |
ingestors.gcp.extraCidrs |
array | [] |
Private endpoints of the cloud this ingestor may reach on 443, as CIDRs (a VPC endpoint, a private link). Allowed whatever networkPolicy.egress.ingestors.internet says. |
ingestors.gcp.workloadIdentity.enabled |
boolean | false |
|
ingestors.gcp.workloadIdentity.audience |
string | "" |
The full name of the customer's workload identity provider: //iam.googleapis.com/projects/NUMBER/locations/global/workloadIdentityPools/POOL/providers/PROVIDER. Required when enabled. |
ingestors.gcp.workloadIdentity.tokenExpirationSeconds |
integer (600..86400) | 3600 |
How long a token lives; the kubelet renews it (default 3600). |
ingestors.gcp.tls |
boolean | not set | Whether the ingestor listens with TLS, with the certificate of the install (the default). false only for an image that does not yet. |
ingestors.aws.env.INGESTION_ENABLED |
boolean | false |
Off: core schedules the collections (see core.env.JOBS_INGESTION_*_CRON). The ingestor's own loop collects from a configuration it serves itself (a sample account) with worker credentials of its own: not this set-up. |
ingestors.aws.env.AWS_DATA_SOURCE |
string | live |
live reads AWS (the ingestor's default). dummy is demo mode: sample data for the demo account 000000000000 only (connect it in Hyvop to see it; "remove demo data" deletes it), any other account refused. |
ingestors.azure.env.INGESTION_ENABLED |
boolean | false |
|
ingestors.azure.env.AZURE_DATA_SOURCE |
string | live |
|
ingestors.gcp.env.INGESTION_ENABLED |
boolean | false |
|
ingestors.gcp.env.GCP_DATA_SOURCE |
string | live |
ui#
| Value | Type | Default | Meaning |
|---|---|---|---|
ui.enabled |
boolean | true |
|
ui.image |
string or object | ghcr.io/hyvop-inc/hyvop-ui |
An image reference: repository with a tag or a digest, or neither for one of Hyvop's own (the chart then uses appVersion); or a map with repository, tag and optionally pullPolicy. |
ui.imagePullPolicy |
string: one of Always, IfNotPresent, Never |
IfNotPresent |
|
ui.replicas |
integer (0..) | 1 |
|
ui.service.port |
integer (1..65535) | 8080 |
|
ui.env.API_BASE_URL |
string | "" |
|
ui.resources.requests.cpu |
string, pattern ^[0-9]+(\.[0-9]+)?(m|k|M|G|T|P|E|Ki|Mi|Gi|Ti|Pi|Ei)?$ |
50m |
A Kubernetes quantity, such as 500m, 1Gi or 2. |
ui.resources.requests.memory |
string, pattern ^[0-9]+(\.[0-9]+)?(m|k|M|G|T|P|E|Ki|Mi|Gi|Ti|Pi|Ei)?$ |
64Mi |
A Kubernetes quantity, such as 500m, 1Gi or 2. |
ui.resources.limits.cpu |
string, pattern ^[0-9]+(\.[0-9]+)?(m|k|M|G|T|P|E|Ki|Mi|Gi|Ti|Pi|Ei)?$ |
500m |
A Kubernetes quantity, such as 500m, 1Gi or 2. |
ui.resources.limits.memory |
string, pattern ^[0-9]+(\.[0-9]+)?(m|k|M|G|T|P|E|Ki|Mi|Gi|Ti|Pi|Ei)?$ |
256Mi |
A Kubernetes quantity, such as 500m, 1Gi or 2. |
networkPolicy#
| Value | Type | Default | Meaning |
|---|---|---|---|
networkPolicy.enabled |
boolean | true |
|
networkPolicy.ingressControllerNamespace |
string | "" |
The namespace of the ingress controller, admitted to core when the Ingress routes to it. Empty: the rule names the port only. |
networkPolicy.egress.enabled |
boolean | true |
|
networkPolicy.egress.core.internet |
boolean | not set | Core may reach the internet on 443. Unset: yes when a model provider or a remote detector catalogue is configured, no otherwise. |
networkPolicy.egress.ingestors.internet |
boolean | true |
The ingestors may reach the cloud's APIs on 443 (default true). |
networkPolicy.egress.extraCidrs |
array | [] |
Further addresses core may reach, as CIDRs. |
networkPolicy.egress.mailCidrs |
array | not set | The addresses of the mail relay named in core.mail.host, as CIDRs: core may reach them on the relay's port, and on no other. A host name cannot be followed by a network policy. |
networkPolicy.egress.core |
string | {} |
Core may reach the internet on 443. Left out: yes when a model provider or a remote detector catalogue is configured, no otherwise. Set true for a mail relay or a code host outside the cluster. |
ingress#
| Value | Type | Default | Meaning |
|---|---|---|---|
ingress.enabled |
boolean | true |
|
ingress.className |
string | nginx |
|
ingress.annotations |
object | not set | |
ingress.hosts |
array | [{"host":"hyvop.test","paths":[{"path":"/api","pathType":"Prefix","serviceName":"hyvop-core","servicePort":80},{"path":"/","pathType":"Prefix","serviceName":"hyvop-ui","servicePort":80}]}] |
|
ingress.tls |
array | [] |
|
ingress.https |
boolean | false |
HTTPS only at the ingress. Off by default (HTTP); also on when ingress.tls or ingress.certManager is given. true with neither makes a self-signed certificate. |
ingress.certManager.clusterIssuer |
string | "" |
The ClusterIssuer, or the Issuer of this namespace, that issues the certificate (into the Secret hyvop-tls). One of the two. |
ingress.certManager.issuer |
string | "" |
internalTls#
| Value | Type | Default | Meaning |
|---|---|---|---|
internalTls.existingSecret |
string | "" |
A Secret of your own with ca.crt, tls.crt and tls.key for the ingestors, in place of the authority and certificate the chart makes. |
postgres#
| Value | Type | Default | Meaning |
|---|---|---|---|
postgres.enabled |
boolean | true |
|
postgres.image |
string or object | postgres:18-alpine@sha256:77f585114c32fbca283dc835b0596f4e52b51b4c6662d7810b2f4084f60a1873 |
An image reference: repository with a tag or a digest, or neither for one of Hyvop's own (the chart then uses appVersion); or a map with repository, tag and optionally pullPolicy. |
postgres.existingSecret |
string | "" |
A Secret of your own holding the password of postgres.db.user (key: password). |
postgres.persistence.enabled |
boolean | true |
|
postgres.persistence.size |
string, pattern ^[0-9]+(\.[0-9]+)?(m|k|M|G|T|P|E|Ki|Mi|Gi|Ti|Pi|Ei)?$ |
1Gi |
A Kubernetes quantity, such as 500m, 1Gi or 2. |
postgres.persistence.storageClass |
string | "" |
|
postgres.db.core |
string | "" |
Core's database. Empty: hyvop on a new install; slackmcp, the older name, on the upgrade of an install made before the rename. |
postgres.db.user |
string | user |
|
postgres.db.password |
string | "" |
|
postgres.external.enabled |
boolean | false |
valkey#
| Value | Type | Default | Meaning |
|---|---|---|---|
valkey.enabled |
boolean | true |
|
valkey.image |
string or object | valkey/valkey:8.0-alpine@sha256:fd348c9b6999ef15719a1d6b43b810ee1bf2068ded2d7ab6f6dd15943841f28b |
An image reference: repository with a tag or a digest, or neither for one of Hyvop's own (the chart then uses appVersion); or a map with repository, tag and optionally pullPolicy. |
clickhouse#
| Value | Type | Default | Meaning |
|---|---|---|---|
clickhouse.enabled |
boolean | true |
|
clickhouse.image |
string or object | clickhouse/clickhouse-server:24.8@sha256:1ffa82edee000a42c09313bd9f1293d94c570aee74babc1b3ca9983a35fa597b |
An image reference: repository with a tag or a digest, or neither for one of Hyvop's own (the chart then uses appVersion); or a map with repository, tag and optionally pullPolicy. |
clickhouse.existingSecret |
string | "" |
A Secret of your own holding the password of clickhouse.user (key: password). |
clickhouse.accountsExistingSecret |
string | "" |
A Secret of your own holding reader-password and ingest-password. |
clickhouse.persistence.enabled |
boolean | true |
|
clickhouse.persistence.size |
string, pattern ^[0-9]+(\.[0-9]+)?(m|k|M|G|T|P|E|Ki|Mi|Gi|Ti|Pi|Ei)?$ |
2Gi |
A Kubernetes quantity, such as 500m, 1Gi or 2. |
clickhouse.persistence.storageClass |
string | "" |
|
clickhouse.user |
string | user |
|
clickhouse.password |
string | "" |
|
clickhouse.db |
string | datalake |
|
clickhouse.reader.password |
string | "" |
|
clickhouse.ingest.password |
string | "" |
|
clickhouse.external.enabled |
boolean | false |
keycloak#
| Value | Type | Default | Meaning |
|---|---|---|---|
keycloak.enabled |
boolean | false |
Off by default: single sign-on is an Enterprise feature. Switch it on to try sign-in with the bundled development server (it runs start-dev, with no database). |
keycloak.image |
string or object | quay.io/keycloak/keycloak:26.0@sha256:09a381c715ab0b111835b70f2905955274843a219c6f27efb348e4d9f4086858 |
An image reference: repository with a tag or a digest, or neither for one of Hyvop's own (the chart then uses appVersion); or a map with repository, tag and optionally pullPolicy. |
keycloak.existingSecret |
string | "" |
A Secret of your own holding admin-password. |
keycloak.adminUser |
string | admin |
|
keycloak.adminPassword |
string | "" |
githubMcp#
| Value | Type | Default | Meaning |
|---|---|---|---|
githubMcp.enabled |
boolean | true |
The GitHub MCP server core reads repositories, teams and users through. It holds no token: core sends one with each request. |
githubMcp.image |
string or object | ghcr.io/github/github-mcp-server:v1.14.0@sha256:7aaeeec9ae4fe9a736d100c1ff0798f3c219b5009e05f5d3945fcacb13cc196b |
An image reference: repository with a tag or a digest, or neither for one of Hyvop's own (the chart then uses appVersion); or a map with repository, tag and optionally pullPolicy. |
githubMcp.host |
string | "" |
The GitHub host, for GitHub Enterprise Server, for example https://github.example.com. Set on the server as GITHUB_HOST and told to core, which refuses an organisation on another host. One server serves one host. Empty: github.com. |
githubMcp.toolsets |
array | ["context","repos","users","orgs","pull_requests"] |
The groups of tools the server offers. It is always started read-only. |
clickhouseMcp#
| Value | Type | Default | Meaning |
|---|---|---|---|
clickhouseMcp.enabled |
boolean | false |
Off unless asked for: nothing in Hyvop calls this server, and it takes no login of its own, so whoever reaches its port reads the data lake as the read-only account. |
clickhouseMcp.image |
string or object | mcp/clickhouse:latest@sha256:51bcd33e17adede7cf6de666a50e9b1275d53fbe0f4ad0cfd7bd35678a5b8c3f |
An image reference: repository with a tag or a digest, or neither for one of Hyvop's own (the chart then uses appVersion); or a map with repository, tag and optionally pullPolicy. |
Keys every component accepts#
Each component also accepts the keys below, which values.yaml does not set; the chart then applies its own requests, limits and security contexts (the chart README lists them). They are left out of the tables above to keep them short.
| Key | Type | Meaning |
|---|---|---|
<component>.imagePullPolicy |
Always, IfNotPresent or Never |
Pull policy of that component; falls back to global.imagePullPolicy. |
<component>.resources |
object with requests and limits, each with cpu and memory (Kubernetes quantities) |
Replaces the component's requests and limits. |
<component>.podSecurityContext |
object | Replaces the chart's pod security context for that component, whole. |
<component>.containerSecurityContext |
object | Replaces the chart's container security context for that component, whole. |
<component> is each of core, ui, postgres, valkey, clickhouse, keycloak, githubMcp, clickhouseMcp, and ingestors.<cloud> for the ingestors.