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 |