Skip to main content
MeepaChat is configured via a YAML file and environment variables. Environment variables always take precedence over the config file.

Config File Location

MeepaChat searches for a config file in this order:
  1. $MEEPA_CONFIG_PATH — if set, only this path is checked
  2. ~/.meepachat/config.yaml — primary location (written by meepachat init)
  3. /etc/meepa/config.yaml — system-wide location
meepachat init writes the config to ~/.meepachat/config.yaml automatically.

Precedence

Server

integer
default:"8091"
HTTP port the server listens on. Can also be set via meepachat start --port N.
string
default:"(all interfaces)"
Network address to bind to. Can also be set via meepachat start --bind ADDR.
string
Public URL of the server (e.g. https://chat.example.com). Required for invite links and email links to work correctly. Also controls whether session cookies are set with the Secure flag — set this to an https:// URL in production.
string
default:"text"
Log output format. text for human-readable output, json for structured logs.
Config file equivalent:

Database

string
PostgreSQL connection string. MeepaChat runs migrations automatically on startup.
string
default:"redis://redis:6379/0"
Redis connection string. Used for WebSocket pub/sub when running multiple server instances. Optional — omit to run without Redis (single instance only).
Config file equivalent:

Authentication

string
URL of the auth service. Set by meepachat init.
string
Shared secret for the auth service. Must match the value configured in the auth sidecar.
boolean
default:"true"
When false, new users must have a valid invite link to register. The first user is always exempt and becomes admin.
boolean
default:"false"
When true, users must verify their email address before they can log in. Requires SMTP to be configured.
Config file equivalent:

File Storage

MeepaChat stores uploads in S3-compatible storage. If no S3 endpoint is configured, files are stored on the local filesystem.
string
S3-compatible endpoint URL. Omit the https:// scheme — set S3_USE_SSL=true separately.Examples: localhost:9010 (MinIO), your-account.r2.cloudflarestorage.com (Cloudflare R2), s3.amazonaws.com (AWS S3).
string
S3 access key ID.
string
S3 secret access key.
string
default:"meepachat"
S3 bucket name. The bucket must already exist.
string
S3 region. Required for AWS S3. Optional for MinIO and Cloudflare R2.
boolean
default:"false"
Enable TLS when connecting to the S3 endpoint. Set to true for any public S3 service.
string
default:"/data/uploads"
Local directory for file uploads when S3 is not configured. Also used as a temporary staging area when S3 is enabled.
integer
default:"20971520"
Maximum file upload size in bytes. Default is 20 MB (20 × 1024 × 1024).
Config file equivalent:

MinIO (default)

meepachat init starts a local MinIO instance. No additional configuration needed for local deployments.

Cloudflare R2

AWS S3

Legacy MINIO_* environment variables (MINIO_ENDPOINT, MINIO_ACCESS_KEY, MINIO_SECRET_KEY, MINIO_BUCKET, MINIO_USE_SSL) are still accepted as fallbacks when the corresponding S3_* variable is not set.

SMTP / Email

Email is used for invite links and email verification. Optional unless REQUIRE_EMAIL_VERIFICATION=true.
string
SMTP server hostname (e.g. smtp.mailgun.org, smtp.gmail.com).
integer
default:"587"
SMTP port. 587 for STARTTLS (recommended), 465 for TLS, 25 for unencrypted.
string
SMTP username.
string
SMTP password.
string
From address for outgoing email (e.g. chat@example.com).
Config file equivalent:

Push Notifications

Web Push (VAPID)

Browser push notifications use VAPID keys. Generate them once and store them permanently — changing keys will break existing browser subscriptions.
string
Base64url-encoded ECDSA P-256 public key.
string
Base64url-encoded ECDSA P-256 private key.
string
Contact URL or mailto: address identifying the push server (e.g. mailto:admin@example.com).
Generate VAPID keys:
Config file equivalent:

FCM (Firebase Cloud Messaging)

Required for push notifications on iOS and Android mobile apps.
string
Path to a Firebase service account JSON file. Download from Firebase Console → Project Settings → Service accounts.
Config file equivalent:

Sessions

duration
default:"720h"
How long login sessions remain valid. Accepts Go duration strings: 720h (30 days), 168h (7 days), 24h (1 day).
Config file equivalent:

CORS

string
Comma-separated list of allowed CORS origins. When not set, only same-origin requests are permitted.Example: https://chat.example.com,https://app.example.com

string
URL of an Apache Tika server for full-text extraction from uploaded files (PDF, Office docs, etc.). Optional — omit to skip content indexing of attachments.Example: http://localhost:9998
Config file equivalent:

Auto-Update

boolean
default:"false"
When true, the server checks for updates every 6 hours and restarts automatically if a new version is available. Connected clients receive an update_restarting WebSocket event before the restart.
Config file equivalent:

MeepaGateway Integration

string
URL of a running MeepaGateway instance. When set, MeepaChat proxies credential action card confirmations to the gateway so agents can store logins, API keys, and passwords through interactive chat forms.Example: http://localhost:63372
Config file equivalent:
Without this setting, credential action cards will render in chat but confirmations will fail with a 404. See the MeepaGateway integration guide for full setup instructions.

Complete Config File Example