VoidBot/.env.example
2026-06-08 23:34:35 +01:00

114 lines
4.8 KiB
Shell

NODE_ENV=development
DISCORD_BOT_TOKEN=
DISCORD_APPLICATION_ID=
DISCORD_GUILD_ID=
DISCORD_OWNER_ID=
DISCORD_BOT_TRIGGER_ROLE_IDS=
# Optional persona webhook pipe. Prefer channel-specific URLs; the bot otherwise
# needs Manage Webhooks in the target channel to create its own cached webhook.
# DISCORD_PERSONA_WEBHOOK_URL_<channel_id>=https://discord.com/api/webhooks/<id>/<token>
DISCORD_PERSONA_WEBHOOK_URL=
# Optional default persona avatars. Per-persona keys use the uppercased
# persona name with non-alphanumeric characters replaced by underscores.
# DISCORD_PERSONA_AVATAR_URL_VOID=https://cdn.discordapp.com/avatars/<id>/<hash>.png?size=256
DISCORD_PERSONA_AVATAR_URL=
# Optional public room target for Void-authored artifacts and other ripe public thoughts.
VOID_PUBLIC_ROOM_CHANNEL_ID=
VOID_PUBLIC_ROOM_PERSONA_NAME=Void
VOID_PUBLIC_ROOM_PERSONA_AVATAR_URL=
STATE_STORAGE_BACKEND=postgres
DATABASE_DSN=postgres://voidbot:voidbot@localhost:5432/voidbot
# Leave this as local_json until Qdrant is running and you've migrated the existing vectors.
VECTOR_STORE_KIND=local_json
VECTOR_STORE_PATH=.voidbot/history-vector-store.json
SOURCE_VECTOR_STORE_ROOT=.voidbot/source-vectors
QDRANT_URL=http://127.0.0.1:6333
QDRANT_API_KEY=
QDRANT_TIMEOUT_MS=30000
QDRANT_HISTORY_COLLECTION=voidbot_discord_history_chunks
QDRANT_SOURCE_COLLECTION=voidbot_repository_source_chunks
RAG_ARCHIVE_PATH=.voidbot/rag/messages.json
RAG_SOURCE_ARCHIVE_PATH=.voidbot/rag/source-documents.json
RAG_IMPORT_STATE_PATH=.voidbot/rag/import-state.json
RAG_EMBEDDING_BACKEND=ollama
# Only used by the hash fallback backend. Ollama models report their own vector length.
RAG_EMBEDDING_DIMENSIONS=256
RAG_OLLAMA_BASE_URL=http://127.0.0.1:11434
RAG_OLLAMA_MODEL=qwen3-embedding:0.6b
RAG_OLLAMA_TIMEOUT_MS=30000
RAG_QUERY_INSTRUCTION=Given a Discord history question, retrieve relevant messages and discussion snippets that answer it.
RAG_SOURCE_QUERY_INSTRUCTION=Given a source-tree, codebase, or lore question, retrieve relevant files, code snippets, and lore passages that answer it.
DISCORD_LOG_ROOT=
SOURCE_REPO_ROOT=
SOURCE_REPO_PATTERNS=*
SOURCE_REPO_INCLUDE_PREFIXES=AetheriaLore:Aetheria/
LOCAL_LLM_OLLAMA_BASE_URL=http://127.0.0.1:11434
LOCAL_LLM_OLLAMA_MODEL=qwen3.5:9b
LOCAL_LLM_SOCIAL_READ_OLLAMA_MODEL=
LOCAL_LLM_OLLAMA_TIMEOUT_MS=120000
LOCAL_LLM_OLLAMA_KEEP_ALIVE=10m
LOCAL_LLM_OLLAMA_THINK=low
LOCAL_LLM_OLLAMA_NUM_CTX=8192
LOCAL_LLM_ALLOW_PUBLIC=false
STORAGE_ROOT=.voidbot
ENABLED_PROVIDERS=owner_codex
OWNER_CODEX_MODE=local_exec_owner_only
CODEX_EXECUTABLE=codex
CODEX_EXEC_ARGS=
CODEX_MODEL=gpt-5.4
CODEX_MODEL_REASONING_EFFORT=low
CODEX_EXEC_TIMEOUT_MS=120000
STYLE_PACK_PATH=styles/void-default.md
SYSTEM_MESSAGES_PATH=config/system-messages.json
# Private registry for repo identities that use Discord roles as address targets
# and the shared webhook persona pipe as their voice.
REPO_DISCORD_IDENTITIES_PATH=.voidbot/private/repo-discord-identities.json
REPO_FACE_RUMINATION_PASSES=3
REPO_FACE_BIRTH_MODE=plan
REPO_FACE_BIRTH_EXECUTOR=codex-exec
REPO_FACE_GITHUB_ACTIONS_ENABLED=false
REPO_FACE_HEARTBEATS_ENABLED=false
REPO_FACE_HEARTBEAT_STATE_PATH=.voidbot/status/repo-face-heartbeats.json
REPO_FACE_HEARTBEAT_TASK_NAME=VoidBot Repo Face Heartbeats
REPO_FACE_HEARTBEAT_INTERVAL_MINUTES=15
REPO_FACE_HEARTBEAT_MAX_JOBS_PER_TICK=2
REPO_FACE_HEARTBEAT_DEFAULT_CHANNEL_ID=
REPO_FACE_HEARTBEAT_CODEX_MODEL=gpt-5.3-codex-spark
REPO_FACE_HEARTBEAT_CODEX_MODELS=gpt-5.3-codex-spark,gpt-5.4-mini
REPO_FACE_TURN_CODEX_MODEL=gpt-5.4
REPO_FACE_HEARTBEAT_CODEX_REASONING_EFFORT=low
EPIPHANY_AGENT_ROOT=E:/Projects/EpiphanyAgent
BIFROST_ROOT=E:/Projects/Bifrost
BIFROST_HEALTH_URL=http://127.0.0.1:5080/healthz
ODIN_BASE_URL=http://127.0.0.1:8797
INDEX_ALL_CHANNELS=false
INDEXED_CHANNEL_IDS=
EXCLUDED_CHANNEL_IDS=
EXCLUDED_CHANNEL_NAMES=
VOID_USAGE_COOLDOWN_SECONDS=30
VOID_USAGE_DAILY_LIMIT=100
VOID_USAGE_UNLIMITED_USER_IDS=
VOID_USAGE_UNLIMITED_ROLE_IDS=
VOID_USAGE_BOOST_USER_IDS=
VOID_USAGE_BOOST_ROLE_IDS=
VOID_USAGE_BOOST_MULTIPLIER=10
WORKER_POLL_INTERVAL_MS=5000
OFFSITE_BACKUP_SSH_TARGET=
OFFSITE_BACKUP_REMOTE_WINDOWS_DIR=C:\Meta\voidbot-backups
OFFSITE_BACKUP_REMOTE_SFTP_DIR=/C:/Meta/voidbot-backups
OFFSITE_BACKUP_LOCAL_KEEP_LATEST=7
OFFSITE_BACKUP_REMOTE_KEEP_LATEST=14
OFFSITE_BACKUP_LABEL=offsite-auto
OFFSITE_BACKUP_TASK_NAME=VoidBot Offsite Backup
OFFSITE_BACKUP_TASK_TIME=04:30
VOIDBOT_BACKUP_MAX_AGE_HOURS=30
VOIDBOT_OFFSITE_BACKUP_MAX_AGE_HOURS=36
VOIDBOT_HEALTHCHECK_NOTIFY_REPEAT_HOURS=12
VOIDBOT_STACK_STARTUP_TASK_NAME=VoidBot Stack Startup
VOIDBOT_HEALTHCHECK_TASK_NAME=VoidBot Operations Watchdog
VOIDBOT_HEALTHCHECK_INTERVAL_MINUTES=60
VOIDBOT_MODERATION_TASK_NAME=Void Moderator Rumination
VOIDBOT_MODERATION_INTERVAL_MINUTES=15
VOIDBOT_MODERATION_HEARTBEAT_INTERVAL_MINUTES=1
VOID_MODERATION_ENFORCEMENT_MODE=policy
VOID_MODERATION_TIMEOUT_MINUTES=60