Skip to main content

Environment Variables

All configuration is done via environment variables. The authoritative template is platform/core/.env.example in the repository.


Required (Self-Hosted)

These four variables must be set or RushDB will not start correctly.

VariableDefaultDescription
RUSHDB_SELF_HOSTEDMust be true to enable self-hosted mode
RUSHDB_LOGINAdmin account username
RUSHDB_PASSWORDAdmin account password
RUSHDB_AES_256_ENCRYPTION_KEYExactly 32 characters. Used for AES-256 API token encryption and JWT signing. Do not change after initial setup without re-encrypting stored data. Generate: openssl rand -hex 32

Neo4j

VariableDefaultDescription
NEO4J_URLbolt://localhost:7687Bolt connection URL. Use neo4j+s:// for Aura.
NEO4J_USERNAMEneo4jNeo4j username
NEO4J_PASSWORDRequired. Neo4j password

See Neo4j & Aura for setup details.


SQL Database

Stores dashboard entities — users, workspaces, projects, tokens, OAuth sessions.

VariableDefaultDescription
SQL_DB_TYPEsqlitesqlite (zero-config) or postgres
SQL_DB_PATH./rushdb.dbPath to the SQLite file. Only used when SQL_DB_TYPE=sqlite
SQL_DB_URLPostgreSQL connection URL, e.g. postgresql://user:pass@host:5432/rushdb. Required when SQL_DB_TYPE=postgres
SQL_DB_SSLSet to true to enable SSL/TLS for the PostgreSQL connection

See PostgreSQL / SQLite for setup details.


Network & App

VariableDefaultDescription
RUSHDB_PORT3000Port the API server listens on
RUSHDB_DASHBOARD_URLhttp://localhost:3005Public URL of the dashboard. Used in OAuth redirect URIs and password-reset email links
RUSHDB_SERVE_STATICfalseSet to true to serve the frontend static assets from the same process
RUSHDB_ALLOWED_LOGINS[]JSON array of email addresses allowed to log in. Empty means all logins are allowed. Example: '["alice@example.com","bob@example.com"]'

AI — Embeddings

Enables vector similarity search. All four variables must be set together; omit them entirely to disable embedding indexes.

VariableDefaultDescription
RUSHDB_EMBEDDING_BASE_URLhttps://api.openai.com/v1Base URL of an OpenAI-compatible embeddings endpoint
RUSHDB_EMBEDDING_API_KEYBearer token for the embedding provider
RUSHDB_EMBEDDING_MODELModel identifier, e.g. text-embedding-3-small, qwen/qwen3-embedding-8b
RUSHDB_EMBEDDING_DIMENSIONSNumber of dimensions the model outputs. Must match the model exactly.
RUSHDB_EMBEDDING_BATCH_SIZE500Records per batch during index backfill
RUSHDB_EMBEDDING_MAX_RUNTIME_MS50000Max milliseconds the backfill scheduler runs per tick

AI — Relationship Suggestions (LLM)

Powers automatic relationship candidate inference from your data ontology.

VariableDefaultDescription
RUSHDB_LLM_BASE_URLhttps://api.openai.com/v1Base URL of an OpenAI-compatible chat completions endpoint
RUSHDB_LLM_API_KEYBearer token for the LLM provider
RUSHDB_LLM_MODELModel identifier, e.g. gpt-4.1-mini

Email (SMTP)

Required for email confirmation, password reset, and workspace invite flows. All four must be set together; omit to disable email features.

VariableDefaultDescription
MAIL_HOSTSMTP server hostname, e.g. smtp.gmail.com
MAIL_USERSMTP auth username
MAIL_PASSWORDSMTP auth password
MAIL_FROMFrom address shown on outgoing emails, e.g. noreply@example.com

OAuth Providers

VariableDefaultDescription
GOOGLE_CLIENT_IDGoogle OAuth 2.0 client ID
GOOGLE_SECRETGoogle OAuth 2.0 client secret
GH_CLIENT_IDGitHub OAuth app client ID
GH_SECRETGitHub OAuth app client secret

Both providers require RUSHDB_DASHBOARD_URL to be set for redirect URIs.


Rate Limiting

VariableDefaultDescription
RATE_LIMITER_REQUESTS_LIMIT10Max requests per window per IP
RATE_LIMITER_TTL1000Window size in milliseconds

Pagination

VariableDefaultDescription
RUSHDB_PAGINATION_DEFAULT_LIMIT100Default page size when limit is not specified in a search query
RUSHDB_PAGINATION_MAX_LIMIT1000Maximum allowed limit value. Requests above this are clamped.

Advanced

MCP OAuth — RS256 JWT Signing

By default MCP OAuth tokens are signed with the symmetric RUSHDB_AES_256_ENCRYPTION_KEY. For production deployments that need JWKS discovery (RS256), set an asymmetric key pair instead.

VariableDefaultDescription
RUSHDB_JWT_PRIVATE_KEYPEM-encoded RSA private key (multiline). Prefer the _BASE64 variant in containers.
RUSHDB_JWT_PUBLIC_KEYPEM-encoded RSA public key
RUSHDB_JWT_PRIVATE_KEY_BASE64Base64-encoded PEM private key — easier to pass in env without escaping
RUSHDB_JWT_PUBLIC_KEY_BASE64Base64-encoded PEM public key
RUSHDB_JWT_KIDrushdb-mcp-rs256Key ID published in /.well-known/jwks.json

Generate a key pair:

openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -pubout -out public.pem
# Base64-encode for containers:
base64 -i private.pem | tr -d '\n' # → RUSHDB_JWT_PRIVATE_KEY_BASE64
base64 -i public.pem | tr -d '\n' # → RUSHDB_JWT_PUBLIC_KEY_BASE64

Captcha

VariableDefaultDescription
SERVICE_CAPTCHA_KEYServer-side private key for CAPTCHA verification

Core

VariableDefaultDescription
RUSHDB_PORT3000Port the RushDB API listens on
RUSHDB_LOG_LEVELinfoLog verbosity: debug | info | warn | error
RUSHDB_ENCRYPTION_KEYRequired. 32-byte hex key for at-rest encryption. Generate with openssl rand -hex 32
RUSHDB_ENCRYPTION_IVRequired. 16-byte hex IV. Generate with openssl rand -hex 16

Database (SQL)

RushDB uses a relational database for project metadata and user data.

VariableDefaultDescription
SQL_DB_TYPEsqlitesqlite or postgres
SQL_DB_PATH./data/rushdb.dbPath to SQLite file (when SQL_DB_TYPE=sqlite)
POSTGRES_HOSTlocalhostPostgreSQL host
POSTGRES_PORT5432PostgreSQL port
POSTGRES_USERrushdbPostgreSQL user
POSTGRES_PASSWORDPostgreSQL password
POSTGRES_DBrushdbDatabase name

See PostgreSQL / SQLite for setup details.

Neo4j (Graph)

VariableDefaultDescription
NEO4J_URLbolt://localhost:7687Neo4j Bolt connection URL
NEO4J_USERNAMEneo4jNeo4j username
NEO4J_PASSWORDRequired. Neo4j password

See Neo4j & Aura for setup details.

VariableDefaultDescription
EMBEDDINGS_PROVIDERopenai | cohere | custom
EMBEDDINGS_MODELModel name (e.g. text-embedding-3-small)
EMBEDDINGS_API_KEYAPI key for the embedding provider
EMBEDDINGS_DIMENSIONSVector dimensions (must match model output)

Authentication

VariableDefaultDescription
JWT_SECRETRequired. Secret for signing JWT tokens. Use openssl rand -hex 64
JWT_EXPIRY7dToken expiry duration (e.g. 1d, 7d, 30d)

See Authorization for API key management.