services:
ollama:
image: ollama/ollama:latest
ports:
- "11434:11434"
volumes:
- ollama_models:/root/.ollama
profiles:
- gpu
- cpu
qdrant:
image: qdrant/qdrant:v1.16.3
ports:
- "6333:6333"
- "6334:6334"
volumes:
- qdrant_data:/qdrant/storage
environment:
- QDRANT__LOG_LEVEL=INFO
profiles:
- gpu
- cpu
zeph:
image: ${ZEPH_IMAGE:-ghcr.io/bug-ops/zeph:latest}
pull_policy: always
depends_on:
ollama:
condition: service_started
required: false
qdrant:
condition: service_started
required: false
environment:
ZEPH_LLM_PROVIDER: ${ZEPH_LLM_PROVIDER:-ollama}
ZEPH_LLM_BASE_URL: ${ZEPH_LLM_BASE_URL:-http://ollama:11434}
ZEPH_LLM_MODEL: ${ZEPH_LLM_MODEL:-mistral:7b}
ZEPH_LLM_EMBEDDING_MODEL: ${ZEPH_LLM_EMBEDDING_MODEL:-qwen3-embedding}
ZEPH_CLAUDE_API_KEY: ${ZEPH_CLAUDE_API_KEY:-}
ZEPH_TELEGRAM_TOKEN: ${ZEPH_TELEGRAM_TOKEN:-}
ZEPH_SQLITE_PATH: /app/.zeph/data/zeph.db
ZEPH_DATABASE_URL: ${ZEPH_DATABASE_URL:-}
ZEPH_QDRANT_URL: ${ZEPH_QDRANT_URL:-http://qdrant:6334}
ZEPH_MEMORY_SEMANTIC_ENABLED: ${ZEPH_MEMORY_SEMANTIC_ENABLED:-false}
ZEPH_MEMORY_RECALL_LIMIT: ${ZEPH_MEMORY_RECALL_LIMIT:-5}
ZEPH_A2A_ENABLED: ${ZEPH_A2A_ENABLED:-false}
ZEPH_A2A_HOST: ${ZEPH_A2A_HOST:-0.0.0.0}
ZEPH_A2A_PORT: ${ZEPH_A2A_PORT:-8080}
ZEPH_A2A_PUBLIC_URL: ${ZEPH_A2A_PUBLIC_URL:-}
ZEPH_A2A_AUTH_TOKEN: ${ZEPH_A2A_AUTH_TOKEN:-}
ZEPH_A2A_RATE_LIMIT: ${ZEPH_A2A_RATE_LIMIT:-60}
ZEPH_A2A_REQUIRE_TLS: ${ZEPH_A2A_REQUIRE_TLS:-true}
ZEPH_A2A_SSRF_PROTECTION: ${ZEPH_A2A_SSRF_PROTECTION:-true}
ZEPH_SECURITY_REDACT_SECRETS: ${ZEPH_SECURITY_REDACT_SECRETS:-true}
ZEPH_TOOLS_AUDIT_ENABLED: ${ZEPH_TOOLS_AUDIT_ENABLED:-false}
ZEPH_TOOLS_AUDIT_DESTINATION: ${ZEPH_TOOLS_AUDIT_DESTINATION:-stdout}
ZEPH_CONFIG: ${ZEPH_CONFIG:-}
ZEPH_VAULT_BACKEND: ${ZEPH_VAULT_BACKEND:-}
ZEPH_LLM_RESPONSE_CACHE_ENABLED: ${ZEPH_LLM_RESPONSE_CACHE_ENABLED:-}
ZEPH_LLM_RESPONSE_CACHE_TTL_SECS: ${ZEPH_LLM_RESPONSE_CACHE_TTL_SECS:-}
ZEPH_LLM_SEMANTIC_CACHE_ENABLED: ${ZEPH_LLM_SEMANTIC_CACHE_ENABLED:-}
ZEPH_LLM_SEMANTIC_CACHE_THRESHOLD: ${ZEPH_LLM_SEMANTIC_CACHE_THRESHOLD:-}
ZEPH_LLM_SEMANTIC_CACHE_MAX_CANDIDATES: ${ZEPH_LLM_SEMANTIC_CACHE_MAX_CANDIDATES:-}
ZEPH_OPENAI_API_KEY: ${ZEPH_OPENAI_API_KEY:-}
ZEPH_GEMINI_API_KEY: ${ZEPH_GEMINI_API_KEY:-}
ZEPH_HF_TOKEN: ${ZEPH_HF_TOKEN:-}
ZEPH_GATEWAY_TOKEN: ${ZEPH_GATEWAY_TOKEN:-}
ZEPH_DISCORD_TOKEN: ${ZEPH_DISCORD_TOKEN:-}
ZEPH_DISCORD_APP_ID: ${ZEPH_DISCORD_APP_ID:-}
ZEPH_SLACK_BOT_TOKEN: ${ZEPH_SLACK_BOT_TOKEN:-}
ZEPH_SLACK_SIGNING_SECRET: ${ZEPH_SLACK_SIGNING_SECRET:-}
ZEPH_MEMORY_SUMMARIZATION_THRESHOLD: ${ZEPH_MEMORY_SUMMARIZATION_THRESHOLD:-}
ZEPH_MEMORY_CONTEXT_BUDGET_TOKENS: ${ZEPH_MEMORY_CONTEXT_BUDGET_TOKENS:-}
ZEPH_MEMORY_COMPACTION_THRESHOLD: ${ZEPH_MEMORY_COMPACTION_THRESHOLD:-}
ZEPH_MEMORY_SOFT_COMPACTION_THRESHOLD: ${ZEPH_MEMORY_SOFT_COMPACTION_THRESHOLD:-}
ZEPH_MEMORY_COMPACTION_PRESERVE_TAIL: ${ZEPH_MEMORY_COMPACTION_PRESERVE_TAIL:-}
ZEPH_MEMORY_AUTO_BUDGET: ${ZEPH_MEMORY_AUTO_BUDGET:-}
ZEPH_MEMORY_PRUNE_PROTECT_TOKENS: ${ZEPH_MEMORY_PRUNE_PROTECT_TOKENS:-}
ZEPH_MEMORY_VECTOR_BACKEND: ${ZEPH_MEMORY_VECTOR_BACKEND:-}
ZEPH_MEMORY_SEMANTIC_TEMPORAL_DECAY_ENABLED: ${ZEPH_MEMORY_SEMANTIC_TEMPORAL_DECAY_ENABLED:-}
ZEPH_MEMORY_SEMANTIC_TEMPORAL_DECAY_HALF_LIFE_DAYS: ${ZEPH_MEMORY_SEMANTIC_TEMPORAL_DECAY_HALF_LIFE_DAYS:-}
ZEPH_MEMORY_SEMANTIC_MMR_ENABLED: ${ZEPH_MEMORY_SEMANTIC_MMR_ENABLED:-}
ZEPH_MEMORY_SEMANTIC_MMR_LAMBDA: ${ZEPH_MEMORY_SEMANTIC_MMR_LAMBDA:-}
ZEPH_MEMORY_TOKEN_SAFETY_MARGIN: ${ZEPH_MEMORY_TOKEN_SAFETY_MARGIN:-}
ZEPH_MEMORY_AUTOSAVE_ASSISTANT: ${ZEPH_MEMORY_AUTOSAVE_ASSISTANT:-}
ZEPH_MEMORY_AUTOSAVE_MIN_LENGTH: ${ZEPH_MEMORY_AUTOSAVE_MIN_LENGTH:-}
ZEPH_SKILLS_MAX_ACTIVE: ${ZEPH_SKILLS_MAX_ACTIVE:-}
ZEPH_SKILLS_LEARNING_ENABLED: ${ZEPH_SKILLS_LEARNING_ENABLED:-}
ZEPH_SKILLS_LEARNING_AUTO_ACTIVATE: ${ZEPH_SKILLS_LEARNING_AUTO_ACTIVATE:-}
ZEPH_SKILLS_PROMPT_MODE: ${ZEPH_SKILLS_PROMPT_MODE:-}
ZEPH_TOOLS_SUMMARIZE_OUTPUT: ${ZEPH_TOOLS_SUMMARIZE_OUTPUT:-}
ZEPH_TOOLS_SHELL_ALLOWED_COMMANDS: ${ZEPH_TOOLS_SHELL_ALLOWED_COMMANDS:-}
ZEPH_TOOLS_TIMEOUT: ${ZEPH_TOOLS_TIMEOUT:-}
ZEPH_TOOLS_SCRAPE_TIMEOUT: ${ZEPH_TOOLS_SCRAPE_TIMEOUT:-}
ZEPH_TOOLS_SCRAPE_MAX_BODY: ${ZEPH_TOOLS_SCRAPE_MAX_BODY:-}
ZEPH_TOOLS_SHELL_ALLOWED_PATHS: ${ZEPH_TOOLS_SHELL_ALLOWED_PATHS:-}
ZEPH_TOOLS_SHELL_ALLOW_NETWORK: ${ZEPH_TOOLS_SHELL_ALLOW_NETWORK:-}
ZEPH_A2A_MAX_BODY_SIZE: ${ZEPH_A2A_MAX_BODY_SIZE:-}
ZEPH_ACP_ENABLED: ${ZEPH_ACP_ENABLED:-}
ZEPH_ACP_AGENT_NAME: ${ZEPH_ACP_AGENT_NAME:-}
ZEPH_ACP_AGENT_VERSION: ${ZEPH_ACP_AGENT_VERSION:-}
ZEPH_ACP_MAX_SESSIONS: ${ZEPH_ACP_MAX_SESSIONS:-}
ZEPH_ACP_SESSION_IDLE_TIMEOUT_SECS: ${ZEPH_ACP_SESSION_IDLE_TIMEOUT_SECS:-}
ZEPH_ACP_PERMISSION_FILE: ${ZEPH_ACP_PERMISSION_FILE:-}
ZEPH_ACP_AUTH_TOKEN: ${ZEPH_ACP_AUTH_TOKEN:-}
ZEPH_ACP_DISCOVERY_ENABLED: ${ZEPH_ACP_DISCOVERY_ENABLED:-}
ZEPH_INDEX_ENABLED: ${ZEPH_INDEX_ENABLED:-}
ZEPH_INDEX_MAX_CHUNKS: ${ZEPH_INDEX_MAX_CHUNKS:-}
ZEPH_INDEX_SCORE_THRESHOLD: ${ZEPH_INDEX_SCORE_THRESHOLD:-}
ZEPH_INDEX_BUDGET_RATIO: ${ZEPH_INDEX_BUDGET_RATIO:-}
ZEPH_INDEX_REPO_MAP_TOKENS: ${ZEPH_INDEX_REPO_MAP_TOKENS:-}
ZEPH_STT_PROVIDER: ${ZEPH_STT_PROVIDER:-}
ZEPH_STT_LANGUAGE: ${ZEPH_STT_LANGUAGE:-}
ZEPH_TIMEOUT_LLM: ${ZEPH_TIMEOUT_LLM:-}
ZEPH_TIMEOUT_LLM_REQUEST: ${ZEPH_TIMEOUT_LLM_REQUEST:-}
ZEPH_TIMEOUT_EMBEDDING: ${ZEPH_TIMEOUT_EMBEDDING:-}
ZEPH_TIMEOUT_A2A: ${ZEPH_TIMEOUT_A2A:-}
ZEPH_LOG_FILE: ${ZEPH_LOG_FILE:-}
ZEPH_LOG_LEVEL: ${ZEPH_LOG_LEVEL:-}
ZEPH_AUTO_UPDATE_CHECK: ${ZEPH_AUTO_UPDATE_CHECK:-false}
ports:
- "${ZEPH_A2A_PORT:-8080}:${ZEPH_A2A_PORT:-8080}"
volumes:
- zeph_data:/app/.zeph/data
stdin_open: true
tty: true
volumes:
ollama_models:
qdrant_data:
zeph_data: