Settings
Background
Grai uses Django and Postgres as part of it's core stack. It supports scheduled worker management with celery and cacheing through redis. It also offers both a REST API and GraphQL API.
Configuration
Most aspects of the server are fully configurable. If there are any attributes you need greater control over PR's are welcome.
âšī¸
The default settings for ALLOWED_HOSTS, CORS_ALLOWED_ORIGINS,
CSRF_TRUSTED_ORIGINS, and CORS_ALLOW_ALL_ORIGINS are all modified by
DEBUG to be maximally permissive. It will allow all hosts, all origins, and
all combinations of frontend host, backend host and scheme.
| environment variable | required | default value | description |
|---|---|---|---|
| SECRET_KEY | Yes | A crypotographic key used to prevent various exploits like CSRF attacks. This should be kept secret at all times. This will usually look like a 50 character random string of numbers and symbols. | |
| DEBUG | No | False | Run in debug mode |
| TEMPLATE_DEBUG | No | False | Run templating in debug mode |
| SERVER_HOST | No | localhost | host for the current deployment |
| SERVER_PORT | No | 8000 | port for the current deployment |
| SERVER_URL | No | http://{SERVER_HOST}:{SERVER_PORT} | URL of the server deployment |
| FRONTEND_HOST | No | localhost | host for the deployed frontend |
| FRONTEND_PORT | No | 3000 | port for the deployed frontend |
| FRONTEND_URL | No | http://{FRONTEND_HOST}:{FRONTEND_PORT} | URL of the frontenddeployment |
| DISABLE_HTTP | No | False | disables access through http |
| ALLOWED_HOSTS | No | SERVER_HOST, 127.0.0.1, [::1] | Django configuration for allowed hosts |
| CORS_ALLOWED_ORIGINS | No | http://{FRONTEND_HOST}, http://{FRONTEND_HOST}:{FRONTEND_PORT}, https://{FRONTEND_HOST}, https://{FRONTEND_HOST}:{FRONTEND_PORT} | CORS Allowed Origins |
| CSRF_TRUSTED_ORIGINS | No | SERVER_HOST, 127.0.0.1, [::1] | host for the current deployment |
| CORS_ALLOW_ALL_ORIGINS | No | False | Django CORS allow all setting |
Database Configuration
| environment variable | required | default value | description |
|---|---|---|---|
| DB_ENGINE | No | psqlextra.backend | The database engine to use |
| DB_NAME | No | grai | The name of the database to use |
| DB_USER | No | grai | The user to connect to the database with |
| DB_PASSWORD | No | grai | The password to connect to the database with |
| DB_HOST | No | localhost | The host of the database |
| DB_PORT | No | 5432 | The port of the database |
Redis Configuration
| environment variable | required | default value | description |
|---|---|---|---|
| REDIS_HOST | No | localhost | The host of the redis server |
| REDIS_PORT | No | 6379 | The port of the redis server |
| REDIS_CHANNEL_HOST | No | {REDIS_HOST} | The host of the redis server used for backend websockets |
| REDIS_CHANNEL_PORT | No | {REDIS_PORT} | The port of the redis server used for backend websockets |
| REDIS_GRAPH_CACHE_HOST | No | {REDIS_HOST} | The host of the redis server used for graph cache |
| REDIS_GRAPH_CACHE_PORT | No | {REDIS_PORT} | The port of the redis server used for graph cache |
Email Configuration
| environment variable | required | default value | description |
|---|---|---|---|
| EMAIL_BACKEND | No | django.core.mail.backends.console.EmailBackend | Your preferred email backend (opens in a new tab) |
| EMAIL_FROM | No | None | The email address your emails should be sent from |
| AWS_ACCESS_KEY_ID | No | None | AWS access key id required for amazon SES |
| AWS_SECRET_ACCESS_KEY | No | None | AWS secret access key required for amazon SES |
| AWS_SES_REGION_NAME | No | None | AWS region required for amazon SES |
| AWS_SES_REGION_ENDPOINT | No | email.us-west-2.amazonaws.com | The email address your emails should be sent from |
AI Configuration
| environment variable | required | default value | description |
|---|---|---|---|
| OPENAI_API_KEY | No | None | Your openai api key |
| OPENAI_ORG_ID | No | None | Your openai organization id |
| OPENAI_PREFERRED_MODEL | No | gpt-3.5-turbo | The preferred model to use for openai api requests. This is configurable manage cost controls but newer models provide better results |
Celery Configuration
| environment variable | required | default value | description |
|---|---|---|---|
| CELERY_BROKER | No | redis://{REDIS_HOST}:{REDIS_PORT}/0 | The backend url for celery |
| CELERY_BACKEND | No | redis://{REDIS_HOST}:{REDIS_PORT}/0 | The backend url for celery |
Miscellaneous
| environment variable | required | default value | description |
|---|---|---|---|
| SENTRY_DSN | No | Configure error reporting with Sentry | |
| SENTRY_SAMPLE_RATE | No | 0.2 | The sample rate for Sentry |
| POSTHOG_HOST | No | https://app.posthog.com (opens in a new tab) | The posthog url |
| POSTHOG_PROJECT_API_KEY | No | Configure logging through posthog | |
| DISABLE_POSTHOG | No | False | Disables all posthog logging |
| DISABLE_TELEMETRY | No | False | Disables all telemetry |
| DEFAULT_FILE_STORAGE | No | django.core.files.storage.FileSystemStorage | The default file storage backend used by Django |
| AWS_STORAGE_BUCKET_NAME | No | None | AWS bucket storage |
| GITHUB_APP_ID | No | None | |
| GITHUB_PRIVATE_KEY | No | None |