Helm charts are in the akupara repository.
Prerequisites
Cluster:- Kubernetes 1.21+ (1.25+ recommended)
kubectlconfiguredhelm3.0+
- Container registry credentials
- License (contact [email protected])
- LLM provider API keys (see requirements)
- GitHub App or GitLab OAuth configured
Setup
1
Clone repository
2
Install Hatchet
Hatchet is the workflow orchestration system. Install it first:Wait ~30 seconds, then port-forward to access the admin portal:Generate an API token:
- Open
http://localhost:8080 - Login with
[email protected]/Admin123!! - Go to Settings > API Tokens > Generate API Token
- Copy and save the token
3
Create registry secret
4
Configure values.yaml
Open Global settings:See values.yaml for all options.
values.yaml and configure:Secrets:Default values.yaml uses Helicone proxy URLs. Update
anthropic.baseUrl and openai.apiBaseUrl to use direct provider APIs as shown above.5
Deploy
6
Verify
Running. Verify Hatchet shows 4 registered workers at http://localhost:8080.Access the web UI:Infrastructure by Cloud Provider
If you don’t already have a Kubernetes cluster, use these guides to create one.AWS (EKS)
Terraform configurations are provided:terraform.tfvars with your GitHub App credentials and LLM API keys, then:
GCP (GKE)
Terraform configuration creates full infrastructure:- VPC with private/public subnets
- Cloud SQL (PostgreSQL 16)
- Memorystore (Redis)
- GKE cluster with node pool
- Secret Manager secrets
- Service account with Vertex AI access
terraform.tfvars with required variables:
Azure (AKS)
No Terraform provided for Azure. Create a cluster manually:values.yaml:
Other Environments
For on-prem, k3s, Rancher, or OpenShift:- Kubernetes 1.21+ required
- The Helm chart deploys PostgreSQL by default
- Redis is optional (disabled by default)
- Configure an ingress controller or load balancer for external access
Resource Sizing
Production recommendations (adjust based on team size):| Service | CPU Request | CPU Limit | Memory | Replicas |
|---|---|---|---|---|
| API | 100m | 2000m | 2-4Gi | 20 |
| Chunker | 4000m | 8000m | 24-48Gi | 10 |
| Summarizer | 1000m | 2000m | 2-4Gi | 50 |
| Reviews | 500m | 1000m | 1-2Gi | 36 |
| Webhook | 500m | 1000m | 1-2Gi | 5 |
| Web | 500m | 1000m | 512Mi-1Gi | 3 |
Operations
Scaling
Updating
Viewing Logs
Monitoring
- Hatchet dashboard (
http://localhost:8080): Workflow status, queue depth, worker health - Pod health:
kubectl get pods - Resource usage:
kubectl top pods - Events:
kubectl get events --sort-by='.lastTimestamp'
Troubleshooting
Pods Not Starting
| Symptom | Cause | Fix |
|---|---|---|
ImagePullBackOff | Registry auth failed | Verify regcred secret |
CrashLoopBackOff | App error | Check logs: kubectl logs <pod> |
Pending | No resources | Scale cluster or reduce resource requests |
Hatchet Workers Not Registering
If Hatchet portal shows 0 workers:- Verify
secrets.hatchetClientTokenmatches the token from Hatchet portal - Check worker logs:
kubectl logs -l app=greptile-reviews - Regenerate token if needed and redeploy:
helm upgrade greptile . -f values.yaml
Database Connection Issues
Test connectivity:CREATE EXTENSION IF NOT EXISTS vector;
Webhooks Not Working
- Verify
global.externalUrlis publicly accessible - Check webhook URL in GitHub App matches
https://<externalUrl>/webhook - Check logs:
kubectl logs -l app=greptile-webhook --tail=100
LLM Errors
Check LLM proxy logs:values.yaml.