Deploy Bytebot on Kubernetes with Helm

Helm provides a simple way to deploy Bytebot on Kubernetes clusters.

Prerequisites

  • Kubernetes cluster (1.19+)
  • Helm 3.x installed
  • kubectl configured
  • 8GB+ available memory in cluster

Quick Start

1

Clone Repository

git clone https://github.com/bytebot-ai/bytebot.git
cd bytebot
2

Configure API Keys

Create a values.yaml file with at least one API key:
bytebot-agent:
  apiKeys:
    anthropic:
      value: "sk-ant-your-key-here"
    # Optional: Add more providers
    # openai:
    #   value: "sk-your-key-here"
    # gemini:
    #   value: "your-key-here"
3

Install Bytebot

helm install bytebot ./helm \
  --namespace bytebot \
  --create-namespace \
  -f values.yaml
4

Access Bytebot

# Port-forward for local access
kubectl port-forward -n bytebot svc/bytebot-ui 9992:9992

# Access at http://localhost:9992

Basic Configuration

API Keys

Configure at least one AI provider:
bytebot-agent:
  apiKeys:
    anthropic:
      value: "sk-ant-your-key-here"
    openai:
      value: "sk-your-key-here"
    gemini:
      value: "your-key-here"

Resource Limits (Optional)

Adjust resources based on your needs:
# Desktop container (where automation runs)
desktop:
  resources:
    requests:
      memory: "2Gi"
      cpu: "1"
    limits:
      memory: "4Gi"
      cpu: "2"

# Agent (AI orchestration)
agent:
  resources:
    requests:
      memory: "1Gi"
      cpu: "500m"

External Access (Optional)

Enable ingress for domain-based access:
ui:
  ingress:
    enabled: true
    hostname: bytebot.your-domain.com
    tls: true

Accessing Bytebot

kubectl port-forward -n bytebot svc/bytebot-ui 9992:9992
Access at: http://localhost:9992

External Access

If you configured ingress:

Verifying Deployment

Check that all pods are running:
kubectl get pods -n bytebot
Expected output:
NAME                              READY   STATUS    RESTARTS   AGE
bytebot-agent-xxxxx               1/1     Running   0          2m
bytebot-desktop-xxxxx             1/1     Running   0          2m
bytebot-postgresql-0              1/1     Running   0          2m
bytebot-ui-xxxxx                 1/1     Running   0          2m

Troubleshooting

Pods Not Starting

Check pod status:
kubectl describe pod -n bytebot <pod-name>
Common issues:
  • Insufficient memory/CPU: Check node resources with kubectl top nodes
  • Missing API keys: Verify your values.yaml configuration

Connection Issues

Test service connectivity:
kubectl logs -n bytebot deployment/bytebot-agent

View Logs

# All logs
kubectl logs -n bytebot -l app=bytebot --tail=100

# Specific component
kubectl logs -n bytebot deployment/bytebot-agent

Upgrading

# Update your values.yaml as needed, then:
helm upgrade bytebot ./helm -n bytebot -f values.yaml

Uninstalling

# Remove Bytebot
helm uninstall bytebot -n bytebot

# Clean up namespace
kubectl delete namespace bytebot

Advanced Configuration

If using Kubernetes secret management (Vault, Sealed Secrets, etc.):
bytebot-agent:
  apiKeys:
    anthropic:
      useExisting: true
      secretName: "my-api-keys"
      secretKey: "anthropic-key"
Create the secret manually:
kubectl create secret generic my-api-keys \
  --namespace bytebot \
  --from-literal=anthropic-key="sk-ant-your-key"
For centralized LLM management, use the included LiteLLM proxy:
helm install bytebot ./helm \
  -f values-proxy.yaml \
  --namespace bytebot \
  --create-namespace \
  --set bytebot-llm-proxy.env.ANTHROPIC_API_KEY="your-key"
This provides:
  • Centralized API key management
  • Request routing and load balancing
  • Rate limiting and retry logic
Configure persistent storage:
desktop:
  persistence:
    enabled: true
    size: "20Gi"
    storageClass: "fast-ssd"

postgresql:
  persistence:
    size: "20Gi"
    storageClass: "fast-ssd"
# Network policies
networkPolicy:
  enabled: true

# Pod security
podSecurityContext:
  runAsNonRoot: true
  runAsUser: 1000
  fsGroup: 1000

# Enable authentication
auth:
  enabled: true
  type: "basic"
  username: "admin"
  password: "changeme"  # Use secrets in production!

Next Steps

Need help? Join our Discord community or check our GitHub discussions.