Skip to content

Automatisch

Open-source business automation platform — a self-hosted alternative to Zapier and Make. Automatisch provides a visual workflow builder, pre-built integrations with popular services, webhook triggers, and OAuth-based connection management. It requires both PostgreSQL and Redis to operate.

Set webAppUrl to your public URL before configuring integrations

The default automatisch.webAppUrl is http://localhost:3000. Without changing it to your public URL, OAuth callbacks from external services (GitHub, Slack, Google, etc.) will redirect to localhost and fail. Webhook URLs generated by Automatisch will also be unreachable from the internet. Set this before adding any integration.

Key Features

  • Visual workflow builder — drag-and-drop interface for creating multi-step automations
  • Pre-built integrations — connect GitHub, Slack, Google Sheets, Telegram, and more
  • Webhook triggers — start workflows from external HTTP events
  • OAuth connection management — secure service connections with token refresh
  • PostgreSQL backend — stores workflows, connections, and execution history
  • Redis queue — asynchronous job execution for reliable workflow processing
  • Auto-generated secrets — encryption and JWT keys generated on first install

Installation

HTTPS repository:

helm repo add helmforge https://repo.helmforge.dev
helm repo update
helm install automatisch helmforge/automatisch

OCI registry:

helm install automatisch oci://ghcr.io/helmforgedev/helm/automatisch

Deployment Examples

# values.yaml — Automatisch with bundled PostgreSQL and Redis
automatisch:
  webAppUrl: 'https://automate.example.com'

postgresql:
  enabled: true
  auth:
    password: 'postgres-password'

redis:
  enabled: true

ingress:
  enabled: true
  ingressClassName: traefik
  hosts:
    - host: automate.example.com
      paths:
        - path: /
          pathType: Prefix
# values.yaml — Production Automatisch with TLS and resource limits
automatisch:
  webAppUrl: 'https://automate.example.com'
  appEnv: production

postgresql:
  enabled: true
  auth:
    password: 'postgres-password'

redis:
  enabled: true

resources:
  requests:
    memory: 256Mi
    cpu: 100m
  limits:
    memory: 1Gi
    cpu: 500m

ingress:
  enabled: true
  ingressClassName: traefik
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
  hosts:
    - host: automate.example.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: automatisch-tls
      hosts:
        - automate.example.com
# values.yaml — Automatisch with external PostgreSQL and Redis
automatisch:
  webAppUrl: 'https://automate.example.com'

database:
  external:
    host: postgresql.database.svc.cluster.local
    port: '5432'
    name: automatisch
    username: automatisch
    existingSecret: automatisch-db-credentials
    existingSecretPasswordKey: password

redis_config:
  external:
    host: redis.cache.svc.cluster.local
    port: '6379'

postgresql:
  enabled: false

redis:
  enabled: false

ingress:
  enabled: true
  ingressClassName: traefik
  hosts:
    - host: automate.example.com
      paths:
        - path: /
          pathType: Prefix

Configuration Reference

Core

ParameterTypeDefaultDescription
nameOverridestring""Override the chart name.
fullnameOverridestring""Override the full release name.
commonLabelsobject{}Extra labels added to all resources.

Image

ParameterTypeDefaultDescription
image.repositorystringdocker.io/automatischio/automatischAutomatisch container image.
image.tagstring"0.15.0"Image tag.
image.pullPolicystringIfNotPresentImage pull policy.
imagePullSecretsarray[]Pull secrets for private registries.

Automatisch Configuration

ParameterTypeDefaultDescription
automatisch.webAppUrlstringhttp://localhost:3000Public URL of the Automatisch instance. Required for OAuth callbacks and webhooks.
automatisch.appEnvstringproductionApplication environment. Keep production in all non-development deployments.
automatisch.extraEnvarray[]Extra environment variables for advanced configuration.

Database — External PostgreSQL

Used when postgresql.enabled: false.

ParameterTypeDefaultDescription
database.external.hoststring""External PostgreSQL hostname.
database.external.portstring"5432"External PostgreSQL port.
database.external.namestringautomatischDatabase name on the external server.
database.external.usernamestringautomatischUsername for the external database.
database.external.passwordstring""Password for the external database (prefer existingSecret).
database.external.existingSecretstring""Existing secret containing the database password.
database.external.existingSecretPasswordKeystringpasswordKey inside the existing secret for the password.

Redis — External

Used when redis.enabled: false. Note the key name is redis_config (with underscore).

ParameterTypeDefaultDescription
redis_config.external.hoststring""External Redis hostname.
redis_config.external.portstring"6379"External Redis port.
redis_config.external.existingSecretstring""Existing secret containing the Redis password.
Both PostgreSQL and Redis are required

Automatisch uses PostgreSQL to store workflow definitions, connections, and execution logs, and Redis as a job queue for asynchronous workflow execution. If either dependency is unavailable, workflows will not run. When using external services, ensure both are reachable from the cluster before deploying.

Subcharts

ParameterTypeDefaultDescription
postgresql.enabledbooleantrueDeploy the bundled PostgreSQL subchart.
postgresql.auth.databasestringautomatischDatabase name created by the subchart.
postgresql.auth.usernamestringautomatischDatabase user created by the subchart.
postgresql.auth.passwordstring""Database password. Auto-generated if empty.
redis.enabledbooleantrueDeploy the bundled Redis subchart.
redis.architecturestringstandaloneRedis architecture.

Service

ParameterTypeDefaultDescription
service.typestringClusterIPKubernetes service type.
service.portinteger80Service port exposed to the cluster.
service.annotationsobject{}Annotations for the Service.

Ingress

ParameterTypeDefaultDescription
ingress.enabledbooleanfalseEnable an Ingress resource.
ingress.ingressClassNamestringtraefikIngress class name.
ingress.annotationsobject{}Annotations for the Ingress (e.g. cert-manager).
ingress.hostsarray[]Ingress host and path rules.
ingress.tlsarray[]TLS configuration (secret name and hosts).

Probes

ParameterTypeDefaultDescription
probes.startup.enabledbooleantrueEnable startup probe.
probes.startup.initialDelaySecondsinteger10Startup probe initial delay.
probes.startup.periodSecondsinteger5Startup probe period.
probes.startup.timeoutSecondsinteger3Startup probe timeout.
probes.startup.failureThresholdinteger30Startup probe failure threshold.
probes.liveness.enabledbooleantrueEnable liveness probe.
probes.liveness.initialDelaySecondsinteger0Liveness probe initial delay.
probes.liveness.periodSecondsinteger15Liveness probe period.
probes.liveness.timeoutSecondsinteger5Liveness probe timeout.
probes.liveness.failureThresholdinteger3Liveness probe failure threshold.
probes.readiness.enabledbooleantrueEnable readiness probe.
probes.readiness.initialDelaySecondsinteger0Readiness probe initial delay.
probes.readiness.periodSecondsinteger10Readiness probe period.
probes.readiness.timeoutSecondsinteger5Readiness probe timeout.
probes.readiness.failureThresholdinteger3Readiness probe failure threshold.

Resources and Security

ParameterTypeDefaultDescription
resourcesobject{}CPU and memory requests and limits.
podSecurityContextobject{}Pod-level security context.
securityContextobject{}Container-level security context.

Service Account

ParameterTypeDefaultDescription
serviceAccount.createbooleanfalseCreate a dedicated ServiceAccount.
serviceAccount.namestring""Override the ServiceAccount name.
serviceAccount.annotationsobject{}Annotations for the ServiceAccount.

Scheduling

ParameterTypeDefaultDescription
nodeSelectorobject{}Node selector for scheduling.
tolerationsarray[]Tolerations for scheduling.
affinityobject{}Affinity rules.
topologySpreadConstraintsarray[]Topology spread constraints.
priorityClassNamestring""PriorityClass for the pod.
terminationGracePeriodSecondsinteger30Termination grace period.
podLabelsobject{}Extra labels for the pod.
podAnnotationsobject{}Extra annotations for the pod.

Extra

ParameterTypeDefaultDescription
extraVolumesarray[]Extra volumes to attach to the pod.
extraVolumeMountsarray[]Extra volume mounts for the container.
extraManifestsarray[]Extra Kubernetes manifests deployed alongside the chart.

More Information