Files
jasonwitty 92ec6ea1be
Validate and Deploy to K3s / validate (push) Successful in 20s
Validate and Deploy to K3s / deploy (push) Successful in 27s
Point tududi AI assistant at the local Ollama
tududi speaks the OpenAI chat completions API for its daily brief and
task/project insights, so it can use the Ollama box directly instead of a
hosted provider -- nothing about the task list leaves the network.

LLM_API_KEY has to be set even though Ollama ignores it; without a key
the generation endpoints answer 503 and the UI shows a not-configured
state. It is a secret so the value can be swapped for a real one if the
provider ever changes.

gemma4:e4b was checked against the JSON-only replies these features parse
and answered correctly in about five seconds.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 14:01:32 -07:00

94 lines
2.9 KiB
YAML

# tududi keeps everything in a SQLite file under /app/db and user uploads
# under /app/uploads. Both are declared VOLUMEs in the image, so both have to
# be backed by the PVC or they are lost on restart.
apiVersion: apps/v1
kind: Deployment
metadata:
name: tududi
namespace: tududi
labels:
app.kubernetes.io/name: tududi
spec:
replicas: 1
revisionHistoryLimit: 3
strategy:
# single-writer SQLite on a ReadWriteOnce volume
type: Recreate
selector:
matchLabels:
app.kubernetes.io/name: tududi
template:
metadata:
labels:
app.kubernetes.io/name: tududi
spec:
containers:
- name: tududi
image: chrisvel/tududi:1.3.1
imagePullPolicy: IfNotPresent
env:
# tududi sits behind traefik and the EC2 proxy, so it has to trust
# X-Forwarded-* to build correct URLs and mark cookies secure
- name: TUDUDI_TRUST_PROXY
value: "true"
- name: TUDUDI_USER_EMAIL
valueFrom:
secretKeyRef:
name: tududi
key: user-email
- name: TUDUDI_USER_PASSWORD
valueFrom:
secretKeyRef:
name: tududi
key: user-password
- name: TUDUDI_SESSION_SECRET
valueFrom:
secretKeyRef:
name: tududi
key: session-secret
- name: TZ
value: America/Los_Angeles
# AI assistant (daily brief, task/project insights). tududi speaks
# the OpenAI chat completions API, so it points straight at the
# Ollama box; /v1 is required. A key must be set even though Ollama
# ignores it -- without one the endpoints answer 503.
- name: LLM_BASE_URL
value: http://192.168.1.191:11434/v1
- name: LLM_MODEL
value: gemma4:e4b
- name: LLM_API_KEY
valueFrom:
secretKeyRef:
name: tududi
key: llm-api-key
ports:
- name: http
containerPort: 3002
protocol: TCP
startupProbe:
tcpSocket:
port: http
failureThreshold: 60
periodSeconds: 5
readinessProbe:
tcpSocket:
port: http
periodSeconds: 10
failureThreshold: 3
livenessProbe:
tcpSocket:
port: http
periodSeconds: 20
failureThreshold: 3
volumeMounts:
- name: data
mountPath: /app/db
subPath: db
- name: data
mountPath: /app/uploads
subPath: uploads
volumes:
- name: data
persistentVolumeClaim:
claimName: tududi