01969b2d24
Adds simbakit/ as a subfolder service that polls PetKit smart devices (litter box, fountain, feeder) and exposes pet weight, litter activity, and device health data via three new LangChain tools. Also fixes stale alerts bug where cleared conditions (e.g. waste bin full) persisted because the query used max alert time instead of the device's last_seen_at timestamp. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
139 lines
5.2 KiB
Bash
139 lines
5.2 KiB
Bash
# Database Configuration
|
|
# PostgreSQL is recommended (required for OIDC features)
|
|
DATABASE_URL=postgres://raggr:changeme@postgres:5432/raggr
|
|
|
|
# PostgreSQL credentials (if using docker-compose postgres service)
|
|
POSTGRES_USER=raggr
|
|
POSTGRES_PASSWORD=changeme
|
|
POSTGRES_DB=raggr
|
|
|
|
# JWT Configuration
|
|
JWT_SECRET_KEY=your-secret-key-here
|
|
|
|
# Paperless Configuration
|
|
PAPERLESS_TOKEN=your-paperless-token
|
|
BASE_URL=192.168.1.5:8000
|
|
|
|
# llama-server Configuration (OpenAI-compatible API)
|
|
# If set, uses llama-server as the primary LLM backend with OpenAI as fallback
|
|
LLAMA_SERVER_URL=http://192.168.1.213:8080/v1
|
|
LLAMA_MODEL_NAME=llama-3.1-8b-instruct
|
|
|
|
# Embedding Server Configuration
|
|
# If set, uses a custom OpenAI-compatible embedding server (e.g. llama-server)
|
|
# Falls back to OpenAI embeddings if not set
|
|
EMBEDDING_SERVER_URL=http://192.168.1.7:8086/v1
|
|
EMBEDDING_MODEL_NAME=all-minilm
|
|
|
|
# OpenAI Configuration
|
|
OPENAI_API_KEY=your-openai-api-key
|
|
|
|
# Tavily Configuration (for web search)
|
|
TAVILY_API_KEY=your-tavily-api-key
|
|
|
|
# Immich Configuration
|
|
IMMICH_URL=http://192.168.1.5:2283
|
|
IMMICH_API_KEY=your-immich-api-key
|
|
SEARCH_QUERY=simba cat
|
|
DOWNLOAD_DIR=./simba_photos
|
|
|
|
# OIDC Configuration (Authelia)
|
|
OIDC_ISSUER=https://auth.example.com
|
|
OIDC_CLIENT_ID=simbarag
|
|
OIDC_CLIENT_SECRET=your-client-secret-here
|
|
OIDC_REDIRECT_URI=http://localhost:8080/
|
|
OIDC_USE_DISCOVERY=true
|
|
|
|
# Optional: Manual OIDC endpoints (if discovery is disabled)
|
|
# OIDC_AUTHORIZATION_ENDPOINT=https://auth.example.com/api/oidc/authorization
|
|
# OIDC_TOKEN_ENDPOINT=https://auth.example.com/api/oidc/token
|
|
# OIDC_USERINFO_ENDPOINT=https://auth.example.com/api/oidc/userinfo
|
|
# OIDC_JWKS_URI=https://auth.example.com/api/oidc/jwks
|
|
|
|
# YNAB Configuration
|
|
# Get your Personal Access Token from https://app.ynab.com/settings/developer
|
|
YNAB_ACCESS_TOKEN=your-ynab-personal-access-token
|
|
# Optional: Specify a budget ID, or leave empty to use the default/first budget
|
|
YNAB_BUDGET_ID=
|
|
|
|
# Mealie Configuration
|
|
# Base URL for your Mealie instance (e.g., http://192.168.1.5:9000 or https://mealie.example.com)
|
|
MEALIE_BASE_URL=http://192.168.1.5:9000
|
|
# Get your API token from Mealie's user settings page
|
|
MEALIE_API_TOKEN=your-mealie-api-token
|
|
|
|
# Email Integration
|
|
# Email Encryption Key (32-byte URL-safe base64)
|
|
# Generate with: python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
|
|
FERNET_KEY=your-fernet-key-here
|
|
|
|
# Twilio Configuration (WhatsApp)
|
|
TWILIO_ACCOUNT_SID=your-twilio-account-sid
|
|
TWILIO_AUTH_TOKEN=your-twilio-auth-token
|
|
TWILIO_WHATSAPP_NUMBER=whatsapp:+14155238886
|
|
# Comma-separated list of WhatsApp numbers allowed to use the service (e.g., whatsapp:+1234567890)
|
|
# Use * to allow any number
|
|
ALLOWED_WHATSAPP_NUMBERS=
|
|
# Set to false to disable Twilio signature validation in development
|
|
TWILIO_SIGNATURE_VALIDATION=true
|
|
# If behind a reverse proxy, set this to your public webhook URL so signature validation works
|
|
# TWILIO_WEBHOOK_URL=https://your-domain.com/api/whatsapp/webhook
|
|
# Rate limiting: max messages per window (default: 10 messages per 60 seconds)
|
|
# WHATSAPP_RATE_LIMIT_MAX=10
|
|
# WHATSAPP_RATE_LIMIT_WINDOW=60
|
|
|
|
# Mailgun Configuration (Email channel)
|
|
MAILGUN_API_KEY=
|
|
MAILGUN_DOMAIN=
|
|
MAILGUN_WEBHOOK_SIGNING_KEY=
|
|
EMAIL_HMAC_SECRET=
|
|
# Rate limiting: max emails per window (default: 5 per 300 seconds)
|
|
# EMAIL_RATE_LIMIT_MAX=5
|
|
# EMAIL_RATE_LIMIT_WINDOW=300
|
|
# Set to false to disable Mailgun signature validation in development
|
|
MAILGUN_SIGNATURE_VALIDATION=true
|
|
|
|
# SendBlue Configuration (iMessage)
|
|
SENDBLUE_API_KEY=your-sendblue-api-key
|
|
SENDBLUE_API_SECRET=your-sendblue-api-secret
|
|
SENDBLUE_FROM_NUMBER=+1XXXXXXXXXX
|
|
SENDBLUE_WEBHOOK_SECRET=your-sendblue-webhook-secret
|
|
# Set to false to disable SendBlue signature validation in development
|
|
SENDBLUE_SIGNATURE_VALIDATION=true
|
|
# Comma-separated list of iMessage numbers allowed to use the service (E.164 format)
|
|
# Use * to allow any number
|
|
ALLOWED_IMESSAGE_NUMBERS=
|
|
# Rate limiting: max messages per window (default: 10 messages per 60 seconds)
|
|
# IMESSAGE_RATE_LIMIT_MAX=10
|
|
# IMESSAGE_RATE_LIMIT_WINDOW=60
|
|
|
|
# Google Calendar Configuration (via gws CLI)
|
|
GOOGLE_CALENDAR_ENABLED=true
|
|
# Export credentials: gws auth export --unmasked > credentials.json
|
|
# The file is mounted into the container at /app/config/gws-credentials.json
|
|
GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/app/config/gws-credentials.json
|
|
|
|
# SimbaKit / PetKit Configuration
|
|
# PetKit account credentials (used by SimbaKit to poll device data)
|
|
PETKIT_USERNAME=your-petkit-email
|
|
PETKIT_PASSWORD=your-petkit-password
|
|
PETKIT_REGION=US
|
|
PETKIT_TIMEZONE=America/New_York
|
|
# Internal URL for SimbaKit service (Docker network)
|
|
SIMBAKIT_URL=http://simbakit:8585
|
|
|
|
# Obsidian Configuration (headless sync)
|
|
# Obsidian account credentials (used for `ob login` on container startup)
|
|
OBSIDIAN_EMAIL=your-obsidian-email
|
|
OBSIDIAN_PASSWORD=your-obsidian-password
|
|
# Vault ID to sync (found in Obsidian sync settings)
|
|
OBSIDIAN_VAULT_ID=your-vault-id
|
|
# End-to-end encryption password (if vault uses E2E encryption)
|
|
OBSIDIAN_E2E_PASSWORD=
|
|
# Device name shown in Obsidian sync activity
|
|
OBSIDIAN_DEVICE_NAME=simbarag
|
|
# Set to true to run continuous sync in the background
|
|
OBSIDIAN_CONTINUOUS_SYNC=false
|
|
# Local path to Obsidian vault (where files are synced)
|
|
OBSIDIAN_VAULT_PATH=/app/data/obsidian
|