Skip to main content
Glama
environment.go3.47 kB
package config import ( "fmt" "os" "strconv" "time" "github.com/rs/zerolog/log" ) const ( engineBindPortEnvKey = "BIND_PORT" asyncServiceBindPortEnvKey = "ASYNC_SERVICE_PORT" asyncServiceWorkersEnvKey = "ASYNC_SERVICE_WORKERS" AsyncServiceIdleSecEnvKey = "ASYNC_SERVICE_IDLE_SEC" asyncServiceRemoveCompletedRequestsEnvKey = "ASYNC_SERVICE_REMOVE_COMPLETED_REQUESTS_AFTER_MIN" asyncServiceRemoveRetrievedResponseEnvKey = "ASYNC_SERVICE_REMOVE_RETRIEVED_RESPONSE_AFTER_MIN" defaultAsyncServiceBindPort = "8010" defaultEngineBindPort = "8000" defaultWorkers = 10 defaultIdleSec = 60 defaultRemoveCompletedRequestsMin = 60 defaultRemoveRetrievedResponseMin = 60 ) func GetEngineBindPort() string { port, err := GetEnv(engineBindPortEnvKey) if err != nil { log.Warn().Err(err). Msgf("Failed to get %s, using default port %s", engineBindPortEnvKey, defaultEngineBindPort) return defaultEngineBindPort } return port } func GetAsyncServiceRemoveCompletedRequests() time.Duration { removeCompletedRequests, err := GetEnvInt(asyncServiceRemoveCompletedRequestsEnvKey) if err != nil { defaultRemoveCompletedRequests := time.Duration(defaultRemoveCompletedRequestsMin) * time.Minute log.Warn().Err(err). Msgf("Failed to get %s, using default remove completed requests %d", asyncServiceRemoveCompletedRequestsEnvKey, defaultRemoveCompletedRequests) return defaultRemoveCompletedRequests } return time.Duration(removeCompletedRequests) * time.Second } func GetAsyncServiceRemoveRetrievedResponse() time.Duration { removeRetrievedResponse, err := GetEnvInt(asyncServiceRemoveRetrievedResponseEnvKey) if err != nil { defaultRemoveRetrievedResponse := time.Duration(defaultRemoveRetrievedResponseMin) * time.Minute log.Warn().Err(err). Msgf("Failed to get %s, using default remove retrieved response %d", asyncServiceRemoveRetrievedResponseEnvKey, defaultRemoveRetrievedResponse) return defaultRemoveRetrievedResponse } return time.Duration(removeRetrievedResponse) * time.Minute } func GetAsyncServiceBindPort() string { port, err := GetEnv(asyncServiceBindPortEnvKey) if err != nil { log.Warn().Err(err). Msgf("Failed to get %s, using default port %s", asyncServiceBindPortEnvKey, defaultAsyncServiceBindPort) return defaultAsyncServiceBindPort } return port } func GetAsyncServiceWorkers() int64 { workers, err := GetEnvInt(asyncServiceWorkersEnvKey) if err != nil { log.Warn().Err(err). Msgf("Failed to get %s, using default workers %d", asyncServiceWorkersEnvKey, defaultWorkers) return int64(defaultWorkers) } return int64(workers) } func GetAsyncServiceIdle() time.Duration { idle, err := GetEnvInt(AsyncServiceIdleSecEnvKey) if err != nil { idle = defaultIdleSec log.Warn().Err(err). Msgf("Failed to get %s, using default idle %d", AsyncServiceIdleSecEnvKey, defaultIdleSec) } return time.Duration(idle) * time.Second } func GetEnvInt(key string) (int, error) { val, err := GetEnv(key) if err != nil { return 0, err } intVal, err := strconv.Atoi(val) if err != nil { return 0, fmt.Errorf("failed to convert %s to int: %w", key, err) } return intVal, nil } func GetEnv(key string) (string, error) { val, exists := os.LookupEnv(key) if !exists { return "", fmt.Errorf("environment variable %s not set", key) } return val, nil }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TheLunarCompany/lunar'

If you have feedback or need assistance with the MCP directory API, please join our Discord server