# GOD CRM self-host configuration. # Copy to `.env` (cp env.example .env) and fill in. # `install.sh` creates this file and generates the secrets for you. # ---- How you reach the app ---- # Host port the CRM is published on. APP_PORT=5000 # Public origin(s) the browser uses, comma-separated. MUST match how you open # the app (a mismatch serves a white screen — CORS gates the static assets). # Examples: http://localhost:5000 | https://crm.example.com PUBLIC_URL=http://localhost:5000 # ---- Database (CRM) ---- POSTGRES_DB=godcrm POSTGRES_USER=godcrm # REQUIRED. Generate: openssl rand -hex 24 POSTGRES_PASSWORD= # ---- Secrets (REQUIRED) ---- # Generate each: openssl rand -hex 32 (SECRETS_MASTER_KEY: openssl rand -base64 32) JWT_SECRET= SESSION_SECRET= ENCRYPTION_KEY= MASTER_ENCRYPTION_KEY= SECRETS_MASTER_KEY= CRM_CREDENTIAL_KEY= # Postgres image for the CRM database. pgvector/pgvector:pg16 is stock # Postgres 16 plus the `vector` extension — it is the default in every mode so # that turning memory on later never means swapping the image under an # existing data volume. DB_IMAGE=pgvector/pgvector:pg16 # ---- RCLL memory (OPTIONAL) ---- # Three modes; `install.sh` asks and sets this for you. # none — no memory at all. Nothing below is used. # embedded — memory lives in schema MEMORY_SCHEMA inside the CRM database. # One database to run and back up. Memory migrations are DDL # against your CRM database — see MEMORY_RUN_MIGRATIONS. # standalone — memory gets its own database, container and volume. Two # databases to back up; the CRM database is never touched by # memory DDL. # Same image and the same data model either way — this is a placement choice, # not a feature tier. Change it later by re-running with the other profile # (the data does not move by itself: dump and load it). MEMORY_MODE=none # Memory image. NOT PUBLISHED YET — this path goes live with the first # release; until then, enabling memory needs an image you built yourself. # Pin a digest here if you want to freeze the version. MEMORY_IMAGE=ghcr.io/holetron-lab/fleet-memory:0.1.0 # Where the CRM finds memory. Both topologies answer on the same alias — # leave as-is unless you run memory outside this compose file. HINDSIGHT_URL=http://hindsight:5100 # embedded only — the schema memory owns inside the CRM database. It is # created and upgraded by memory's own migrations; nothing else writes there. MEMORY_SCHEMA=hindsight_v2 # Run memory migrations on container start. A FRESH install needs this once to # build the schema. In `embedded` mode this is DDL against your CRM database on # every restart — once you are past the first boot, set it to false and run # upgrades deliberately (after a backup). MEMORY_RUN_MIGRATIONS=true # standalone only — password for memory's own database. Generate: openssl rand -hex 24 HINDSIGHT_DB_PASSWORD= # LLM used to CLASSIFY memories on write. The read path never calls a model. # `none` is fully supported: writes still work, only classification quality # degrades. Leave LLM_PROVIDER=none if you have no key — a real provider with # an empty key fails to boot and restarts forever. LLM_PROVIDER=none LLM_API_KEY= LLM_MODEL=gpt-4o-mini