version: 1
kind: platform-infra-langbot

metadata:
  id: langbot-public
  owner: unidesk
  relatedIssues:
    - 297

defaults:
  targetId: G14

image:
  repository: rockchin/langbot
  tag: v4.10.1
  pullPolicy: IfNotPresent

dependencyImages:
  postgresClient: docker.io/library/postgres:16-alpine

targets:
  - id: G14
    route: G14:k3s
    namespace: platform-infra
    enabled: true
    replicas: 1
    publicExposure:
      enabled: true
      publicBaseUrl: https://langbot.pikapython.com
      dns:
        hostname: langbot.pikapython.com
        expectedA: 82.156.23.220
        resolvers: [1.1.1.1, 8.8.8.8, 223.5.5.5, 114.114.114.114]
      frpc:
        deploymentName: langbot-frpc
        secretName: langbot-frpc-secrets
        secretKey: frpc.toml
        image: fatedier/frpc:v0.68.1
        serverAddr: 82.156.23.220
        serverPort: 22000
        proxyName: platform-infra-langbot-g14-web
        remotePort: 22097
        localIP: langbot.platform-infra.svc.cluster.local
        localPort: 5300
        tokenSourceRef: platform-infra/pk01-frp.env
        tokenSourceKey: FRP_TOKEN
      pk01:
        route: PK01
        caddyConfigPath: /etc/caddy/Caddyfile
        caddyServiceName: caddy
        responseHeaderTimeoutSeconds: 600

runtime:
  timezone: Asia/Shanghai
  database:
    mode: external
    sourceRef: platform-db/langbot-db.env
    sourceKeys:
      user: LANGBOT_DB_USER
      password: LANGBOT_DB_PASSWORD
      dbName: LANGBOT_DB_NAME
    secretName: langbot-secrets
    host: 82.156.23.220
    port: 5432
    user: langbot
    dbName: langbot
    sslMode: require
    appDatabaseValue: langbot?ssl=require
  secrets:
    root: /root/.unidesk/.state/secrets
    appSourceRef: platform-infra/langbot.env
  storage:
    data:
      name: langbot-data
      size: 10Gi
    plugins:
      name: langbot-plugins
      size: 5Gi
    pluginRuntime:
      name: langbot-plugin-runtime-data
      size: 5Gi
  box:
    enabled: false
    reason: LangBot Box mounts Docker socket in the official manifest; public platform service keeps it disabled by default.

apiKey:
  sourceRef: platform-infra/langbot.env
  key: LANGBOT_API_KEY
  name: unidesk-langbot-cli
  description: UniDesk controlled CLI API key for langbot.pikapython.com

officialWechat:
  supportedAdapters:
    - officialaccount
    - wecom
    - wecomcs
  webhookBaseUrl: https://langbot.pikapython.com
  defaultCallbackPath: /callback/command
  notes:
    - Official account, WeCom, and WeCom customer service adapters are supported through LangBot official platform sources.
    - Personal WeChat/OpenClaw is not enabled by default for this public service.
