MetaLoom ships two Helm charts for deploying on Kubernetes — one per component. They live in the
helm/ directory of the source repository.
| Chart | Deploys |
|---|---|
|
The Loom backend server (REST/gRPC/GraphQL API, database access, auth, storage, the pipeline engine, the AI agent) and the bundled web UI. Optionally a self-contained PostgreSQL for quick starts. |
|
One or more Cortex workers. They register with Loom and run the node tasks it dispatches. The worker image is overridable, so the same chart runs the stock worker or a custom node image. |
Prerequisites
-
Kubernetes 1.23+ and Helm 3
-
A
StorageClassfor Loom’s persistent volumes -
The MetaLoom container images reachable from your cluster (see Container Images)
-
A PostgreSQL database — an external managed one (recommended) or the loom chart’s optional bundled Postgres
Install Loom
For evaluation, let the chart run a self-contained PostgreSQL alongside Loom:
helm install loom ./helm/loom \
--set postgresql.enabled=true \
--set auth.initialPassword=<admin-password>
For production, point Loom at an external managed database and expose it through an Ingress:
helm install loom ./helm/loom \
--set database.host=postgres.internal \
--set database.name=loom \
--set database.user=loom \
--set database.password=<db-password> \
--set auth.initialPassword=<admin-password> \
--set ingress.enabled=true \
--set ingress.host=loom.example.com
Log in to the UI (/ui/) as admin with the password you set.
|
Tip
|
The bundled PostgreSQL uses the official postgres image and is meant for quick starts and
evaluation. It is not a managed, backed-up database — run a managed one in production.
|
Two things a Loom chart must get right
|
Warning
|
|
Install Cortex
Add one or more workers, pointed at the Loom Service:
helm install cortex ./helm/cortex \
--set loom.host=loom \
--set loom.token=<api-token>
Workers dial out to Loom; Loom never connects in to a worker. Scale with replicaCount — each
replica registers as its own worker with a stable identity.
|
Note
|
A worker is handed a path to media, not the bytes, so any source/hash/transcription node needs
the same media mounted that Loom uses. Enable the media volume (--set media.enabled=true with an
existingClaim, hostPath or nfs source) for those workers.
|
Running a custom node image
The cortex chart’s image.repository value is how you run your own worker — a custom Java daemon
or a from-scratch Python worker — instead of the stock one. Build an image from the
Cortex examples and point the chart at it:
# A JVM custom worker (built on the stock image; serves the health endpoints):
helm install cortex ./helm/cortex \
--set image.repository=metaloom/cortex-custom \
--set loom.token=<token> \
--set 'nodeKinds={hello-world}'
# A minimal Python worker that does NOT serve a monitoring port — disable the HTTP probes:
helm install cortex-py ./helm/cortex \
--set image.repository=metaloom/cortex-python \
--set loom.token=<token> \
--set readinessProbe.enabled=false \
--set livenessProbe.type=tcpSocket \
--set 'nodeKinds={py-hello}'
nodeKinds advertises which node kinds the worker runs. Use command/args if your image needs a
different entrypoint and extraEnv for image-specific settings.
Selected values
| Key | Default | Purpose |
|---|---|---|
|
|
Server image ( |
|
|
Bootstrap admin password. Change it. |
|
— |
External database connection. |
|
|
Run a bundled PostgreSQL (dev / evaluation). |
|
enabled |
Persistent volumes (keep keystore + config). |
|
|
Expose the REST/UI port. |
|
|
Chat agent LLM provider. |
|
|
Coding sandbox + runner-namespace guardrails. |
| Key | Default | Purpose |
|---|---|---|
|
|
Worker image — override for a custom one. |
|
|
Loom Service to register with. |
|
— |
API token for registration and result write-back. |
|
|
Number of workers. |
|
all |
Node kinds this worker advertises. |
|
|
Shared source-media mount. |
|
httpGet on |
Health probes (disable/retype for minimal images). |
|
small |
Add |
The charts ship a fully commented values.yaml; the READMEs in helm/loom and helm/cortex list
every key.
Verify
helm lint ./helm/loom ./helm/cortex
helm template loom ./helm/loom --set postgresql.enabled=true
kubectl rollout status deploy/loom
# Confirm a worker joined the fleet:
kubectl get pods -l app.kubernetes.io/name=cortex
Next steps
-
Container Images — the image and port inventory the charts deploy
-
Kubernetes playbook — the underlying manifests, service account, sandbox guardrails and worker pools explained step by step
-
Cortex examples — build a custom Java or Python worker image
-
Loom Metrics and Cortex Metrics — scrape the deployed components