f1ab1accaf
Replaces per-request history reconstruction with a persistent AsyncSqliteSaver
checkpointer keyed by conversation ID, so agent state (tool calls, intermediate
steps) carries forward between turns without manual message list building.
Also includes the missing migration for the CronJob model added in bb4619a.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
129 lines
4.5 KiB
YAML
129 lines
4.5 KiB
YAML
version: "3.8"
|
|
|
|
x-raggr-common: &raggr-common
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
image: torrtle/simbarag:latest
|
|
environment:
|
|
- PAPERLESS_TOKEN=${PAPERLESS_TOKEN}
|
|
- BASE_URL=${BASE_URL}
|
|
- OLLAMA_URL=${OLLAMA_URL:-http://localhost:11434}
|
|
- OPENAI_API_KEY=${OPENAI_API_KEY}
|
|
- EMBEDDING_SERVER_URL=${EMBEDDING_SERVER_URL}
|
|
- EMBEDDING_MODEL_NAME=${EMBEDDING_MODEL_NAME}
|
|
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
|
|
- LLAMA_SERVER_URL=${LLAMA_SERVER_URL}
|
|
- LLAMA_MODEL_NAME=${LLAMA_MODEL_NAME}
|
|
- OIDC_ISSUER=${OIDC_ISSUER}
|
|
- OIDC_CLIENT_ID=${OIDC_CLIENT_ID}
|
|
- OIDC_CLIENT_SECRET=${OIDC_CLIENT_SECRET}
|
|
- OIDC_REDIRECT_URI=${OIDC_REDIRECT_URI}
|
|
- OIDC_USE_DISCOVERY=${OIDC_USE_DISCOVERY:-true}
|
|
- DATABASE_URL=${DATABASE_URL:-postgres://raggr:changeme@postgres:5432/raggr}
|
|
- TAVILY_API_KEY=${TAVILIY_API_KEY}
|
|
- YNAB_ACCESS_TOKEN=${YNAB_ACCESS_TOKEN}
|
|
- YNAB_BUDGET_ID=${YNAB_BUDGET_ID}
|
|
- MEALIE_BASE_URL=${MEALIE_BASE_URL}
|
|
- MEALIE_API_TOKEN=${MEALIE_API_TOKEN}
|
|
- TWILIO_ACCOUNT_SID=${TWILIO_ACCOUNT_SID}
|
|
- TWILIO_AUTH_TOKEN=${TWILIO_AUTH_TOKEN}
|
|
- TWILIO_WHATSAPP_NUMBER=${TWILIO_WHATSAPP_NUMBER}
|
|
- ALLOWED_WHATSAPP_NUMBERS=${ALLOWED_WHATSAPP_NUMBERS}
|
|
- TWILIO_SIGNATURE_VALIDATION=${TWILIO_SIGNATURE_VALIDATION:-true}
|
|
- TWILIO_WEBHOOK_URL=${TWILIO_WEBHOOK_URL:-}
|
|
- OBSIDIAN_EMAIL=${OBSIDIAN_EMAIL}
|
|
- OBSIDIAN_PASSWORD=${OBSIDIAN_PASSWORD}
|
|
- OBSIDIAN_VAULT_ID=${OBSIDIAN_VAULT_ID}
|
|
- OBSIDIAN_E2E_PASSWORD=${OBSIDIAN_E2E_PASSWORD}
|
|
- OBSIDIAN_DEVICE_NAME=${OBSIDIAN_DEVICE_NAME}
|
|
- OBSIDIAN_CONTINUOUS_SYNC=${OBSIDIAN_CONTINUOUS_SYNC:-false}
|
|
- OBSIDIAN_VAULT_PATH=${OBSIDIAN_VAULT_PATH:-/app/data/obsidian}
|
|
- S3_ENDPOINT_URL=${S3_ENDPOINT_URL}
|
|
- S3_ACCESS_KEY_ID=${S3_ACCESS_KEY_ID}
|
|
- S3_SECRET_ACCESS_KEY=${S3_SECRET_ACCESS_KEY}
|
|
- S3_BUCKET_NAME=${S3_BUCKET_NAME:-asksimba-images}
|
|
- S3_REGION=${S3_REGION:-garage}
|
|
- OLLAMA_HOST=${OLLAMA_HOST:-http://localhost:11434}
|
|
- FERNET_KEY=${FERNET_KEY}
|
|
- GOOGLE_TOKEN_FILE=${GOOGLE_TOKEN_FILE:-/app/config/google-token.json}
|
|
- MAILGUN_API_KEY=${MAILGUN_API_KEY}
|
|
- MAILGUN_DOMAIN=${MAILGUN_DOMAIN}
|
|
- MAILGUN_WEBHOOK_SIGNING_KEY=${MAILGUN_WEBHOOK_SIGNING_KEY}
|
|
- MAILGUN_SIGNATURE_VALIDATION=${MAILGUN_SIGNATURE_VALIDATION:-true}
|
|
- EMAIL_RATE_LIMIT_MAX=${EMAIL_RATE_LIMIT_MAX:-5}
|
|
- EMAIL_RATE_LIMIT_WINDOW=${EMAIL_RATE_LIMIT_WINDOW:-300}
|
|
- SENDBLUE_API_KEY=${SENDBLUE_API_KEY}
|
|
- SENDBLUE_API_SECRET=${SENDBLUE_API_SECRET}
|
|
- SENDBLUE_FROM_NUMBER=${SENDBLUE_FROM_NUMBER}
|
|
- SENDBLUE_WEBHOOK_SECRET=${SENDBLUE_WEBHOOK_SECRET}
|
|
- SENDBLUE_SIGNATURE_VALIDATION=${SENDBLUE_SIGNATURE_VALIDATION:-true}
|
|
- ALLOWED_IMESSAGE_NUMBERS=${ALLOWED_IMESSAGE_NUMBERS}
|
|
- SIMBAKIT_URL=${SIMBAKIT_URL:-http://simbakit:8585}
|
|
- CRON_SECRET=${CRON_SECRET}
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
volumes:
|
|
- ./obvault:/app/data/obsidian
|
|
- ./token.json:/app/config/google-token.json:ro
|
|
- raggr-checkpoints:/app/checkpoints
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8080/api/health"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 60s
|
|
restart: unless-stopped
|
|
|
|
services:
|
|
postgres:
|
|
image: pgvector/pgvector:pg16
|
|
ports:
|
|
- "5432:5432"
|
|
environment:
|
|
- POSTGRES_USER=${POSTGRES_USER:-raggr}
|
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-changeme}
|
|
- POSTGRES_DB=${POSTGRES_DB:-raggr}
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
- ./docker/init-pgvector.sql:/docker-entrypoint-initdb.d/init-pgvector.sql
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-raggr}"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
restart: unless-stopped
|
|
|
|
# Blue-green deployment: exactly one of raggr-blue/raggr-green serves at a
|
|
# time; Caddy health-checks both ports and routes to the healthy one.
|
|
# Use scripts/deploy.sh (make redeploy) to swap colors with zero downtime.
|
|
raggr-blue:
|
|
<<: *raggr-common
|
|
profiles: ["blue"]
|
|
ports:
|
|
- "8080:8080"
|
|
|
|
raggr-green:
|
|
<<: *raggr-common
|
|
profiles: ["green"]
|
|
ports:
|
|
- "8081:8080"
|
|
|
|
simbakit:
|
|
build:
|
|
context: ./simbakit
|
|
restart: unless-stopped
|
|
volumes:
|
|
- simbakit-data:/app/data
|
|
environment:
|
|
- PETKIT_USERNAME=${PETKIT_USERNAME}
|
|
- PETKIT_PASSWORD=${PETKIT_PASSWORD}
|
|
- PETKIT_REGION=${PETKIT_REGION:-US}
|
|
- PETKIT_TIMEZONE=${PETKIT_TIMEZONE:-America/New_York}
|
|
|
|
volumes:
|
|
postgres_data:
|
|
simbakit-data:
|
|
raggr-checkpoints:
|