The system configuration page (Documentation Index
Fetch the complete documentation index at: https://mintlify.com/TheCodeStudioxyz/sniko-conversational-ai/llms.txt
Use this file to discover all available pages before exploring further.
/admin/system-config) lets administrators update the application’s .env file and database-stored branding settings directly from the UI. Every save creates a timestamped backup of the .env file before writing changes.
Application settings
| Setting | .env key | Description |
|---|---|---|
| App name | APP_NAME | Name displayed in the browser tab and emails. Only letters, numbers, spaces, hyphens, underscores, and dots. |
| App URL | APP_URL | Base URL of the application (e.g. https://app.example.com). |
| Debug mode | APP_DEBUG | Enable detailed error output. Set to false in production. |
| Environment | APP_ENV | local, staging, or production. |
| Landing page | FRONTEND_LANDING_ENABLED | Show or hide the public marketing landing page. |
| Email verification | EMAIL_VERIFICATION_ENABLED | Require users to verify their email before accessing the dashboard. |
Database settings
| Setting | .env key |
|---|---|
| Host | DB_HOST |
| Port | DB_PORT |
| Database | DB_DATABASE |
| Username | DB_USERNAME |
| Password | DB_PASSWORD |
DB::connection()->getPdo() and returns the database name and driver.
Mail settings
| Setting | .env key |
|---|---|
| SMTP host | MAIL_HOST |
| SMTP port | MAIL_PORT |
| Username | MAIL_USERNAME |
| Password | MAIL_PASSWORD |
| From address | MAIL_FROM_ADDRESS |
| From name | MAIL_FROM_NAME |
Stripe settings
Stripe supports separate test and live key sets. UsePAYMENT_ENVIRONMENT to switch between them.
| Setting | .env key |
|---|---|
| Test publishable key | STRIPE_TEST_PUBLISHABLE_KEY |
| Test secret key | STRIPE_TEST_SECRET_KEY |
| Test webhook secret | STRIPE_TEST_WEBHOOK_SECRET |
| Live publishable key | STRIPE_LIVE_PUBLISHABLE_KEY |
| Live secret key | STRIPE_LIVE_SECRET_KEY |
| Live webhook secret | STRIPE_LIVE_WEBHOOK_SECRET |
| Payment environment | PAYMENT_ENVIRONMENT (sandbox or live) |
Razorpay settings
| Setting | .env key |
|---|---|
| API key | RAZORPAY_API_KEY |
| Secret key | RAZORPAY_SECRET_KEY |
| Webhook secret | RAZORPAY_WEBHOOK_SECRET |
| Test mode | RAZORPAY_TEST_MODE |
Razorpay webhook setup steps
Razorpay webhook setup steps
Open Razorpay webhooks
Go to dashboard.razorpay.com/app/webhooks and click Add New Webhook.
Enter the webhook URL
Use the URL shown in the warning banner in Sniko system config (typically
https://your-domain.com/webhooks/razorpay).Select events
Enable:
subscription.activated, subscription.charged, subscription.cancelled, subscription.paused, subscription.resumed, subscription.completed, subscription.pending, subscription.halted, payment.failed, order.paid.ElevenLabs settings
| Setting | .env key | Description |
|---|---|---|
| API key | ELEVENLABS_API_KEY | Master ElevenLabs API key. Required for all AI voice operations. |
OpenRouter AI settings
OpenRouter is used for LLM-powered features such as AI-assisted translation generation.| Setting | .env key | Default |
|---|---|---|
| API key | OPENROUTER_API_KEY | — |
| Model | OPENROUTER_MODEL | openrouter/auto |
KYC settings
KYC (Know Your Customer) is optional and disabled by default.| Setting | .env key | Default | Description |
|---|---|---|---|
| KYC enabled | KYC_ENABLED | false | Enable the KYC flow for customers. |
| KYC required | KYC_REQUIRED | false | Require KYC before customers can use the platform. |
| Grace period | KYC_GRACE_PERIOD_DAYS | 7 | Days after registration before KYC is enforced. |
| Reminder days | KYC_REMINDER_DAYS | 3 | Days before grace period ends to send reminder. |
| Block access | KYC_BLOCK_ACCESS | true | Whether to block platform access after grace period without KYC. |
Logo and branding
Logos are stored in the database viaBrandingService and served from storage/app/public/logos/. Upload images as base64 from the UI.
| Asset | Storage path | Notes |
|---|---|---|
| Light logo | /storage/logos/logo-light.{ext} | Shown on dark backgrounds |
| Dark logo | /storage/logos/logo-dark.{ext} | Shown on light backgrounds |
| Favicon | /favicon.{ext} | Served from public/ directly |
Dashboard font
The dashboard font is stored in the database viaBrandingService under the key dashboard_font. Set a Google Fonts-compatible font name (e.g. Inter, Roboto).
Application monitoring
TheMonitoringController exposes several endpoints that power the monitoring dashboard and can be used by external uptime checkers.
Health endpoints
| Endpoint | Auth | Description |
|---|---|---|
GET /monitoring/health | Public (cached 60 s) | Overall application health status |
GET /monitoring/health/detailed | Admin | Health + usage statistics + alerts |
GET /monitoring/ping | Public | Uptime check, returns {"status":"ok"} |
GET /monitoring/db-check | Public | Database connectivity check |
GET /monitoring/cache-check | Public | Cache read/write check |
GET /monitoring/usage-stats | Auth (cached 5 min) | Usage statistics |
GET /monitoring/alerts | Auth | System alerts with critical/warning counts |
POST /monitoring/health-check | Auth | Manually trigger a health check, clears cache |
GET /monitoring/dashboard | Auth | Combined overview for monitoring dashboards |
Health response structure
Alerts
Alerts are returned as an array of objects with alevel field (critical or warning). The detailed endpoint returns the latest 10 alerts.
Queue worker
Sniko requires a running queue worker for background jobs (batch calls, webhook processing, etc.).- Supervisor (production)
- Local development
supervisor.conf
GET /monitoring/health and checking the response for a healthy queue status.
Cache management
The config cache is automatically cleared whenever a system config section is saved. To manually clear the cache, run:admin.cache.manage permission can also trigger a cache clear from Admin → Pricing → Cache → Clear cache.
MCP server
The optional MCP (Model Context Protocol) server runs as a separate Node.js process. See the installation guide for full setup. Configuration is managed viamcp-servers/unified/ecosystem.config.cjs.
To check its status: