Skip to main content

References

GoFr Configuration Options

This document lists all the configuration options supported by the GoFr framework. The configurations are grouped by category for better organization.

App

NameDescriptionDefault Value
APP_NAMEName of the applicationgofr-app
APP_ENVName of the environment file to use (e.g., stage.env, prod.env, or local.env).
APP_VERSIONApplication versiondev
LOG_LEVELLevel of verbosity for application logs. Supported values are DEBUG, INFO, NOTICE, WARN, ERROR, FATALINFO
REMOTE_LOG_URLURL to remotely change the log level
REMOTE_LOG_FETCH_INTERVALTime interval (in seconds) to check for remote log level updates15
METRICS_PORTPort on which the application exposes metrics2121
HTTP_PORTPort on which the HTTP server listens8000
GRPC_PORTPort on which the gRPC server listens9000
TRACE_EXPORTERTracing exporter to use. Supported values: gofr, zipkin, jaeger, otlp.
TRACER_HOSTHostname of the tracing collector. Required if TRACE_EXPORTER is set to zipkin or jaeger.DEPRECATED
TRACER_PORTPort of the tracing collector. Required if TRACE_EXPORTER is set to zipkin or jaeger.9411DEPRECATED
TRACER_URLURL of the trace collector. Required if TRACE_EXPORTER is set to zipkin or jaeger.
TRACER_RATIORefers to the proportion of traces that are exported through sampling. It is optional configuration. By default, this ratio is set to 1.
TRACER_AUTH_KEYAuthorization header for trace exporter requests. Supported for zipkin, jaeger, otlp.
TRACER_HEADERSCustom authentication headers for trace exporter requests in comma-separated key=value format (e.g., "X-Api-Key=secret,Authorization=Bearer token"). Supported for zipkin, jaeger, otlp. Takes priority over TRACER_AUTH_KEY.
CMD_LOGS_FILEFile to save the logs in case of a CMD application
SHUTDOWN_GRACE_PERIODTimeout duration for server shutdown process30s
GOFR_TELEMETRYEnable telemetry for GoFr framework usagetrue
LOG_DISABLE_PROBESDisable log probes for health checksfalse
GRPC_ENABLE_REFLECTIONEnable gRPC server reflectionfalse

HTTP

NameDescription
REQUEST_TIMEOUTSet the request timeouts (in seconds) for HTTP server.
CERT_FILESet the path to your PEM certificate file for the HTTPS server to establish a secure connection.
KEY_FILESet the path to your PEM key file for the HTTPS server to establish a secure connection.

CORS

NameDescriptionDefault Value
ACCESS_CONTROL_ALLOW_ORIGINAllowed origin(s) for cross-origin requests. Supports comma-separated values for multiple origins (e.g., https://app.example.com,https://admin.example.com).*
ACCESS_CONTROL_ALLOW_HEADERSAllowed request headers for cross-origin requests.Authorization, Content-Type, x-requested-with, origin, true-client-ip, X-Correlation-ID
ACCESS_CONTROL_ALLOW_METHODSAllowed HTTP methods. Automatically set from registered routes if not provided.
ACCESS_CONTROL_ALLOW_CREDENTIALSAllow credentials (cookies, HTTP authentication) in cross-origin requests.
ACCESS_CONTROL_EXPOSE_HEADERSAdditional headers exposed to the client in cross-origin responses.
ACCESS_CONTROL_MAX_AGEMaximum time (in seconds) browsers can cache preflight responses.

Datasource

SQL

NameDescriptionDefault Value
DB_DIALECTDatabase dialect. Supported values: mysql, postgres, supabase
DB_HOSTHostname of the database server.
DB_PORTPort of the database server.3306
DB_USERUsername for the database.
DB_PASSWORDPassword for the database.
DB_NAMEName of the database to use.
DB_MAX_IDLE_CONNECTIONNumber of maximum idle connection.2
DB_MAX_OPEN_CONNECTIONNumber of maximum connections which can be used with database.0 (unlimited)
DB_SSL_MODETLS/SSL mode for database connections. Supported modes: disable (no TLS), preferred (attempts TLS, falls back to plain), require (enforces TLS, skips validation), skip-verify (enforces TLS, no certificate validation), verify-ca (enforces TLS, validates certificate against CA), verify-full (enforces TLS with full validation including hostname). Currently supported for MySQL/MariaDB and PostgreSQL.disable
DB_TLS_CA_CERTPath to CA certificate file for TLS connections. Required for verify-ca and verify-full SSL modes.None
DB_TLS_CLIENT_CERTPath to client certificate file for mutual TLS authentication.None
DB_TLS_CLIENT_KEYPath to client private key file for mutual TLS authentication.None
DB_REPLICA_HOSTSComma-separated list of replica database hosts. Used for read replicas.None
DB_REPLICA_PORTSComma-separated list of replica database ports. Used for read replicas.None
DB_REPLICA_USERSComma-separated list of replica database users. Used for read replicas.None
DB_REPLICA_PASSWORDSComma-separated list of replica database passwords. Used for read replicas.None
DB_REPLICA_MAX_IDLE_CONNECTIONSMaximum idle connections allowed for a replica50
DB_REPLICA_MIN_IDLE_CONNECTIONSMinimum idle connections for a replica10
DB_REPLICA_DEFAULT_IDLE_CONNECTIONSIdle connections used if no primary setting is provided10
DB_REPLICA_MAX_OPEN_CONNECTIONSMaximum open connections allowed for a replica200
DB_REPLICA_MIN_OPEN_CONNECTIONSMinimum open connections for a replica50
DB_REPLICA_DEFAULT_OPEN_CONNECTIONSOpen connections used if no primary setting is provided100
DB_CHARSETThe character set for database connectionutf8
SUPABASE_CONNECTION_TYPEConnection type to Supabase. Supported values: direct, session, transactiondirect
SUPABASE_PROJECT_REFSupabase project reference ID
SUPABASE_REGIONSupabase region for pooled connections
DB_URLFull PostgreSQL connection string for Supabase (alternative to separate config parameters)

Redis

NameDescriptionDefault Value
REDIS_HOSTHostname of the Redis server.localhost
REDIS_PORTPort of the Redis server.6379
REDIS_USERUsername for the Redis server (optional).""
REDIS_PASSWORDPassword for the Redis server (optional).""
REDIS_DBDatabase number to use for the Redis server.0
REDIS_TLS_ENABLEDEnable TLS for Redis connections.false
REDIS_TLS_CA_CERTPath to the TLS CA certificate file for Redis (or PEM-encoded string).""
REDIS_TLS_CERTPath to the TLS certificate file for Redis (or PEM-encoded string).""
REDIS_TLS_KEYPath to the TLS key file for Redis (or PEM-encoded string).""

Redis PubSub Configuration:

NameDescriptionDefault Value
REDIS_PUBSUB_DBRedis database number to use only for Redis Pub/Sub (when PUBSUB_BACKEND=REDIS). Use a different DB than REDIS_DB when running GoFr migrations with Redis Streams mode to avoid gofr_migrations key-type collisions.Default: 15 (highest default Redis database, 0-15)
REDIS_PUBSUB_MODEOperation mode: pubsub or streams.streams
REDIS_STREAMS_CONSUMER_GROUPConsumer group name (required for streams mode).""
REDIS_STREAMS_CONSUMER_NAMEUnique consumer name (optional, auto-generated if empty).""
REDIS_STREAMS_BLOCK_TIMEOUTBlocking duration for reading new messages using Redis XREADGROUP. Lower values (1s-2s) provide faster detection but increase CPU usage. Higher values (10s-30s) reduce CPU usage, ideal for batch processing.5s
REDIS_STREAMS_PEL_RATIORatio of PEL (pending) messages to read vs new messages (0.0-1.0). Controls balance between retry and fresh messages. 0.7 = 70% PEL, 30% new.0.7
REDIS_STREAMS_MAXLENMaximum length of the stream (approximate). Prevents streams from growing indefinitely. Set to 0 for unlimited.0 (unlimited)

Note: When using GoFr migrations with Streams mode, keep REDIS_DB and REDIS_PUBSUB_DB separate (defaults: 0 and 15). For REDIS_STREAMS_BLOCK_TIMEOUT: use 1s-2s for real-time or 10s-30s for batch processing.

Pub/Sub

NameDescriptionDefault Value
PUBSUB_BACKENDPub/Sub message broker backend wired automatically by gofr.New(). Accepted values: kafka, google, mqtt, redis (case-insensitive). Other backends (NATS JetStream, AWS SQS, Azure Event Hub) are wired explicitly via app.AddPubSub(...).

Kafka

NameDescriptionDefault Value
PUBSUB_BROKERComma-separated list of broker addresseslocalhost:9092
PARTITION_SIZESize of each message partition (in bytes)0
PUBSUB_OFFSETOffset to start consuming messages from. -1 for earliest, 0 for latest.-1
KAFKA_BATCH_SIZENumber of messages to batch before sending to Kafka1
KAFKA_BATCH_BYTESNumber of bytes to batch before sending to Kafka1048576
KAFKA_BATCH_TIMEOUTTime to wait before sending a batch to Kafka100ms
CONSUMER_IDUnique identifier for this consumergofr-consumer
KAFKA_SECURITY_PROTOCOLSecurity protocol used to communicate with Kafka (e.g., PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL)PLAINTEXT
KAFKA_SASL_MECHANISMSASL mechanism for authentication (e.g. PLAIN, SCRAM-SHA-256, SCRAM-SHA-512)None
KAFKA_SASL_USERNAMEUsername for SASL authenticationNone
KAFKA_SASL_PASSWORDPassword for SASL authenticationNone
KAFKA_TLS_CERT_FILEPath to the TLS certificate fileNone
KAFKA_TLS_KEY_FILEPath to the TLS key fileNone
KAFKA_TLS_CA_CERT_FILEPath to the TLS CA certificate fileNone
KAFKA_TLS_INSECURE_SKIP_VERIFYSkip TLS certificate verificationfalse

Google

NameDescription
GOOGLE_PROJECT_IDID of the Google Cloud project. Required for Google Pub/Sub.
GOOGLE_SUBSCRIPTION_NAMEName of the Google Pub/Sub subscription. Required for Google Pub/Sub.

MQTT

NameDescriptionDefault Value
MQTT_PORTPort of the MQTT broker1883
MQTT_MESSAGE_ORDEREnable guaranteed message orderfalse
MQTT_PROTOCOLCommunication protocol. Supported values: tcp, ssl.tcp
MQTT_HOSTHostname of the MQTT brokerlocalhost
MQTT_USERUsername for the MQTT broker
MQTT_PASSWORDPassword for the MQTT broker
MQTT_CLIENT_ID_SUFFIXSuffix appended to the client ID
MQTT_QOSQuality of Service Level

MQTT_KEEP_ALIVE

Sends regular messages to check the link is active. May not work as expected if handling func is blocking execution

MQTT_RETRIEVE_RETAINED

Retrieve retained messages on subscription

NATS JetStream

NameDescriptionDefault Value
NATS_SERVERURL of the NATS server. The NATS driver is wired explicitly via app.AddPubSub(...); this row is a convention only — the actual env-var name is whatever you read from app.Config.Get(...) and pass into nats.Config.Server.nats://localhost:4222
NATS_CREDS_FILEFile containing the NATS credentialscreds.json
Previous
Context