Skip to content

Commit 04c8f37

Browse files
committed
Refine env example and Render defaults
1 parent 1993ff2 commit 04c8f37

3 files changed

Lines changed: 110 additions & 96 deletions

File tree

.env.example

Lines changed: 105 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,110 @@
11
# =============================================================================
2-
# Core deploy runtime
2+
# Core runtime / deploy
33
# =============================================================================
44

5-
# X OAuth2 user refresh flow (required for polling and posting)
6-
X_CLIENT_ID=
7-
X_CLIENT_SECRET=
8-
X_REFRESH_TOKEN=
9-
X_REFRESH_BUFFER_SECONDS=300
10-
X_OAUTH_TOKEN_URL=https://api.x.com/2/oauth2/token
5+
NODE_ENV=production
6+
# Web-service only; the worker path ignores this.
7+
PORT=10000
8+
DATA_DIR=/data
9+
LOG_LEVEL=INFO
1110

12-
# xAI LLM path used by the Render deploy
13-
XAI_API_KEY=
14-
XAI_BASE_URL=https://api.x.ai/v1
15-
XAI_MODEL_PRIMARY=grok-3
16-
XAI_MODEL_FALLBACKS=grok-3-mini
11+
# =============================================================================
12+
# Launch / activation / polling
13+
# =============================================================================
1714

18-
# Render / worker runtime
1915
LAUNCH_MODE=prod
20-
# Legacy fallback; LAUNCH_MODE is the primary switch now.
16+
# Optional legacy fallback for local scripts/tests when LAUNCH_MODE is unset.
2117
# DRY_RUN=false
22-
LOG_LEVEL=INFO
23-
USE_REDIS=true
24-
KV_URL=
25-
REDIS_KEY_PREFIX=ORGANOID:
26-
DATA_DIR=/data
27-
28-
# Bot runtime
18+
# Runtime handle used by polling/posting.
2919
BOT_USERNAME=organoid_on_sol
20+
# Conservative base; render.yaml keeps the production override explicit.
3021
BOT_ACTIVATION_MODE=global
31-
BOT_DENY_REPLY_MODE=silent
32-
ADAPTIVE_POLLING_ENABLED=true
33-
MENTIONS_SOURCE=search
22+
# Optional allowlist used only when LAUNCH_MODE=staging
23+
# ALLOWLIST_HANDLES=
24+
# Optional activation whitelist when BOT_ACTIVATION_MODE=whitelist
25+
# BOT_WHITELIST_USERNAMES=
26+
# BOT_WHITELIST_USER_IDS=
3427
POLL_INTERVAL_MS=30000
28+
MENTIONS_SOURCE=search
3529

3630
# =============================================================================
37-
# Optional X OAuth bootstrap state
31+
# X / Twitter API
3832
# =============================================================================
39-
# X_ACCESS_TOKEN=
33+
34+
# Required for X OAuth refresh flow and live posting.
35+
X_CLIENT_ID=
36+
X_CLIENT_SECRET=
37+
X_REFRESH_TOKEN=
38+
# Optional access token cache; refresh still works without it.
39+
X_ACCESS_TOKEN=
40+
X_REFRESH_BUFFER_SECONDS=300
41+
X_OAUTH_TOKEN_URL=https://api.x.com/2/oauth2/token
42+
# Optional bootstrap/cache state for local OAuth helper scripts; keep these out of Render secrets unless needed.
4043
# X_EXPIRES_IN=7200
4144
# X_TOKEN_CREATED_AT=
4245
# X_BOT_USER_ID=
46+
# X_BOT_USERNAME=
47+
48+
# =============================================================================
49+
# Storage / state / redis / kv
50+
# =============================================================================
51+
52+
# Conservative base; Render overrides this to true and requires KV_URL.
53+
USE_REDIS=false
54+
# Only if USE_REDIS=true.
55+
KV_URL=
56+
REDIS_KEY_PREFIX=ORGANOID:
57+
# Optional overrides.
58+
# MAX_LLM_CALLS_PER_MINUTE=30
59+
# COST_WEIGHT_THREAD=2
60+
# COST_WEIGHT_REPLY=1
61+
# RATE_LIMIT_BACKEND=store
62+
# POLL_LOCK_ENABLED=true
63+
# DEBUG_ARTIFACTS=false
4364

4465
# =============================================================================
45-
# Optional launch and provider overrides
66+
# Networking / fetch
4667
# =============================================================================
47-
# LLM_PROVIDER=xai
68+
69+
# Optional HTTP retry tuning used by shared fetch helpers.
70+
# FETCH_TIMEOUT_MS=30000
71+
# FETCH_BACKOFF_BASE_MS=5000
72+
# FETCH_BACKOFF_MAX_MS=300000
73+
# FETCH_RETRY_JITTER_MS=500
74+
75+
# =============================================================================
76+
# LLM / provider keys
77+
# =============================================================================
78+
79+
LLM_PROVIDER=xai
80+
# Only for optional provider fallback if the primary is unavailable.
4881
# LLM_FALLBACK_PROVIDER=
49-
# LLM_API_KEY=
82+
XAI_API_KEY=
83+
XAI_BASE_URL=https://api.x.ai/v1
84+
XAI_MODEL_PRIMARY=grok-3
85+
XAI_MODEL_FALLBACKS=grok-3-mini
86+
# Optional alternative provider credentials.
5087
# OPENAI_API_KEY=
5188
# OPENAI_MODEL=gpt-4o-mini
5289
# OPENAI_BASE_URL=https://api.openai.com/v1
5390
# ANTHROPIC_API_KEY=
5491
# ANTHROPIC_MODEL=claude-3-5-sonnet-latest
5592
# ANTHROPIC_BASE_URL=https://api.anthropic.com/v1
56-
# LLM_TEMPERATURE=0.7
57-
# LLM_MAX_TOKENS=350
93+
# Optional runtime tuning.
5894
# LLM_TIMEOUT_MS=30000
95+
# LLM_MAX_TOKENS=350
96+
# LLM_TEMPERATURE=0.7
5997
# LLM_CANNED_FALLBACK=Sorry, gerade keine Antwort moeglich
6098

6199
# =============================================================================
62-
# Optional storage and rate-limit tuning
100+
# Safety / engagement / feature flags
63101
# =============================================================================
64-
# MAX_LLM_CALLS_PER_MINUTE=30
65-
# COST_WEIGHT_THREAD=2
66-
# COST_WEIGHT_REPLY=1
67-
# REDIS_URL=
68-
# RATE_LIMIT_BACKEND=store
69-
# POLL_LOCK_ENABLED=true
70-
# SKIP_ENV_VALIDATION=false
71-
# DEBUG_ARTIFACTS=false
72102

73-
# =============================================================================
74-
# Optional whitelist and engagement controls
75-
# =============================================================================
76-
# ALLOWLIST_HANDLES=
77-
# BOT_WHITELIST_USERNAMES=
78-
# BOT_WHITELIST_USER_IDS=
103+
# Optional compliance gate for proactive engagement.
79104
# ENGAGEMENT_AI_APPROVED=false
80105
# ENGAGEMENT_OPT_IN_HANDLES=
81106
# ENGAGEMENT_OPT_OUT_HANDLES=
107+
# Only for the proactive timeline loop.
82108
# TIMELINE_ENGAGEMENT_ENABLED=false
83109
# TIMELINE_ENGAGEMENT_INTERVAL_MS=600000
84110
# TIMELINE_ENGAGEMENT_MAX_PER_RUN=2
@@ -93,8 +119,33 @@ POLL_INTERVAL_MS=30000
93119
# TIMELINE_CONVERSATION_COOLDOWN_MINUTES=120
94120

95121
# =============================================================================
96-
# Optional memory and semantic layers
122+
# Orchestration / embodiments / hybrid runtime
97123
# =============================================================================
124+
125+
# EMBODIMENTS_ENABLED=true
126+
# DEFAULT_SAFE_EMBODIMENT=stillhalter
127+
# EMBODIMENT_ROUTING_DEBUG=false
128+
# Conservative base; render.yaml keeps orchestration off explicitly.
129+
# EMBODIMENT_ORCHESTRATION_ENABLED=false
130+
# EMBODIMENT_CONTINUITY_ENABLED=true
131+
# EMBODIMENT_SWARM_ENABLED=false
132+
# EMBODIMENT_MAX_CAMEOS=2
133+
# Optional embodiment feature flags that stay false unless explicitly enabled.
134+
# EMBODIMENT_MEMORY_ENABLED=false
135+
# EMBODIMENT_EVOLUTION_ENABLED=false
136+
# EMBODIMENT_RUNNING_JOKES_ENABLED=false
137+
# EMBODIMENT_TRAIT_DRIFT_LIMIT=0.25
138+
# EMBODIMENT_ENSEMBLE_ENABLED=false
139+
# EMBODIMENT_AUTONOMY_ENABLED=false
140+
# EMBODIMENT_ARC_ENGINE_ENABLED=false
141+
# EMBODIMENT_WORLD_ENABLED=false
142+
# EMBODIMENT_WORLD_EVENTS_ENABLED=false
143+
# EMBODIMENT_FACTIONS_ENABLED=false
144+
# EMBODIMENT_RITUALS_ENABLED=false
145+
# EMBODIMENT_LORE_EXPANSION_ENABLED=false
146+
# Optional governance ceilings for world/ritual overlays.
147+
# EMBODIMENT_MAX_ACTIVE_WORLD_EVENTS=2
148+
# EMBODIMENT_MAX_ACTIVE_RITUAL_OVERLAYS=1
98149
# HYBRID_RUNTIME_MODE=hybrid
99150
# HYBRID_MEMORY_STORE_PATH=
100151
# HYBRID_MEMORY_FILE_PATH=
@@ -108,60 +159,21 @@ POLL_INTERVAL_MS=30000
108159
# HYBRID_RUNTIME_MAX_REASONS=4
109160
# HYBRID_RUNTIME_MAX_CONTEXT_CHARS=720
110161

111-
# SEMANTIC_ENABLED=false
112-
# SEMANTIC_MODE=shadow
113-
# SEMANTIC_TOPK=20
114-
# SEMANTIC_CLUSTER_SIM=0.82
115-
# SEMANTIC_QUERY_MAX_RESULTS=50
116-
# SEMANTIC_MEMORY_TTL_DAYS=14
117-
# SEMANTIC_INDEX_TTL_DAYS=7
118-
# SEMANTIC_INDEX_MAX_DOCS=2000
119-
120162
# =============================================================================
121-
# Optional identity and Solana verification
163+
# Identity / Solana
122164
# =============================================================================
123-
# BOT_TOKEN_MINT=
165+
166+
# BOT_TOKEN_MINT=So11111111111111111111111111111111111111112
124167
# BOT_TREASURY_WALLET=
125168
# BOT_TICKER=Organoid
126169
# BOT_PROGRAM_ID=
127170
# SOLANA_RPC_PRIMARY_URL=https://api.mainnet-beta.solana.com
128171
# SOLANA_RPC_FALLBACK_URL=https://solana-api.projectserum.com
129172

130173
# =============================================================================
131-
# Embodiment runtime
174+
# Observability / pulse heart
132175
# =============================================================================
133-
# EMBODIMENTS_ENABLED=true
134-
# DEFAULT_SAFE_EMBODIMENT=stillhalter
135-
# EMBODIMENT_MEMORY_ENABLED=false
136-
# EMBODIMENT_ROUTING_DEBUG=false
137-
# EMBODIMENT_CONTINUITY_ENABLED=true
138-
# EMBODIMENT_EVOLUTION_ENABLED=false
139-
# EMBODIMENT_RUNNING_JOKES_ENABLED=false
140-
# EMBODIMENT_SWARM_ENABLED=false
141-
# EMBODIMENT_TRAIT_DRIFT_LIMIT=0.25
142-
# EMBODIMENT_ENSEMBLE_ENABLED=false
143-
# EMBODIMENT_AUTONOMY_ENABLED=false
144-
# EMBODIMENT_ARC_ENGINE_ENABLED=false
145-
# EMBODIMENT_MAX_CAMEOS=2
146-
# EMBODIMENT_WORLD_ENABLED=false
147-
# EMBODIMENT_FACTIONS_ENABLED=false
148-
# EMBODIMENT_WORLD_EVENTS_ENABLED=false
149-
# EMBODIMENT_RITUALS_ENABLED=false
150-
# EMBODIMENT_LORE_EXPANSION_ENABLED=false
151-
# EMBODIMENT_MAX_ACTIVE_WORLD_EVENTS=2
152-
# EMBODIMENT_MAX_ACTIVE_RITUAL_OVERLAYS=1
153-
# EMBODIMENT_SAFE_MODE=false
154176

155-
# =============================================================================
156-
# Optional local tooling
157-
# =============================================================================
158-
# REPLICATE_API_KEY=
159-
# REPLICATE_IMAGE_MODEL=black-forest-labs/flux-schnell
160-
# REPLICATE_RUN_TIMEOUT_MS=45000
161-
# REPLICATE_DOWNLOAD_TIMEOUT_MS=20000
162-
# AGGRESSIVE_MODE=analyst
163-
# TEST_MODE=true
164-
# FULL_SPECTRUM_PROMPT=true
165-
# DEMO_OUTPUT_DIR=out
166-
# DEMO_INPUT_IMAGE=assets/demo_base.png
167-
# EMBODIMENT_SEMANTIC_VERSION=v1
177+
# Optional console/terminal tap controls for pulse-heart telemetry.
178+
# ORGANOID_PULSE_HEART_TERMINAL=true
179+
# ORGANOID_PULSE_HEART_CONSOLE_TAP=false

render.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ services:
5252
value: https://api.x.com/2/oauth2/token
5353

5454
# LLM Provider (xAI)
55+
- key: LLM_PROVIDER
56+
value: xai
5557
- key: XAI_API_KEY
5658
sync: false
5759
- key: XAI_BASE_URL
@@ -68,14 +70,14 @@ services:
6870
value: prod
6971
- key: BOT_ACTIVATION_MODE
7072
value: global
73+
- key: EMBODIMENT_ORCHESTRATION_ENABLED
74+
value: "false"
7175

7276
# Polling
7377
- key: POLL_INTERVAL_MS
7478
value: "30000"
7579
- key: MENTIONS_SOURCE
7680
value: search
77-
- key: ADAPTIVE_POLLING_ENABLED
78-
value: "true"
7981

8082
# Logging
8183
- key: LOG_LEVEL

src/state/storeFactory.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export function getStateStore(): StateStore {
3838
}
3939

4040
logInfo("[StateStore] ✅ Redis Backend aktiv (Production Default)", {
41-
prefix: process.env.REDIS_KEY_PREFIX ?? "organoid:",
41+
prefix: process.env.REDIS_KEY_PREFIX ?? "ORGANOID:",
4242
});
4343
cachedStore = getRedisStore(kvUrl);
4444
} else {

0 commit comments

Comments
 (0)