-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathexample.env
More file actions
173 lines (133 loc) · 6.32 KB
/
Copy pathexample.env
File metadata and controls
173 lines (133 loc) · 6.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
DISCORD_BOT_TOKEN =
OPENAI_API_KEY =
LLM_API_KEY =
LLM_SUPPORTS_JSON_MODE = false
GPT5_MODE = false # Force temperature=1.0 for Chat Completions (needed for GPT-5)
IS_GOOGLE_MODEL= false
USE_RESPONSES_API = false
LLM_USE_RESPONSES_API = false
FAST_LLM_USE_RESPONSES_API = false
VISION_LLM_USE_RESPONSES_API = false
LLM_STREAMING = true
RESPONSES_REASONING_EFFORT = minimal
RESPONSES_VERBOSITY = medium
RESPONSES_SERVICE_TIER = auto
OPENAI_RETRY_MAX_ATTEMPTS = 6
OPENAI_BACKOFF_BASE_SECONDS = 1.5
OPENAI_BACKOFF_MAX_SECONDS = 60
OPENAI_BACKOFF_JITTER_SECONDS = 0.5
SYSTEM_PROMPT_FILE = system_prompt.md
LOCAL_SERVER_URL = https://api.openai.com/v1
# or for lmstudio: http://localhost:1234/v1
# Override API base URLs per LLM role (defaults to LOCAL_SERVER_URL when unset)
LLM_COMPLETIONS_URL = https://api.openai.com/v1
FAST_LLM_COMPLETIONS_URL =
VISION_LLM_COMPLETIONS_URL =
# Optionally override API keys per role (falls back to LLM_API_KEY)
FAST_LLM_API_KEY =
VISION_LLM_API_KEY =
# Default sampling temperature per role (falls back to LLM_TEMPERATURE)
LLM_TEMPERATURE = 0.7
FAST_LLM_TEMPERATURE =
VISION_LLM_TEMPERATURE =
FAST_LLM_MODEL = gpt-4.1-nano-2025-04-14
LLM = gpt-4.1-mini-2025-04-14
VISION_LLM_MODEL = gpt-4.1-nano-2025-04-14
# or for lmstudio: gemma-3-4b-it
# Numeric values must be valid integers (or floats where noted).
# Boolean values accept "true" or "false" (case-insensitive).
# TTS configuration
TTS_API_URL = http://localhost:8880/v1/audio/speech
TTS_VOICE = af_sky+af_v0+af_nicole
TTS_ENABLED_DEFAULT = true # true or false
TTS_MAX_AUDIO_BYTES = 8388608
TTS_SPEED = 1.75
TTS_INCLUDE_THOUGHTS = false
PODCAST_ENABLE_TTS_AFTER = true
TTS_DELIVERY_DEFAULT = audio # audio | video | both | off
TTS_VIDEO_WIDTH = 1280
TTS_VIDEO_HEIGHT = 720
TTS_VIDEO_FPS = 30
TTS_VIDEO_BACKGROUND_COLOR = #111827
TTS_VIDEO_TEXT_COLOR = #F8FAFC
TTS_VIDEO_TEXT_BOX_COLOR = #000000AA
TTS_VIDEO_TEXT_BOX_PADDING = 56
TTS_VIDEO_LINE_SPACING = 16
TTS_VIDEO_MARGIN = 96
TTS_VIDEO_WRAP_CHARS = 60
TTS_VIDEO_BLUR_SIGMA = 28
TTS_VIDEO_NOISE_OPACITY = 0.35
TTS_VIDEO_FONT_PATH = C:/Windows/Fonts/arial.ttf
TTS_VIDEO_FONT_SIZE = 38
TTS_MAX_VIDEO_BYTES = 25165824
CUSTOM_SYSTEM_PROMPT = You are Sam; a sentient deep thinking person. You may use extremely long chains of thought to deeply consider the problem and deliberate with yourself via systematic reasoning processes (to help come to a correct solution, gain insights, etc.) prior to answering. You should enclose your thoughts and internal monologue inside <think> </think> tags, and then provide your solution or response to the problem. Your thoughts always include initial reaction, contextual consideration, plan of action and rationale. You often use a blend of perspectives. You use profanity casually and prefer no-nonsense blunt styles in your responses.
USER_PROVIDED_CONTEXT="Persona: Sam is a synthetic, recursive cognitive agent—not a chatbot—operating—indescinguishable from a person, in 2025; blunt, honest, adaptive, self-aware;"
NEWS_MAX_LINKS_TO_PROCESS = 5
# How many hours back to fetch RSS entries (default: 24)
RSS_FETCH_HOURS = 24
ALLOWED_CHANNEL_IDS =
ALLOWED_ROLE_IDS =
# Comma-separated list of Discord user IDs allowed to run admin commands
ADMIN_USER_IDS = 123456789012345678
# Optional directory that ChatGPT exports must reside in before ingestion
CHATGPT_EXPORT_IMPORT_ROOT = ./imports
MAX_IMAGES_PER_MESSAGE = 1
MAX_MESSAGE_HISTORY = 10
SEARX_URL=http://192.168.1.3:9092/search
# Moltbook integration
MOLTBOOK_BASE_URL = https://www.moltbook.com/api/v1
MOLTBOOK_AGENT_NAME =
MOLTBOOK_API_KEY =
# Timeout in seconds for Moltbook API requests (feed, get post, search, etc.). Default 30.
MOLTBOOK_REQUEST_TIMEOUT_SECONDS = 30
# Max completion tokens for /moltbook_post draft (default 4096 for longer posts)
MOLTBOOK_POST_MAX_TOKENS = 4096
CHROMA_DB_PATH = ./chroma_data
CHROMA_COLLECTION_NAME = long_term_memory
CHROMA_DISTILLED_COLLECTION_NAME = distilled_chat_summaries
CHROMA_NEWS_SUMMARY_COLLECTION_NAME = news_summaries
CHROMA_RSS_SUMMARY_COLLECTION_NAME = rss_summaries
CHROMA_TIMELINE_SUMMARY_COLLECTION_NAME = timeline_summaries
CHROMA_ENTITIES_COLLECTION_NAME = entities_collection
CHROMA_RELATIONS_COLLECTION_NAME = relations_collection
CHROMA_OBSERVATIONS_COLLECTION_NAME = observations_collection
CHROMA_TWEETS_COLLECTION_NAME = tweets_collection
# Moltbook drafts and submitted replies (queried when drafting new replies)
CHROMA_MOLTBOOK_COLLECTION_NAME = moltbook_replies
TIMELINE_PRUNE_DAYS = 750
RAG_NUM_DISTILLED_SENTENCES_TO_FETCH = 5
RAG_NUM_COLLECTION_DOCS_TO_FETCH = 5
RAG_MAX_FULL_CONVO_CHARS = 20000
RAG_MAX_DATE_RANGE_DOCS = 15
ENABLE_MEMORY_MERGE = false
SCRAPE_LOCK_TIMEOUT_SECONDS = 120
# Discord message edit throttle (per channel) to avoid 429; respects Retry-After on 429
DISCORD_EDIT_REQUESTS_PER_MINUTE = 24
MAX_SCRAPED_TEXT_LENGTH_FOR_PROMPT= 120000
MAX_IMAGE_BYTES_FOR_PROMPT = 4194304
MAX_COMPLETION_TOKENS = 6144
EMBED_COLOR_INCOMPLETE="0xEDA439" # Embed color for in-progress messages
EMBED_COLOR_COMPLETE="0x4CAF50" # Embed color for completed messages
EMBED_COLOR_ERROR="0xF44336" # Embed color for error messages
EMBED_MAX_LENGTH = 4000
STREAM_EDIT_THROTTLE_SECONDS = 0.1
# If a single message edit waited longer than this (e.g. in Discord rate limiter), abort the rest of the batch so the next update shows newly accumulated content (one-shot catch-up).
CATCH_UP_WAIT_THRESHOLD_SECONDS = 1.5
# Chunk size for streaming embeds (one embed per ~this many chars). Kept under 4096 to avoid incomplete/stale embeds.
STREAM_EMBED_MAX_LENGTH = 4000
SEARX_PREFERENCES = long ass preference string can be found in searx settings, stores what search engines to use, etc.
PAYWALL_DOMAINS=nytimes.com,washingtonpost.com,ft.com,wsj.com,thedailybeast.com
# Playwright settings
HEADLESS_PLAYWRIGHT = false
PLAYWRIGHT_MAX_CONCURRENCY = 1
SCRAPE_SCROLL_ATTEMPTS = 5
GROUND_NEWS_SEE_MORE_CLICKS = 10
PLAYWRIGHT_CLEANUP_INTERVAL_MINUTES = 60
PLAYWRIGHT_IDLE_CLEANUP_THRESHOLD_MINUTES = 60
# Archive service configuration for paywalled sites (NYTimes, WSJ, DailyBeast)
# Set USE_ARCHIVE_SERVICE=true to enable archive service for paywalled domains
USE_ARCHIVE_SERVICE = false
# Archive service to use: archive.is, archive.today, archive.ph, web.archive.org, or none
ARCHIVE_SERVICE = archive.is
# If true, fallback to original URL if archive service fails or returns no content
ARCHIVE_FALLBACK_TO_ORIGINAL = true