-
Notifications
You must be signed in to change notification settings - Fork 178
Expand file tree
/
Copy path.env.example
More file actions
251 lines (226 loc) · 10.9 KB
/
Copy path.env.example
File metadata and controls
251 lines (226 loc) · 10.9 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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
# ============================================================
# EvoNexus — Environment Variables
# ============================================================
# Generated by: make setup
# Edit this file with your API keys.
# ============================================================
# ── Dashboard API Token (for headless agents / CLI) ──
# Bearer token for local agents to call the dashboard API without
# a browser session. Keep it secret — grants full API access.
# Generate with: python -c "import secrets; print(secrets.token_urlsafe(32))"
# Usage: curl -H "Authorization: Bearer $DASHBOARD_API_TOKEN" ...
DASHBOARD_API_TOKEN=
# Optional: which user the token impersonates (defaults to first admin)
DASHBOARD_API_USER=
# Dashboard session secret. Required in production.
EVONEXUS_SECRET_KEY=
# Comma-separated list of allowed browser origins for the Flask dashboard.
# Use "*" for local development; set explicit origins in production.
CORS_ALLOWED_ORIGINS=*
# ── AI Provider Configuration ────────────────────────
# EvoNexus supports multiple AI providers via OpenClaude.
# Configure via dashboard (Providers page) or edit config/providers.json.
# The active provider determines which CLI (claude or openclaude) is used.
#
# Anthropic (default): no extra config needed — uses native 'claude' CLI.
#
# OpenRouter (200+ models):
# CLAUDE_CODE_USE_OPENAI=1
# OPENAI_BASE_URL=https://openrouter.ai/api/v1
# OPENAI_API_KEY=sk-or-...
# OPENAI_MODEL=anthropic/claude-sonnet-4
#
# OpenAI:
# CLAUDE_CODE_USE_OPENAI=1
# OPENAI_API_KEY=sk-...
# OPENAI_MODEL=gpt-4.1
#
# Google Gemini:
# CLAUDE_CODE_USE_GEMINI=1
# GEMINI_API_KEY=...
# GEMINI_MODEL=gemini-2.5-pro
#
# Install openclaude for non-Anthropic providers:
# npm install -g @gitlawb/openclaude
# ── Omie ERP ─────────────────────────────────────────
# Omie API (omie.com.br → Settings → Integrations → API)
OMIE_APP_KEY=
OMIE_APP_SECRET=
# ── Bling ERP ────────────────────────────────────────
# Bling API v3 — OAuth2 with automatic refresh.
# 1. Create an app at https://developer.bling.com.br
# 2. Set redirect URI to: http://localhost:8787/callback
# 3. Paste Client ID/Secret below, then run `make bling-auth` to complete login.
# The CLI opens your browser, captures the code, and fills ACCESS/REFRESH tokens here.
BLING_CLIENT_ID=
BLING_CLIENT_SECRET=
BLING_ACCESS_TOKEN=
BLING_REFRESH_TOKEN=
# ── Asaas (payments) ─────────────────────────────────
# Asaas API key (account settings → Integrations → API Key)
# Set ASAAS_SANDBOX=true to hit sandbox.asaas.com (safe default)
ASAAS_API_KEY=
ASAAS_SANDBOX=true
# ── Stripe ───────────────────────────────────────────
# Stripe Secret Key (dashboard.stripe.com → Developers → API Keys)
STRIPE_SECRET_KEY=
# ── Todoist ──────────────────────────────────────────
# Todoist API Token (app.todoist.com → Settings → Integrations → API Token)
TODOIST_API_TOKEN=
# ── Fathom (Meetings) ───────────────────────────────
# Fathom API Key (fathom.video → Settings → API)
FATHOM_API_KEY=
# ── Discord ──────────────────────────────────────────
# Discord Bot Token (discord.com/developers → Bot → Token)
DISCORD_BOT_TOKEN=
# Server Guild ID (enable Developer Mode → right-click server → Copy ID)
DISCORD_GUILD_ID=
# ── Telegram ─────────────────────────────────────────
# Bot Token from @BotFather
TELEGRAM_BOT_TOKEN=
# Chat ID (send /start to your bot, check via getUpdates API)
TELEGRAM_CHAT_ID=
# ── YouTube OAuth ────────────────────────────────────
# Google Cloud Console → APIs → Credentials → OAuth Client
YOUTUBE_OAUTH_CLIENT_ID=
YOUTUBE_OAUTH_CLIENT_SECRET=
# ── Meta / Instagram OAuth ───────────────────────────
# Facebook App (developers.facebook.com → My Apps → Settings → Basic)
META_APP_ID=
META_APP_SECRET=
# ── LinkedIn OAuth ───────────────────────────────────
# LinkedIn App (linkedin.com/developers → My Apps → Auth)
LINKEDIN_CLIENT_ID=
LINKEDIN_CLIENT_SECRET=
# ── License — headless auto-activation ───────────────
# Set this to the email used in your first manual license registration.
# On startup, EvoNexus calls /v1/register/auto silently and skips the manual
# setup screen. Falls back to manual setup if the email isn't registered yet.
# Leave empty (or unset) to keep the default behavior.
# EVOLUTION_OPERATOR_EMAIL=operator@example.com
# ── Evolution API ────────────────────────────────────
# Your Evolution API instance URL and global API key
EVOLUTION_API_URL=
EVOLUTION_API_KEY=
# ── Evolution Go ─────────────────────────────────────
# Your Evolution Go instance URL and API key
EVOLUTION_GO_URL=
EVOLUTION_GO_KEY=
# ── Evo AI CRM ──────────────────────────────────────
# Your Evo AI CRM instance URL and access token
EVO_CRM_URL=
EVO_CRM_TOKEN=
# ── Backup (S3-compatible) ───────────────────────────
# S3 bucket for remote backups (any S3-compatible: AWS, MinIO, R2, etc.)
BACKUP_S3_BUCKET=
# Prefix/folder inside the bucket (default: evonexus-backups/)
BACKUP_S3_PREFIX=evonexus-backups/
# AWS credentials (or S3-compatible endpoint)
# AWS_ACCESS_KEY_ID=
# AWS_SECRET_ACCESS_KEY=
# AWS_ENDPOINT_URL= # For non-AWS (MinIO, R2, etc.)
# Retention: how many backups to keep (empty = unlimited)
# BACKUP_RETAIN_LOCAL=7 # Keep last 7 local backups
# BACKUP_RETAIN_S3=30 # Keep last 30 S3 backups
# ── Social Accounts ──────────────────────────────────
# Managed via the dashboard Integrations page.
# Pattern: SOCIAL_{PLATFORM}_{N}_{FIELD}
# Example:
# SOCIAL_YOUTUBE_1_LABEL=My Channel
# SOCIAL_YOUTUBE_1_ACCESS_TOKEN=ya29...
# SOCIAL_YOUTUBE_1_CHANNEL_ID=UC...
# -- AI Image Creator (image generation) ----------------
# Cloudflare AI Gateway mode (recommended):
AI_IMG_CREATOR_CF_ACCOUNT_ID=
AI_IMG_CREATOR_CF_GATEWAY_ID=
AI_IMG_CREATOR_CF_TOKEN=
# Direct API keys (simpler alternative):
AI_IMG_CREATOR_OPENROUTER_KEY=
AI_IMG_CREATOR_GEMINI_KEY=
# ── Knowledge Base — Embedder (optional) ────────────
# The Knowledge Base (pgvector) uses one of three embedders:
# local — sentence-transformers/paraphrase-multilingual-mpnet-base-v2 (default)
# 768 dim · offline · ~420 MB model download on first use
# openai — text-embedding-3-small / -3-large / ada-002
# 1536 or 3072 dim · requires OPENAI_API_KEY
# gemini — gemini-embedding-001 (stable) or gemini-embedding-2-preview
# 768 / 1536 / 3072 dim (MRL) · requires GEMINI_API_KEY
#
# Most users should configure this via the dashboard at /knowledge/settings
# rather than editing .env directly. The provider is locked once the first
# connection is created.
#
# KNOWLEDGE_EMBEDDER_PROVIDER=local
#
# -- Gemini embedder ----------------------------------
# Get a free key at https://aistudio.google.com/apikey (generous free tier).
# GEMINI_API_KEY=AIzaSy...
# KNOWLEDGE_GEMINI_MODEL=gemini-embedding-001 # or gemini-embedding-2-preview
# KNOWLEDGE_GEMINI_DIM=768 # 768 (default, aligns with local), 1536, or 3072
# -- Databases (db-postgres, db-mysql) ----------------
# Numbered blocks — one per database. Same pattern as SOCIAL_YOUTUBE_N_*.
# Skills pick connections by LABEL (case-insensitive) or numeric index.
# LABEL is the only required field. DSN, if set, wins over component fields.
# Read-only by default — set ALLOW_WRITE=true per connection to permit writes.
#
# Drivers are NOT pre-installed. First use:
# uv pip install psycopg2-binary # for db-postgres
# uv pip install pymysql # for db-mysql
#
# ── Postgres ─────────────────────────────────────────
# DB_POSTGRES_1_LABEL=msgops-dev
# DB_POSTGRES_1_HOST=db.dev.internal
# DB_POSTGRES_1_PORT=5432
# DB_POSTGRES_1_DATABASE=msgops
# DB_POSTGRES_1_USER=agent_readonly
# DB_POSTGRES_1_PASSWORD=
# DB_POSTGRES_1_SSL_MODE=require # disable | require | verify-ca | verify-full
# DB_POSTGRES_1_SSL_CA_PATH= # optional, if verify-*
# DB_POSTGRES_1_ALLOW_WRITE=false
# DB_POSTGRES_1_QUERY_TIMEOUT=30
# DB_POSTGRES_1_MAX_ROWS=1000
#
# Or a full DSN alternative (DSN wins over components):
# DB_POSTGRES_2_LABEL=evo-ai-dev
# DB_POSTGRES_2_DSN=postgresql://user:pw@host:5432/db?sslmode=require
#
# ── MySQL / MariaDB ──────────────────────────────────
# DB_MYSQL_1_LABEL=orders-dev
# DB_MYSQL_1_HOST=mysql.dev.internal
# DB_MYSQL_1_PORT=3306
# DB_MYSQL_1_DATABASE=orders
# DB_MYSQL_1_USER=agent_readonly
# DB_MYSQL_1_PASSWORD=
# DB_MYSQL_1_SSL_CA_PATH= # optional, enables TLS verification
# DB_MYSQL_1_ALLOW_WRITE=false
# DB_MYSQL_1_QUERY_TIMEOUT=30
# DB_MYSQL_1_MAX_ROWS=1000
#
# ── MongoDB ──────────────────────────────────────────
# DB_MONGO_1_LABEL=orders-dev
# DB_MONGO_1_URI=mongodb+srv://user:pw@cluster0.abc.mongodb.net/orders?retryWrites=true
# # Or components instead of URI:
# # DB_MONGO_1_HOST=mongo.dev.internal
# # DB_MONGO_1_PORT=27017
# # DB_MONGO_1_DATABASE=orders
# # DB_MONGO_1_USER=agent_readonly
# # DB_MONGO_1_PASSWORD=
# # DB_MONGO_1_AUTH_SOURCE=admin
# # DB_MONGO_1_TLS=true
# DB_MONGO_1_ALLOW_WRITE=false
# DB_MONGO_1_QUERY_TIMEOUT=30
# DB_MONGO_1_MAX_ROWS=1000
#
# ── Redis ────────────────────────────────────────────
# DB_REDIS_1_LABEL=cache-dev
# DB_REDIS_1_URL=rediss://user:pw@host:6380/0
# # Or components instead of URL:
# # DB_REDIS_1_HOST=redis.dev.internal
# # DB_REDIS_1_PORT=6379
# # DB_REDIS_1_DB=0
# # DB_REDIS_1_USERNAME=
# # DB_REDIS_1_PASSWORD=
# # DB_REDIS_1_TLS=false
# DB_REDIS_1_ALLOW_WRITE=false
# DB_REDIS_1_QUERY_TIMEOUT=30
# DB_REDIS_1_MAX_ROWS=1000