Configuration
RememberStack is configured entirely through environment variables. There is no configuration file inside the engine. This page explains how the variables reach the containers, which ones matter first, and which ones cannot change later. Configuration variables lists every variable with its default.
How the engine reads settings
Each part of the engine reads its own group of variables when the process starts, through typed settings classes (pydantic-settings). Each group has a prefix:
| Prefix | Group |
|---|---|
REMEMBERSTACK_SELFHOST_ | The deployment, the API, authentication, pools and workers, converter routes |
REMEMBERSTACK_OPENROUTER_ | The model provider |
REMEMBERSTACK_MINIO_ | Object storage (any S3-compatible store; Compose runs SeaweedFS) |
REMEMBERSTACK_STRUCTURER_, _E2_, _E3_, _OBS_, _FACT_, _P1_ … | One pipeline model seat each (Models and providers) |
REMEMBERSTACK_MISTRAL_OCR_, REMEMBERSTACK_IMAGE_DESCRIPTION_ | Converters |
REMEMBERSTACK_WORK_ | Retries and spend budgets |
REMEMBERSTACK_SENTRY_ | Error tracking |
Three rules follow from this:
- The engine reads only the process environment. It does not open a
.envfile itself. In the Compose setup, Docker Compose reads.envand passes values into the containers. - Values are checked at start. A malformed value (a non-UUID deployment id, a pool concurrency larger than its pool, a converter route naming an unknown converter) stops the process with an error that names the variable. It never starts half-configured.
- Blank means unset. Compose turns an unset
${VAR:-}into an empty string; the engine treats an empty value as "use the default" for the optional settings.
What Compose passes through
compose.yaml loads your .env into every engine container (env_file),
so any engine variable you put in .env takes effect: for example
REMEMBERSTACK_IMAGE_DESCRIPTION_API_KEY, REMEMBERSTACK_COST_EXPORT_BIND,
the worker rate settings, REMEMBERSTACK_OPENROUTER_ZDR or
REMEMBERSTACK_WORK_BUDGETS.
Each engine service also has an environment: list. It supplies defaults
and three values Compose sets itself, which win over .env:
| Variable | Value inside the containers |
|---|---|
REMEMBERSTACK_DATABASE_URL | Built from REMEMBERSTACK_POSTGRES_USER, _PASSWORD and _DB, pointing at the postgres service. |
REMEMBERSTACK_MINIO_ENDPOINT_URL | http://object-store:8333, the bundled SeaweedFS store. |
REMEMBERSTACK_SELFHOST_API_PORT | 8000. In .env the same variable is the host port Compose publishes. |
A variable exported in your shell overrides .env only if it is on the
environment: list, because Compose substitutes shell values into that
list but reads env_file from the file alone. Put settings in .env.
Apply a change
docker compose up -dCompose recreates every container whose configuration changed. setup
runs again first, then the API and workers restart with the new values.
A running process never picks up a changed variable on its own.
What to change first
For a machine only you can reach, these settings matter:
| Variable | Why |
|---|---|
REMEMBERSTACK_OPENROUTER_API_KEY | Nothing is processed without it. |
REMEMBERSTACK_SELFHOST_DEPLOYMENT_ID, REMEMBERSTACK_POSTGRES_PASSWORD, REMEMBERSTACK_MINIO_ACCESS_KEY, REMEMBERSTACK_MINIO_SECRET_KEY | .env.example ships none; generate them as in Install. Compose refuses to start without them. |
Compose publishes the API on 127.0.0.1 only. To let other machines reach
it, set REMEMBERSTACK_SELFHOST_API_BEARER_TOKEN and
REMEMBERSTACK_SELFHOST_REQUIRE_API_AUTH=true, then
REMEMBERSTACK_SELFHOST_API_PUBLISH_ADDRESS
(Opening the API to other machines).
To accept more than Markdown and plain text, set
REMEMBERSTACK_SELFHOST_CONVERSION_ROUTES (File formats and converters).
Settings fixed after the first start
The first setup records these in the database, and later runs refuse to
start if they change. A database holds one deployment, so a new deployment
id is refused too; it does not start a second, empty deployment.
REMEMBERSTACK_SELFHOST_DEPLOYMENT_IDREMEMBERSTACK_SELFHOST_DEPLOYMENT_SLUGREMEMBERSTACK_SELFHOST_DEPLOYMENT_NAMEREMEMBERSTACK_SELFHOST_DEFAULT_LANGUAGE(defaulten)- the three bucket names,
REMEMBERSTACK_SELFHOST_RAW_BUCKET_NAME,…_ARTIFACTS_BUCKET_NAMEand…_CORPUSFS_BUCKET_NAME
setup also refuses a new REMEMBERSTACK_P1_EMBEDDING_MODEL once
anything has been embedded; see
Models and providers.
The client side
The remember CLI and Python client read a separate, small set of
variables on your own machine, most importantly REMEMBER_API_URL and
REMEMBER_API_KEY. They are listed at the top of
Configuration variables.