Kubernetes and Helm
Quick Install
Open via port-forward:
Helm Configuration
See helm/siloprompts/values.yaml for all options. Key settings:
replicaCount: 2
image:
repository: bdharavathu/siloprompts
tag: "latest"
config:
port: 5000
promptsDir: /app/prompts
dataDir: /app/data
persistence:
prompts:
enabled: true
accessMode: ReadWriteOnce
size: 500Mi
data:
enabled: true
accessMode: ReadWriteOnce
size: 1Gi
ingress:
enabled: false
className: "nginx"
hosts:
- host: siloprompts.local
paths:
- path: /
pathType: Prefix
Upgrade
Uninstall
Team Adoption
SiloPrompts is built for personal use — no auth, no accounts, no friction. But small teams can adapt it by deploying on Kubernetes with an external SSO proxy for identity and a sidecar for bidirectional sync.
The key: an SSO proxy (OAuth2 Proxy, Authelia, etc.) handles authentication externally and passes a user header to SiloPrompts. A sidecar container syncs prompts between the local volume and the source of truth (Git or S3). SiloPrompts itself has zero auth code and zero sync code — it just reads and writes the filesystem.
Architecture
User → SSO Proxy → X-Forwarded-User header → SiloPrompts → reads/writes PV
↕
Sidecar syncs PV ↔ S3/Git
- SSO proxy authenticates users and sets
X-Forwarded-Userheader - SiloPrompts reads the header for favorites, audit logging, and user context
- Users browse, search, copy, create, edit, and favorite prompts through the UI
- Sidecar container syncs the PV with the source of truth (Git or S3) bidirectionally
Use Case 1: Git Backend with ArgoCD
Prompts live in a Git repository. A sidecar commits and pushes UI changes back to Git.
Flow:
User edits via UI → SiloPrompts writes to PV → Sidecar commits & pushes to Git
↕
Team member pushes via CLI/PR → Git updated → Sidecar pulls to PV
Helm values with Git sidecar:
# values-git.yaml
replicaCount: 1
initContainers:
- name: git-clone
image: alpine/git
command:
- sh
- -c
- git clone https://${GIT_TOKEN}@github.com/yourteam/team-prompts.git /app/prompts
env:
- name: GIT_TOKEN
valueFrom:
secretKeyRef:
name: git-credentials
key: token
volumeMounts:
- name: prompts
mountPath: /app/prompts
sidecarContainers:
- name: git-sync
image: alpine/git
command:
- sh
- -c
- |
cd /app/prompts
git config user.name "siloprompts-bot"
git config user.email "bot@siloprompts"
while true; do
git add -A
git diff --cached --quiet || git commit -m "sync: $(date -u +%Y-%m-%dT%H:%M:%SZ)"
git push origin main
git pull --rebase origin main
sleep 300
done
volumeMounts:
- name: prompts
mountPath: /app/prompts
resources:
requests:
memory: 64Mi
cpu: 50m
volumes:
- name: prompts
emptyDir: {}
ArgoCD Application:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: siloprompts
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/yourteam/siloprompts-deploy.git
targetRevision: main
path: helm/siloprompts
helm:
valueFiles:
- values-git.yaml
destination:
server: https://kubernetes.default.svc
namespace: default
syncPolicy:
automated:
prune: true
selfHeal: true
Use Case 2: S3 Backend
Prompts live in an S3 bucket. A sidecar syncs bidirectionally — no pod restarts, no human intervention.
Flow:
User edits via UI → SiloPrompts writes to PV → Sidecar pushes to S3
↕
Team member uploads via CLI/CI → S3 updated → Sidecar pulls to PV
Helm values with S3 sidecar:
# values-s3.yaml
replicaCount: 1
sidecarContainers:
- name: s3-sync
image: amazon/aws-cli
command:
- sh
- -c
- |
while true; do
aws s3 sync /app/prompts/ s3://yourteam-siloprompts/prompts/
aws s3 sync s3://yourteam-siloprompts/prompts/ /app/prompts/
sleep 300
done
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: aws-credentials
key: access-key
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: aws-credentials
key: secret-key
- name: AWS_DEFAULT_REGION
value: us-east-1
volumeMounts:
- name: prompts
mountPath: /app/prompts
resources:
requests:
memory: 64Mi
cpu: 50m
volumes:
- name: prompts
emptyDir: {}
Ingress
ingress:
enabled: true
className: "nginx"
hosts:
- host: prompts.internal.yourcompany.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: siloprompts-tls
hosts:
- prompts.internal.yourcompany.com
Troubleshooting
| Issue | Fix |
|---|---|
Pod stuck in Pending |
Check kubectl describe pod — image pull or secret issues |
| Prompts empty after deploy | Init container failed — check logs with -c git-clone or -c s3-sync |
| Sidecar not pushing | Check kubectl logs <pod> -c git-sync for auth errors |
| S3 access denied | Verify IAM credentials in the Kubernetes secret |
| Git merge conflicts | Sidecar uses --rebase — conflicts may need manual resolution |
Tips for Team Use
- Use tags consistently — agree on a shared vocabulary so search works across the library
- Keep prompts atomic — one prompt per file, with variations as sections
- Enable S3 versioning or Git history — always have a rollback path
- Favorites are per-user — stored server-side keyed by SSO header (v1.1.0+)