# Mneme basic install settings. # Copy to .env and fill in. No real secret belongs in this file or in YAML. # Every supported setting, with its default, is listed in # config/advanced.env.example — copy single lines from there when needed. # ---- Chat platform (required) ---- # One platform for each deployment: discord or slack. MNEME_PLATFORM=discord # ---- Discord (required when MNEME_PLATFORM=discord) ---- DISCORD_TOKEN= DISCORD_APPLICATION_ID= DISCORD_GUILD_ID= # Comma-separated Discord role snowflakes. Leave empty to deny all admin # operations; the app logs a startup warning when it is empty. MNEME_ADMIN_ROLE_IDS= # ---- Slack (required when MNEME_PLATFORM=slack) ---- # Create the app from config/slack-app-manifest.yml in your own workspace and # do not distribute it (see docs/tutorials/getting-started.md). # Bot token (xoxb-) of the app that your team creates in its own workspace. # SLACK_BOT_TOKEN= # App-level token (xapp-) with connections:write, for Socket Mode. # SLACK_APP_TOKEN= # The workspace (team) id, for example TXXXXXXXXX. # SLACK_TEAM_ID= # Comma-separated Slack user ids allowed to run admin operations, for example # UXXXXXXXXX. At least one is required. Slack has no roles, so # MNEME_ADMIN_ROLE_IDS must stay empty on Slack. # MNEME_ADMIN_USER_IDS= # ---- Read-only archive of another platform (optional) ---- # A verified Mneme backup from your earlier deployment on the other platform, # for example the Discord deployment after a move to Slack. Mneme reads only # its org content and never writes to it. Set both or neither. The file must # not be DATABASE_PATH and must not be in BACKUP_DIR. # MNEME_ARCHIVE_PATH=/app/data/archive/discord.sqlite # MNEME_ARCHIVE_PLATFORM=discord # API credential for the selected provider. LLM_PROVIDER and LLM_MODEL default # to openai and gpt-5.6-terra when unset. For another provider set LLM_PROVIDER # and use its key instead: # ANTHROPIC_API_KEY= # GOOGLE_API_KEY= OPENAI_API_KEY= # ---- Organization ---- ORG_NAME=Your Company ORG_TIMEZONE=UTC # ---- Channel selection (basic mode) ---- # basic builds the channel policy from the two lists below. file loads # CHANNEL_POLICY_PATH instead; in basic mode that path is not read. # Changes in either mode take effect after a restart. CHANNEL_POLICY_SOURCE=basic # Comma-separated channel or category ids to ingest as org-visible. Each # Discord snowflake names exactly one resource kind. Slack has no categories: # use channel ids (CXXXXXXXXX; some older private channels use GXXXXXXXXX), # and invite the bot to each channel. A Slack Connect channel is # always excluded, whatever the lists say. At least one id must be present # across the two lists; both empty is a startup error. ORG_VISIBLE_CHANNEL_IDS= # Comma-separated channel or category ids to ingest as restricted. RESTRICTED_CHANNEL_IDS= MNEME_REVIEW_CHANNEL_ID= # Set to true only after the review channel audience was verified. When true, # the id above must be set as well. MNEME_REVIEW_CHANNEL_SECURE=false # ---- Initial import scope (explicit choice) ---- # FULL_HISTORY must be set explicitly. Choose the initial import scope: # true = import all reachable history for the selected channels; # false = new messages onward (not a hard boundary; some sync paths may # still touch older rows). FULL_HISTORY= # ---- Spend ---- # Daily admission control for all LLM spend. This is not a provider billing # ceiling; the hosting bill is separate. "unlimited" removes the cap. LLM_DAILY_BUDGET_USD=2