---
title: "Environment Variables"
description: "Environment variables for CORE self-hosting"
---

# Environment Variables

Environment variables for the CORE webapp container.

| Name                                    | Required | Default                                        | Description                                                                                     |
| :-------------------------------------- | :------- | :--------------------------------------------- | :---------------------------------------------------------------------------------------------- |
| **Version**                             |          |                                                |                                                                                                 |
| `VERSION`                               | No       | 0.1.12                                         | CORE version identifier                                                                          |
| **Secrets**                             |          |                                                |                                                                                                 |
| `SESSION_SECRET`                        | Yes      | —                                              | Session encryption secret. Run: `openssl rand -hex 16`                                          |
| `MAGIC_LINK_SECRET`                     | Yes      | —                                              | Magic link encryption secret. Run: `openssl rand -hex 16`                                       |
| `ENCRYPTION_KEY`                        | Yes      | —                                              | Data encryption key. Run: `openssl rand -hex 16`                                                |
| **Application & Domains**               |          |                                                |                                                                                                 |
| `REMIX_APP_PORT`                        | No       | 3033                                           | Application port number                                                                          |
| `APP_ENV`                               | No       | production                                     | Application environment (development, production)                                                |
| `NODE_ENV`                              | No       | production                                     | Node.js environment                                                                              |
| `APP_ORIGIN`                            | Yes      | http://localhost:3033                          | Application origin URL                                                                           |
| `LOGIN_ORIGIN`                          | Yes      | http://localhost:3033                          | Login origin URL (usually same as APP_ORIGIN)                                                   |
| `API_BASE_URL`                          | No       | `APP_ORIGIN`                                   | API base URL                                                                                     |
| **Database - PostgreSQL**               |          |                                                |                                                                                                 |
| `DB_HOST`                               | No       | localhost                                      | Database host (use container name for Docker)                                                   |
| `DB_PORT`                               | No       | 5432                                           | Database port                                                                                    |
| `POSTGRES_USER`                         | Yes      | docker                                         | PostgreSQL username                                                                              |
| `POSTGRES_PASSWORD`                     | Yes      | docker                                         | PostgreSQL password                                                                              |
| `POSTGRES_DB`                           | Yes      | core                                           | PostgreSQL database name                                                                         |
| `DATABASE_URL`                          | Yes      | postgresql://docker:docker@postgres:5432/core?schema=core | PostgreSQL connection string                                                      |
| `DIRECT_URL`                            | Yes      | `DATABASE_URL`                                 | Direct DB connection string for migrations                                                       |
| **Database - Neo4j (Memory Graph)**     |          |                                                |                                                                                                 |
| `NEO4J_URI`                             | Yes      | bolt://neo4j:7687                              | Neo4j connection URI                                                                             |
| `NEO4J_USERNAME`                        | Yes      | neo4j                                          | Neo4j username                                                                                   |
| `NEO4J_PASSWORD`                        | Yes      | —                                              | Neo4j password. Run: `openssl rand -hex 16`                                                     |
| `NEO4J_AUTH`                            | Yes      | neo4j/password                                 | Neo4j authentication (username/password format)                                                 |
| **Redis**                               |          |                                                |                                                                                                 |
| `REDIS_HOST`                            | Yes      | redis                                          | Redis host (use container name for Docker)                                                      |
| `REDIS_PORT`                            | Yes      | 6379                                           | Redis port                                                                                       |
| `REDIS_TLS_DISABLED`                    | No       | true                                           | Disable Redis TLS for local development                                                         |
| **Authentication**                      |          |                                                |                                                                                                 |
| `ENABLE_EMAIL_LOGIN`                    | No       | true                                           | Enable email-based authentication                                                               |
| `AUTH_GOOGLE_CLIENT_ID`                 | No       | —                                              | Google OAuth client ID                                                                           |
| `AUTH_GOOGLE_CLIENT_SECRET`             | No       | —                                              | Google OAuth client secret                                                                       |
| **AI Providers**                        |          |                                                |                                                                                                 |
| `OPENAI_API_KEY`                        | No       | —                                              | OpenAI API key for memory processing                                                             |
| `MODEL`                                 | No       | gpt-4-turbo-2024-04-09                         | Default language model                                                                           |
| `EMBEDDING_MODEL`                       | No       | text-embedding-3-small                         | Model for text embeddings                                                                        |
| `EMBEDDING_MODEL_SIZE`                  | No       | 1024                                           | Embedding vector dimensions (1536 for text-embedding-3-small, 1024 for mxbai-embed-large)        |
| `OLLAMA_URL`                            | No       | http://ollama:11434                            | Ollama server URL for local models                                                               |
| **Background Jobs - Trigger.dev**       |          |                                                |                                                                                                 |
| `QUEUE_PROVIDER`                        | No       | bullmq                                         | Queue provider (bullmq or trigger)                                                               |
| `TRIGGER_PROJECT_ID`                    | No*      | —                                              | Trigger.dev project identifier (*required if QUEUE_PROVIDER is trigger)                          |
| `TRIGGER_SECRET_KEY`                    | No*      | —                                              | Trigger.dev authentication secret (*required if QUEUE_PROVIDER is trigger)                       |
| `TRIGGER_API_URL`                       | No*      | http://host.docker.internal:8030               | Trigger.dev API endpoint (*required if QUEUE_PROVIDER is trigger)                                |


## Security Considerations

### Required Secrets

These secrets must be generated and kept secure:

```bash
# Generate secure random secrets
openssl rand -hex 16  # For SESSION_SECRET
openssl rand -hex 16  # For MAGIC_LINK_SECRET  
openssl rand -hex 16  # For ENCRYPTION_KEY
openssl rand -hex 16  # For NEO4J_PASSWORD
```

### Production Recommendations

- **Change all default passwords** before deploying to production
- **Use environment-specific secrets** - never reuse secrets across environments
- **Store secrets securely** - use a secrets manager in production
- **Enable TLS** for all database connections in production
- **Restrict CORS origins** to your actual domains
- **Use strong authentication** - configure OAuth providers for production use

### Docker Compose Networks

When using Docker Compose, service names are used as hostnames:
- `postgres` for PostgreSQL
- `neo4j` for Neo4j
- `redis` for Redis
- `ollama` for Ollama (if using local models)

For external services (like Trigger.dev), use `host.docker.internal` to access services running on the host machine.

## Neo4j Vector Index Configuration

The `EMBEDDING_MODEL_SIZE` must match the dimension output of your embedding model:

- **text-embedding-3-small** (OpenAI): 1536 dimensions
- **text-embedding-3-large** (OpenAI): 3072 dimensions
- **mxbai-embed-large** (Ollama): 1024 dimensions

### Recreating Vector Indexes

If you change embedding models or get dimension mismatch errors, you need to recreate the Neo4j vector indexes:

```bash
# Connect to Neo4j Browser at http://localhost:7474
# Or use cypher-shell in the Neo4j container

# Drop existing vector indexes
DROP INDEX entity_embedding IF EXISTS;
DROP INDEX statement_embedding IF EXISTS;
DROP INDEX episode_embedding IF EXISTS;

# Restart your application - indexes will be recreated with correct dimensions
# The application automatically creates indexes on startup
```

**Important:** Changing `EMBEDDING_MODEL_SIZE` after data exists requires:
1. Dropping the old vector indexes
2. Re-embedding all existing entities, statements, and episodes
3. The application will recreate indexes on next startup