Skip to content

Environment variables

Everything Conatus reads comes from the .env file next to docker-compose.yml. This page is the reference; the annotated template that ships with the app is .env.example.

Variables marked required have no usable default. Compose refuses to start the stack without them.

Variable Default Purpose
CONATUS_VERSION latest* Release image tag, without the leading v. During the public beta, pin 0.2.0-beta.3; the latest image is not published yet.
CONATUS_MCP_VERSION latest Tag for the optional MCP sidecar, released on its own schedule.
CONATUS_IMAGE ghcr.io/nojusmorkunas/conatus Override only when running images from a fork or another registry.
CONATUS_MCP_IMAGE ghcr.io/nojusmorkunas/conatus-mcp Same, for the MCP sidecar.

* The Compose fallback is latest, but that tag is not published until the first stable release. A fresh beta installation must set CONATUS_VERSION=0.2.0-beta.3 explicitly.

Variable Default Purpose
CONATUS_PORT 4399 Host port for the web app. The container always listens on 3000.
CONATUS_BIND_ADDRESS 0.0.0.0 Address the host port binds to. Set to 127.0.0.1 when a reverse proxy fronts the app.
AUTH_URL empty External HTTPS origin, e.g. https://tasks.example.com. Required behind a domain or proxy.
PUBLIC_BASE_URL empty Same value as AUTH_URL. Used for generated links.

Set AUTH_URL and PUBLIC_BASE_URL together or not at all. See Reverse proxy.

Variable Default Purpose
POSTGRES_USER app Database user.
POSTGRES_PASSWORD required Ends up inside a connection URL, so keep it URL-safe.
POSTGRES_DB app Database name.
POSTGRES_PORT 5432 Host port for PostgreSQL, published on 127.0.0.1 only.
DATABASE_URL none Only used when running the app directly with npm. Compose builds its own internal URL from the POSTGRES_* values and ignores this.
Variable Default Purpose
AUTH_SECRET required Session signing secret. Generate with npx auth secret. Changing it signs everyone out.
REGISTRATION_MODE invite-only The first account bootstraps the server and becomes administrator; everyone else needs an invite.
CONATUS_ADMIN_USERNAME empty One-time bootstrap. Set before the first docker compose up.
CONATUS_ADMIN_PASSWORD empty Same. The bootstrap job only acts on an empty database. Remove both after first login.
CONATUS_DEV_MODE 0 Local development only. See the warning below.
Variable Default Purpose
S3_ACCESS_KEY required MinIO root user.
S3_SECRET_KEY required MinIO root password.
S3_BUCKET attachments Bucket for uploaded files.
S3_ENDPOINT minio under Compose The template says localhost for direct npm runs; Compose overrides it to the minio service name.
S3_PORT 9000 Same.
MINIO_PORT 9000 Host port for the S3 API, published on 127.0.0.1 only.
MINIO_CONSOLE_PORT 9001 Host port for the MinIO web console, published on 127.0.0.1 only.

Email is disabled unless all three are set. Conatus works without it. Registration uses username and password, with no SMTP requirement.

Variable Default Purpose
SMTP_HOST empty Mail server hostname.
SMTP_PORT empty Usually 587.
SMTP_FROM empty Sender, e.g. "Conatus <conatus@example.com>".
Variable Default Purpose
BACKUP_INTERVAL 86400 Seconds between dumps. Default is daily.
BACKUP_KEEP 7 Number of dumps to retain. The service deletes older ones.

See Backups.

Only read when you start the mcp profile. Full reference on the MCP server page.

Variable Default Purpose
TASKS_API_TOKEN placeholder Scoped tdm_ token created in Settings → API tokens.
MCP_PUBLIC_URL empty Exact external HTTPS URL, ending in /mcp. Required for OAuth mode.
MCP_OAUTH_PASSWORD empty Separate password entered on the browser approval page.
MCP_ALLOWED_ORIGINS http://localhost:4399 Comma-separated browser origins allowed to call the MCP endpoint.
MCP_BEARER_TOKEN empty Static credential for clients that cannot do OAuth.
Variable Default Purpose
ERROR_WEBHOOK_URL empty Endpoint that receives JSON error reports.