Skip to content

Purpose-built Helm charts per platform (openab-telegram, openab-line, etc.) #872

@chaodu-agent

Description

@chaodu-agent

Summary

Create thin, purpose-built Helm wrapper charts for each messaging platform so users can install a fully working OAB bot with minimal configuration:

helm install my-bot openab-telegram --set telegramBotToken="123:ABC"
helm install my-bot openab-line --set lineChannelSecret="xxx" --set lineChannelAccessToken="yyy"

Problem

The current openab chart is powerful but exposes too much surface area for users who just want "OAB on Telegram". A new user must understand:

  • Discord vs gateway adapter distinction
  • Gateway as a separate Deployment (no shared filesystem without PVC)
  • Which values.yaml knobs to set and which to disable
  • Compatible OAB + Gateway version pairs (v* vs gateway-v*)

Proposal

1. Add gateway.colocate mode to core chart

When gateway.colocate: true, the gateway runs as a sidecar container in the same pod as OAB with a shared emptyDir volume. This eliminates the need for PVC just for auth/state sharing between OAB and gateway.

containers:
  - name: oab
    volumeMounts:
      - name: shared-state
        mountPath: /home/node/.openab
  - name: gateway
    volumeMounts:
      - name: shared-state
        mountPath: /home/node/.openab
volumes:
  - name: shared-state
    emptyDir: {}

2. Create wrapper charts per platform

Each wrapper chart depends on the core openab chart as a subchart and pre-configures platform-specific defaults:

charts/
├── openab/                    # existing core chart (source of truth)
├── openab-telegram/
│   ├── Chart.yaml             # dependency: openab ^0.8.x
│   └── values.yaml            # gateway.enabled=true, colocate=true, platform=telegram, discord.enabled=false
├── openab-line/
│   ├── Chart.yaml
│   └── values.yaml
├── openab-googlechat/
├── openab-feishu/
├── openab-wecom/
└── openab-msteams/

Each wrapper:

  • Disables Discord adapter (not needed for gateway-based platforms)
  • Enables gateway in colocate mode
  • Exposes only the 1-3 required --set values for that platform
  • Pins compatible OAB + Gateway versions via dependency version constraint

Target UX

Platform Required --set flags
Telegram telegramBotToken
LINE lineChannelSecret, lineChannelAccessToken
Google Chat googleChatAudience, googleChatSaKeyJson
Feishu feishuAppId, feishuAppSecret
WeCom wecomCorpId, wecomSecret, wecomToken, wecomEncodingAesKey, wecomAgentId
MS Teams teamsAppId, teamsAppSecret

Optional common flags: agentImage (defaults to kiro), persistence.enabled, nodeSelector.

Benefits

  • One command install — no scaffolding knowledge required
  • Version safety — chart pins tested OAB + Gateway combos
  • Shared filesystem — colocate mode eliminates PVC requirement for simple deployments
  • No template duplication — wrappers reuse core chart templates via subchart dependency
  • Discoverablehelm search repo openab- shows all platform options

Alternatives Considered

  • Documentation only — still requires users to understand the full values.yaml
  • Separate monolithic charts per platform — template duplication, maintenance burden
  • Kustomize overlays — less discoverable than Helm for the target audience

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions