Environment Variables

Curiosity workspaces read most of their configuration from environment variables. This page is the developer-facing subset — what you need to set when running locally or wiring a workspace into CI. For the full operator reference (security, encryption, SSO), see Configuration reference.

Core

Variable Default Meaning
storage /data/curiosity Path where graph data and uploaded files are stored.
MSK_PORT 8080 Port the workspace listens on.
MSK_PUBLIC_ADDRESS (auto) User-facing URL. Set this when behind a reverse proxy so generated links use the right host.
MSK_CORS (empty) Comma-separated list of allowed origins. Required for local front-end dev (e.g. http://localhost:5000).
MSK_LOG_LEVEL Information Trace / Debug / Information / Warning / Error.

Security

Variable Default Meaning
MSK_ADMIN_PASSWORD (generated) Password for the bootstrap admin account. Set explicitly in prod.
MSK_JWT_KEY (generated) Key used to sign session JWTs. Set explicitly so tokens survive restarts.
MSK_GRAPH_MASTER_KEY (generated) Master key for encrypted content. Back this up — losing it loses data.
MSK_SECRET_KEY (generated) Legacy alias for MSK_GRAPH_MASTER_KEY on older builds.
MSK_READONLY false Start the workspace in read-only mode (used by replicas).

Generating secrets

MSK_JWT_KEY and MSK_GRAPH_MASTER_KEY both expect a base64-encoded random key of a fixed size — 64 bytes (512 bits) for the JWT signing key, 32 bytes (256 bits) for the graph master key. A value that isn't valid base64 of the right length is treated as a passphrase and stretched via PBKDF2, so passphrases technically work — but the generated commands below produce the native format and avoid that extra derivation step.

# MSK_JWT_KEY (64 bytes)
openssl rand -base64 64

# MSK_GRAPH_MASTER_KEY (32 bytes)
openssl rand -base64 32
Back up MSK_GRAPH_MASTER_KEY

There's no auto-generated fallback for MSK_GRAPH_MASTER_KEY once content has been encrypted with it — losing the key loses the encrypted content. Store both keys in a secret manager and keep MSK_JWT_KEY identical across a primary and its read-only replicas (see Read-only replicas).

Storage & backups

Variable Default Meaning
MSK_GRAPH_STORAGE ${storage}/graph Override the graph data directory.
MSK_GRAPH_BACKUP_FOLDER (none) Path where automatic backups are written. Mount a separate volume.

Development quick-start

For local front-end development against a Docker workspace:

docker run -p 8080:8080 \
  -v ~/curiosity/storage:/data \
  -e storage=/data/curiosity \
  -e MSK_CORS=http://localhost:5000 \
  -e MSK_ADMIN_USER=admin \
  -e MSK_ADMIN_EMAIL=admin@example.com \
  -e MSK_ADMIN_PASSWORD=ChangeMe123 \
  curiosityai/curiosity

Then run curiosity-cli serve from your front-end project — the CORS entry lets the dev server hit the workspace.

© 2026 Curiosity. All rights reserved.