Configuration
All deployment configuration lives in local-env.yaml, created by copying
local-env.template.yaml. This page is the operator reference for the settings
that matter most at install time.
The three-tier modelโ
Values resolve in order, each overriding the previous:
defaults.yamlโ safe base defaults. Do not edit.versions.yamlโ pinned component and image versions.local-env.yamlโ your overrides. The only file you normally edit.
cp local-env.template.yaml local-env.yaml
Everything in the template is commented out and shows the corresponding default, so you only uncomment what you intend to change.
๐ก Generate it interactively โ Rather than hand-editing, you can run
./bin/setup-local-env.sh, which prompts for namespace, domains, and which optional components to enable (MetalLB, ingress, cert-manager, monitoring, ClickHouse, PostgreSQL, OpenSearch, SeaweedFS) and writeslocal-env.yamlfor you. See Air-gapped installation ยง3 โ the same script is used online.
Essential settingsโ
Docker Hub accessโ
dockerHub:
token: "your-docker-hub-token" # required for online installs
# server: "https://index.docker.io/v1/" # try this if image pulls fail
# username: octostar
Alternatively export DOCKERHUB_TOKEN in the environment. Not needed for
air-gapped installs (which use a private registry).
Domain and certificatesโ
octostar:
domain: "local.test" # leave as local.test for self-signed local DNS,
# or set to e.g. "os.example.com" for production
internalDomain: true # inject a self-signed cert when the domain isn't public
backendReplicaCount: 4
With a custom domain, point home.<domain>, fusion.<domain>, and
api.<domain> at this host in DNS. For publicly trusted certificates use
ZeroSSL or a wildcard certificate (below).
Namespaceโ
# namespace: "octostar-main" # default; everything deploys here
Dataset sizeโ
# bigData: "none" # "small" โ 30 GB free space, "large" โ 100 GB
Certificatesโ
Choose one approach:
| Approach | When to use | Keys |
|---|---|---|
| Self-signed (default) | local.test / internal demos | octostar.internalDomain: true |
| Supplied TLS secret | You already have a cert/key (PEM, base64) | tls.cert, tls.key |
| Wildcard certificate | One cert for *.<domain> | wildcard.enabled, wildcard.cert, wildcard.key |
| ZeroSSL (ACME) | Automatic public certs | zeroSsl.eab.keyId, zeroSsl.eab.hmac, zeroSsl.challengeType (http01 default / dns01), zeroSsl.email, zeroSsl.cloudflareApiToken (for dns01) |
Data and storage backendsโ
PostgreSQL (CloudNativePG)โ
postgresql:
username: octostar
password: "" # empty โ random password generated on first install
replicas: 1
cpu: 2 # integer โฅ 1
memoryGb: 8 # integer โฅ 5
storageClass: "" # empty โ cluster default
storageSize: "" # e.g. "50Gi"
For air-gap, also set imageName, operatorImageRepository, and
operatorImageTag to your mirrored images โ see
Air-gapped installation.
ClickHouseโ
clickhouse:
enabled: true
replicas: 1
username: clickhouse_admin
password: "" # empty โ random password at install time
storage:
size: 150G
settings:
max_server_memory_usage_to_ram_ratio: 0.5
grafana:
password: "..." # read-only access from Grafana
Set enabled: false to use an existing external ClickHouse.
OpenSearchโ
opensearch:
enabled: true
replicas: 1 # WARNING: lowering this can cause data loss
username: "admin" # applied only at install time
password: "..." # applied only at install time
memoryGb: 6 # โฅ 5 and > heapGb
heapGb: 4 # 4โ30
# url / port: # set ONLY to point at an external OpenSearch
Object storage โ SeaweedFSโ
SeaweedFS is the S3-compatible object store used by the platform
(octostar-api, langfuse, โฆ):
seaweedfs:
enabled: true
active: true
volume:
replicas: 3
storageSize: "50Gi"
storageClass: ""
master:
defaultReplication: "001" # "001" = 2 copies across servers; "000" = none (single-node/dev)
# s3.accessKeyId / s3.secretAccessKey are managed automatically by the
# octostar-k8s-prep job (accessKeyId defaults to "seaweedfs", secret is
# generated on first install). Override only if you need a known key pair.
Networkingโ
ingress:
enabled: true
className: nginx-octostar # use "nginx" on a local single-node cluster
namespace: ingress-nginx-octostar # use "ingress-nginx" on a local single-node cluster
service:
type: NodePort
metallb:
enabled: false
address: "10.96.0.2/32"
certManager:
enabled: true
namespace: cert-manager
Monitoringโ
monitoring:
namespace: "octostar-main"
loki:
retentionPeriod: "7d"
maxEntriesLimitPerQuery: 10000
tempo:
enabled: false # distributed tracing
retentionPeriod: "24h"
Platform behaviour and brandingโ
Under the octostar: block:
| Key | Purpose |
|---|---|
deployApps | "true" to auto-deploy workspace UI apps via AppLifecycle |
appsList | Pipe-separated list of workspace UI apps to deploy (e.g. EntityExtract&Graph | ReportCreator | DataLab | โฆ) |
appParallelDeploys | Number of apps deployed in parallel |
extraWorkspaces | "all" (default), "" (core only), or "a, b, c" (core + listed) |
mainLogo / favicon / spinner | Branding โ HTTPS URL or data:image/...;base64,... |
ecPrivKey / jwtKey | 64-hex-char secrets; set "" to auto-generate |
session.idleTimeoutSeconds | Idle timeout (default 3600, min 300) |
session.maxSessionSeconds | Absolute session cap (default 864000, min 600) |
Other componentsโ
- Fusion center (timbr) โ
timbr.license,timbr.serverMemoryGb(โฅ 5,heap),
timbr.serverHeapGb(4โ30). - Temporal โ
temporal.*,temporalWorker.*. - vLLM โ
vllm.enabled,vllm.url,vllm.model_name. - Tile server / Photon geocoding โ large optional geodata stacks (โ 200 GB / โ 300 GB); see the template comments.
- Pipeline components โ
objectDetection,dataCutter,documentExtractor,imageAugmentation,audioTranscription. Each exposes worker queues, per-task time limits, dynamic batching, and CPU/GPU model placement. Leave commented to use chart defaults; for GPU tuning start fromlocal-env.template-gpu.yaml(see GPU deployments). - API keys โ
assemblyAIAPIKey,espysysAPIKey,openaiToken,socialGistAPIKey,socialLinksAPIKey,localLLMLicenseKey, plus thelangfuse:block (several langfuse secrets are write-once at install time โ note the inline# write-oncemarkers in the template).
Write-once secretsโ
โ ๏ธ Warning โ Several values (notably langfuse
salt,encryptionKey, project keys) are applied only on first install and cannot be changed later by editinglocal-env.yaml. Decide on these before your first install.