Home
·
Self-host
·
Environment variables
On this page
9
One .env file configures the whole application. The standard Laravel variables (APP_*, DB_*, MAIL_*, QUEUE_CONNECTION, …) behave exactly as documented in the Laravel docs ; the tables below cover the AnswerixAI-specific ones.
Variable
Required
Description
IS_CLOUD
—
false (default) for self-hosted — all features unlocked, no Stripe needed. true only for a billed cloud deployment.
DAILY_CRON_SCHEDULE
—
Cron expression for the daily tracking run (default 0 6 * * *).
CRON_SECRET
cloud only
Shared secret guarding the internal /api/internal/* endpoints. Generate with openssl rand -hex 32.
ANSWERIX_ENCRYPTION_KEY
optional
AES-256-GCM master key for bring-your-own Anthropic keys (agent chat). Generate with openssl rand -base64 32.
# AI providers
You need at least one provider key for tracking and suggestions to work.
Variable
Required
Description
OPENAI_API_KEY
optional*
OpenAI key (ChatGPT tracking via the Responses API, sentiment)
ANTHROPIC_API_KEY
optional*
Anthropic key (Claude tracking, agent chat on self-hosted)
GEMINI_API_KEY
optional*
Google AI Studio Gemini key
DEFAULT_SUGGESTION_MODEL
—
Default LLM for AI suggestions (default google/gemini-3-flash-preview)
TOPIC_SUGGESTION_MODEL
—
LLM for topic suggestions
PROMPT_SUGGESTION_MODEL
—
LLM for prompt suggestions
COMPETITOR_SUGGESTION_MODEL
—
LLM for competitor suggestions
AUDIT_LLM_MODEL
—
LLM for the Site Audit's LLM-judged signals + recommendations
READABILITY_LLMS_MODEL
—
LLM for AI-readability (llms.txt) generation
# Web-engine scraping (Cloro)
Variable
Required
Description
CLORO_API_KEY
✅ for web engines
Cloro API key — scrapes AI engines without public APIs (ChatGPT web, Google AI Overview/Mode, Copilot, Perplexity web, Grok)
CLORO_WEBHOOK_URL
optional
Public URL Cloro calls back (https://your-host/cloro/callback); when unset, results are polled inline
CLORO_WEBHOOK_SECRET
optional
HMAC secret for verifying Cloro callbacks
PLATFORM_PROVIDER
—
Scraper backend selector (default cloro)
# Prompt volumes (Google Ads API)
Free API, but credentials take a few steps — see the setup guide .
Variable
Required
Description
GOOGLE_ADS_DEVELOPER_TOKEN
volumes
Google Ads developer token
GOOGLE_ADS_CLIENT_ID / GOOGLE_ADS_CLIENT_SECRET
volumes
OAuth client credentials
GOOGLE_ADS_REFRESH_TOKEN
volumes
OAuth refresh token
GOOGLE_ADS_CUSTOMER_ID
volumes
10-digit customer ID, no dashes
GOOGLE_ADS_LOGIN_CUSTOMER_ID
optional
Only when the account sits under a manager (MCC) account
AI_VOLUME_MULTIPLIER
—
Estimated AI search adoption rate (default 0.15 = 15% of Google volume)
# Site Audit (headless Chrome fallback)
Variable
Required
Description
BROWSERSHOT_NODE_BINARY
optional
Path to node when the queue worker's PATH lacks it (e.g. /usr/bin/node)
BROWSERSHOT_NPM_BINARY
optional
Path to npm
BROWSERSHOT_CHROME_PATH
optional
Custom Chrome path; blank = Puppeteer's bundled Chromium
# Stripe (cloud mode only)
Variable
Required
Description
STRIPE_SECRET_KEY
cloud
Stripe secret key (platform account; agencies override per-whitelabel in config/whitelabel.php)
STRIPE_WEBHOOK_SECRET
cloud
Stripe webhook signing secret
STRIPE_STARTER_MONTHLY_PRICE_ID / STRIPE_GROWTH_MONTHLY_PRICE_ID
cloud
Price IDs for the two plans
# OAuth sign-in (optional)
Variable
Description
GITHUB_CLIENT_ID / GITHUB_CLIENT_SECRET
GitHub OAuth app credentials
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET
Google OAuth credentials
Buttons degrade gracefully when unset — see the OAuth setup guide .
# Realtime (Laravel Reverb)
Variable
Description
BROADCAST_CONNECTION
reverb to enable realtime tracking.complete / content.generated events
REVERB_APP_ID / REVERB_APP_KEY / REVERB_APP_SECRET
Reverb app credentials
REVERB_HOST / REVERB_PORT / REVERB_SCHEME
Where the Reverb server listens
VITE_REVERB_*
Browser-side mirrors (default to the server values)
When Reverb isn't configured, the dashboard silently falls back to polling — nothing breaks.
# Tips for production
Never commit .env — it holds every secret the app has.
Rotate CRON_SECRET and API keys quarterly as a hygiene practice.
Use a different database per environment (dev / staging / prod). Don't share databases across environments.
After changing .env on a cached production app, run php artisan config:cache to pick the values up.
Continue: Upgrading →