Environment Variables
Settings come from the process environment (Compose, Kubernetes, or your
host). There is no separate DATABASE_URL — database pieces are set with the
POSTGRES_* variables below.
Values marked required at start refuse weak placeholders and will not boot until you set them.
Compose ports and image
These control how Docker Compose publishes the stack. They select the image and host ports; they are not application feature toggles.
Variable |
Default |
Description |
|---|---|---|
|
|
Which Compose files to load. |
|
|
Image for the Memchentic service (preferred registry; GHCR mirror available). |
|
|
Host port for the web UI. |
|
|
Host port for the HTTP API. |
|
|
Host port for agent / MCP connections. |
Public URL and logging
Variable |
Default |
Description |
|---|---|---|
|
|
Public origin browsers and login callbacks use. |
|
|
Comma-separated allowed browser origins. Set this to your real UI URL in production. |
|
|
Log level ( |
Admin bootstrap
Variable |
Default |
Description |
|---|---|---|
|
|
Email for the first admin account. |
|
|
Display name for that admin. |
|
(must set) |
Required at start. At least 16 characters; not a known placeholder. |
|
(must set) |
Required at start. Break-glass API key for that admin. Prefer a personal API key from the UI for everyday agents. |
Login / identity
Variable |
Default |
Description |
|---|---|---|
|
|
|
|
(empty) |
Client id from the external provider. |
|
(empty) |
Client secret. May be empty for |
|
(empty) |
Issuer URL for an external provider. |
|
(empty) |
Expected audience claim when verifying provider tokens. |
|
(empty) |
JWKS URL for verifying provider tokens. |
|
|
Scopes requested from the provider. |
When OAUTH_PROVIDER is not internal, register this redirect URI on the
provider:
{BASE_URL}/api/auth/oauth/callback
Registration and sessions
Variable |
Default |
Description |
|---|---|---|
|
|
Allow public self-registration for built-in login. Also toggleable later in System Settings. |
|
|
Lifetime (days) for “remember me” sessions. Minimum |
|
|
Lifetime (hours) for normal browser sessions. Minimum |
|
(derived) |
Force secure cookies: |
Database
Variable |
Default |
Description |
|---|---|---|
|
|
Database user. |
|
|
Database password. |
|
|
Database hostname. |
|
|
Database port. |
|
|
Database name. |
Postgres must support the vector extension (for example
pgvector/pgvector:pg16).
Search defaults
Variable |
Default |
Description |
|---|---|---|
|
|
How similar a new write must be before it is treated as a near-duplicate. |
|
|
Ranking blend factor for hybrid search. |
|
|
Default number of search results when the client does not ask for a limit. |
|
|
Default number of browse results when the client does not ask for a limit. |
|
|
Maximum results allowed for search or browse. |
|
|
Age in days at which a memory’s freshness weight drops to half. |
|
|
Extra weight for memories whose path hint matches the search path. |
|
|
How many nearest existing memories are checked for a near-duplicate on write. |
|
|
How many recent memories the overlap report scans. |
| MEMORY_USAGE_SCORE_WEIGHT | 0.05 | Extra weight for memories that are recalled often. |
Memory lifetime
Variable |
Default |
Description |
|---|---|---|
|
|
Days a new memory lives when the caller does not choose a lifetime. |
|
|
Each recall pushes a live memory’s expiry to at least this many days from now. |
|
|
A memory is renewed and counted at most once per this window. |
|
|
Renewal never pushes expiry past this many days after creation. |
How these combine into a ranking and a lifetime is explained in Memory.