2025-07-15 01:27:32 -05:00
#=====================================================================#
2026-07-14 10:41:50 -07:00
# Chat Configuration #
2025-07-15 01:27:32 -05:00
#=====================================================================#
# Please refer to the reference documentation for assistance #
2026-07-14 10:41:50 -07:00
# with configuring your Chat environment. #
2025-07-15 01:27:32 -05:00
# #
2026-07-14 10:31:38 -07:00
# https://hanzo.ai/docs/chat/configuration/dotenv #
2025-07-15 01:27:32 -05:00
#=====================================================================#
#==================================================#
# Server Configuration #
#==================================================#
HOST = localhost
PORT = 3080
2026-07-14 10:41:50 -07:00
MONGO_URI = mongodb://127.0.0.1:27017/Chat
2025-07-15 01:27:32 -05:00
DOMAIN_CLIENT = http://localhost:3080
DOMAIN_SERVER = http://localhost:3080
NO_INDEX = true
# Use the address that is at most n number of hops away from the Express application.
# req.socket.remoteAddress is the first hop, and the rest are looked for in the X-Forwarded-For header from right to left.
# A value of 0 means that the first untrusted address would be req.socket.remoteAddress, i.e. there is no reverse proxy.
# Defaulted to 1.
TRUST_PROXY = 1
#===============#
# JSON Logging #
#===============#
# Use when process console logs in cloud deployment like GCP/AWS
CONSOLE_JSON = false
#===============#
# Debug Logging #
#===============#
DEBUG_LOGGING = true
DEBUG_CONSOLE = false
#=============#
# Permissions #
#=============#
# UID=1000
# GID=1000
#===============#
# Configuration #
#===============#
# Use an absolute path, a relative path, or a URL
2026-07-14 10:41:50 -07:00
# CONFIG_PATH="/alternative/path/to/chat.yaml"
2025-07-15 01:27:32 -05:00
#===================================================#
# Endpoints #
#===================================================#
# ENDPOINTS=openAI,assistants,azureOpenAI,google,anthropic
PROXY =
#===================================#
2026-07-14 10:41:50 -07:00
# Known Endpoints - chat.yaml #
2025-07-15 01:27:32 -05:00
#===================================#
2026-07-14 10:41:50 -07:00
# https://hanzo.ai/docs/chat/configuration/chat_yaml/ai_endpoints
2025-07-15 01:27:32 -05:00
# ANYSCALE_API_KEY=
# APIPIE_API_KEY=
# COHERE_API_KEY=
# DEEPSEEK_API_KEY=
# DATABRICKS_API_KEY=
# FIREWORKS_API_KEY=
# GROQ_API_KEY=
# HUGGINGFACE_TOKEN=
# MISTRAL_API_KEY=
# OPENROUTER_KEY=
# PERPLEXITY_API_KEY=
# SHUTTLEAI_API_KEY=
# TOGETHERAI_API_KEY=
# UNIFY_API_KEY=
# XAI_API_KEY=
#============#
# Anthropic #
#============#
ANTHROPIC_API_KEY = user_provided
# ANTHROPIC_MODELS=claude-opus-4-20250514,claude-sonnet-4-20250514,claude-3-7-sonnet-20250219,claude-3-5-sonnet-20241022,claude-3-5-haiku-20241022,claude-3-opus-20240229,claude-3-sonnet-20240229,claude-3-haiku-20240307
# ANTHROPIC_REVERSE_PROXY=
#============#
# Azure #
#============#
# Note: these variables are DEPRECATED
2026-07-14 10:41:50 -07:00
# Use the `chat.yaml` configuration for `azureOpenAI` instead
# You may also continue to use them if you opt out of using the `chat.yaml` configuration
2025-07-15 01:27:32 -05:00
# AZURE_OPENAI_DEFAULT_MODEL=gpt-3.5-turbo # Deprecated
# AZURE_OPENAI_MODELS=gpt-3.5-turbo,gpt-4 # Deprecated
# AZURE_USE_MODEL_AS_DEPLOYMENT_NAME=TRUE # Deprecated
# AZURE_API_KEY= # Deprecated
# AZURE_OPENAI_API_INSTANCE_NAME= # Deprecated
# AZURE_OPENAI_API_DEPLOYMENT_NAME= # Deprecated
# AZURE_OPENAI_API_VERSION= # Deprecated
# AZURE_OPENAI_API_COMPLETIONS_DEPLOYMENT_NAME= # Deprecated
# AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME= # Deprecated
# PLUGINS_USE_AZURE="true" # Deprecated
#=================#
# AWS Bedrock #
#=================#
# BEDROCK_AWS_DEFAULT_REGION=us-east-1 # A default region must be provided
# BEDROCK_AWS_ACCESS_KEY_ID=someAccessKey
# BEDROCK_AWS_SECRET_ACCESS_KEY=someSecretAccessKey
# BEDROCK_AWS_SESSION_TOKEN=someSessionToken
# Note: This example list is not meant to be exhaustive. If omitted, all known, supported model IDs will be included for you.
# BEDROCK_AWS_MODELS=anthropic.claude-3-5-sonnet-20240620-v1:0,meta.llama3-1-8b-instruct-v1:0
# See all Bedrock model IDs here: https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html#model-ids-arns
# Notes on specific models:
# The following models are not support due to not supporting streaming:
# ai21.j2-mid-v1
# The following models are not support due to not supporting conversation history:
# ai21.j2-ultra-v1, cohere.command-text-v14, cohere.command-light-text-v14
#============#
# Google #
#============#
GOOGLE_KEY = user_provided
# GOOGLE_REVERSE_PROXY=
# Some reverse proxies do not support the X-goog-api-key header, uncomment to pass the API key in Authorization header instead.
# GOOGLE_AUTH_HEADER=true
# Gemini API (AI Studio)
# GOOGLE_MODELS=gemini-2.5-pro,gemini-2.5-flash,gemini-2.5-flash-lite-preview-06-17,gemini-2.0-flash,gemini-2.0-flash-lite
# Vertex AI
# GOOGLE_MODELS=gemini-2.5-pro,gemini-2.5-flash,gemini-2.5-flash-lite-preview-06-17,gemini-2.0-flash-001,gemini-2.0-flash-lite-001
# GOOGLE_TITLE_MODEL=gemini-2.0-flash-lite-001
# GOOGLE_LOC=us-central1
# Google Safety Settings
# NOTE: These settings apply to both Vertex AI and Gemini API (AI Studio)
#
# For Vertex AI:
# To use the BLOCK_NONE setting, you need either:
# (a) Access through an allowlist via your Google account team, or
# (b) Switch to monthly invoiced billing: https://cloud.google.com/billing/docs/how-to/invoiced-billing
#
# For Gemini API (AI Studio):
# BLOCK_NONE is available by default, no special account requirements.
#
# Available options: BLOCK_NONE, BLOCK_ONLY_HIGH, BLOCK_MEDIUM_AND_ABOVE, BLOCK_LOW_AND_ABOVE
#
# GOOGLE_SAFETY_SEXUALLY_EXPLICIT=BLOCK_ONLY_HIGH
# GOOGLE_SAFETY_HATE_SPEECH=BLOCK_ONLY_HIGH
# GOOGLE_SAFETY_HARASSMENT=BLOCK_ONLY_HIGH
# GOOGLE_SAFETY_DANGEROUS_CONTENT=BLOCK_ONLY_HIGH
# GOOGLE_SAFETY_CIVIC_INTEGRITY=BLOCK_ONLY_HIGH
#============#
# OpenAI #
#============#
OPENAI_API_KEY = user_provided
# OPENAI_MODELS=o1,o1-mini,o1-preview,gpt-4o,gpt-4.5-preview,chatgpt-4o-latest,gpt-4o-mini,gpt-3.5-turbo-0125,gpt-3.5-turbo-0301,gpt-3.5-turbo,gpt-4,gpt-4-0613,gpt-4-vision-preview,gpt-3.5-turbo-0613,gpt-3.5-turbo-16k-0613,gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview,gpt-3.5-turbo-1106,gpt-3.5-turbo-instruct,gpt-3.5-turbo-instruct-0914,gpt-3.5-turbo-16k
DEBUG_OPENAI = false
# TITLE_CONVO=false
# OPENAI_TITLE_MODEL=gpt-4o-mini
# OPENAI_SUMMARIZE=true
# OPENAI_SUMMARY_MODEL=gpt-4o-mini
# OPENAI_FORCE_PROMPT=true
# OPENAI_REVERSE_PROXY=
# OPENAI_ORGANIZATION=
#====================#
# Assistants API #
#====================#
ASSISTANTS_API_KEY = user_provided
# ASSISTANTS_BASE_URL=
# ASSISTANTS_MODELS=gpt-4o,gpt-4o-mini,gpt-3.5-turbo-0125,gpt-3.5-turbo-16k-0613,gpt-3.5-turbo-16k,gpt-3.5-turbo,gpt-4,gpt-4-0314,gpt-4-32k-0314,gpt-4-0613,gpt-3.5-turbo-0613,gpt-3.5-turbo-1106,gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview
#==========================#
# Azure Assistants API #
#==========================#
# Note: You should map your credentials with custom variables according to your Azure OpenAI Configuration
# The models for Azure Assistants are also determined by your Azure OpenAI configuration.
# More info, including how to enable use of Assistants with Azure here:
2026-07-14 10:41:50 -07:00
# https://hanzo.ai/docs/chat/configuration/chat_yaml/ai_endpoints/azure#using-assistants-with-azure
2025-07-15 01:27:32 -05:00
#============#
# Plugins #
#============#
# PLUGIN_MODELS=gpt-4o,gpt-4o-mini,gpt-4,gpt-4-turbo-preview,gpt-4-0125-preview,gpt-4-1106-preview,gpt-4-0613,gpt-3.5-turbo,gpt-3.5-turbo-0125,gpt-3.5-turbo-1106,gpt-3.5-turbo-0613
DEBUG_PLUGINS = true
CREDS_KEY = f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0
CREDS_IV = e2341419ec3dd3d19b13a1a87fafcbfb
# Azure AI Search
#-----------------
AZURE_AI_SEARCH_SERVICE_ENDPOINT =
AZURE_AI_SEARCH_INDEX_NAME =
AZURE_AI_SEARCH_API_KEY =
AZURE_AI_SEARCH_API_VERSION =
AZURE_AI_SEARCH_SEARCH_OPTION_QUERY_TYPE =
AZURE_AI_SEARCH_SEARCH_OPTION_TOP =
AZURE_AI_SEARCH_SEARCH_OPTION_SELECT =
# OpenAI Image Tools Customization
#----------------
# IMAGE_GEN_OAI_DESCRIPTION_WITH_FILES=Custom description for image generation tool when files are present
# IMAGE_GEN_OAI_DESCRIPTION_NO_FILES=Custom description for image generation tool when no files are present
# IMAGE_EDIT_OAI_DESCRIPTION=Custom description for image editing tool
# IMAGE_GEN_OAI_PROMPT_DESCRIPTION=Custom prompt description for image generation tool
# IMAGE_EDIT_OAI_PROMPT_DESCRIPTION=Custom prompt description for image editing tool
# DALL·E
#----------------
# DALLE_API_KEY=
# DALLE3_API_KEY=
# DALLE2_API_KEY=
# DALLE3_SYSTEM_PROMPT=
# DALLE2_SYSTEM_PROMPT=
# DALLE_REVERSE_PROXY=
# DALLE3_BASEURL=
# DALLE2_BASEURL=
# DALL·E (via Azure OpenAI)
# Note: requires some of the variables above to be set
#----------------
# DALLE3_AZURE_API_VERSION=
# DALLE2_AZURE_API_VERSION=
# Flux
#-----------------
FLUX_API_BASE_URL = https://api.us1.bfl.ai
# FLUX_API_BASE_URL = 'https://api.bfl.ml';
# Get your API key at https://api.us1.bfl.ai/auth/profile
# FLUX_API_KEY=
# Google
#-----------------
GOOGLE_SEARCH_API_KEY =
GOOGLE_CSE_ID =
# YOUTUBE
#-----------------
YOUTUBE_API_KEY =
# SerpAPI
#-----------------
SERPAPI_API_KEY =
# Stable Diffusion
#-----------------
SD_WEBUI_URL = http://host.docker.internal:7860
# Tavily
#-----------------
TAVILY_API_KEY =
# Traversaal
#-----------------
TRAVERSAAL_API_KEY =
# WolframAlpha
#-----------------
WOLFRAM_APP_ID =
# Zapier
#-----------------
ZAPIER_NLA_API_KEY =
#==================================================#
# Search #
#==================================================#
SEARCH = true
MEILI_NO_ANALYTICS = true
MEILI_HOST = http://0.0.0.0:7700
MEILI_MASTER_KEY = DrhYf7zENyR6AlUCKmnz0eYASOQdl6zxH7s7MKFSfFCt
# Optional: Disable indexing, useful in a multi-node setup
# where only one instance should perform an index sync.
# MEILI_NO_SYNC=true
#==================================================#
# Speech to Text & Text to Speech #
#==================================================#
STT_API_KEY =
TTS_API_KEY =
#==================================================#
# RAG #
#==================================================#
2026-07-14 10:31:38 -07:00
# More info: https://hanzo.ai/docs/chat/configuration/rag_api
2025-07-15 01:27:32 -05:00
# RAG_OPENAI_BASEURL=
# RAG_OPENAI_API_KEY=
# RAG_USE_FULL_CONTEXT=
# EMBEDDINGS_PROVIDER=openai
# EMBEDDINGS_MODEL=text-embedding-3-small
#===================================================#
# User System #
#===================================================#
#========================#
# Moderation #
#========================#
OPENAI_MODERATION = false
OPENAI_MODERATION_API_KEY =
# OPENAI_MODERATION_REVERSE_PROXY=
BAN_VIOLATIONS = true
BAN_DURATION = 1000 * 60 * 60 * 2
BAN_INTERVAL = 20
LOGIN_VIOLATION_SCORE = 1
REGISTRATION_VIOLATION_SCORE = 1
CONCURRENT_VIOLATION_SCORE = 1
MESSAGE_VIOLATION_SCORE = 1
NON_BROWSER_VIOLATION_SCORE = 20
LOGIN_MAX = 7
LOGIN_WINDOW = 5
REGISTER_MAX = 5
REGISTER_WINDOW = 60
LIMIT_CONCURRENT_MESSAGES = true
CONCURRENT_MESSAGE_MAX = 2
LIMIT_MESSAGE_IP = true
MESSAGE_IP_MAX = 40
MESSAGE_IP_WINDOW = 1
LIMIT_MESSAGE_USER = false
MESSAGE_USER_MAX = 40
MESSAGE_USER_WINDOW = 1
ILLEGAL_MODEL_REQ_SCORE = 5
#========================#
# Balance #
#========================#
# CHECK_BALANCE=false
# START_BALANCE=20000 # note: the number of tokens that will be credited after registration.
#========================#
# Registration and Login #
#========================#
ALLOW_EMAIL_LOGIN = true
ALLOW_REGISTRATION = true
ALLOW_SOCIAL_LOGIN = false
ALLOW_SOCIAL_REGISTRATION = false
ALLOW_PASSWORD_RESET = false
# ALLOW_ACCOUNT_DELETION=true # note: enabled by default if omitted/commented out
ALLOW_UNVERIFIED_EMAIL_LOGIN = true
SESSION_EXPIRY = 1000 * 60 * 15
REFRESH_TOKEN_EXPIRY =( 1000 * 60 * 60 * 24) * 7
JWT_SECRET = 16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
JWT_REFRESH_SECRET = eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418
# Discord
DISCORD_CLIENT_ID =
DISCORD_CLIENT_SECRET =
DISCORD_CALLBACK_URL = /oauth/discord/callback
# Facebook
FACEBOOK_CLIENT_ID =
FACEBOOK_CLIENT_SECRET =
FACEBOOK_CALLBACK_URL = /oauth/facebook/callback
# GitHub
GITHUB_CLIENT_ID =
GITHUB_CLIENT_SECRET =
GITHUB_CALLBACK_URL = /oauth/github/callback
# GitHub Enterprise
# GITHUB_ENTERPRISE_BASE_URL=
# GITHUB_ENTERPRISE_USER_AGENT=
# Google
GOOGLE_CLIENT_ID =
GOOGLE_CLIENT_SECRET =
GOOGLE_CALLBACK_URL = /oauth/google/callback
# Apple
APPLE_CLIENT_ID =
APPLE_TEAM_ID =
APPLE_KEY_ID =
APPLE_PRIVATE_KEY_PATH =
APPLE_CALLBACK_URL = /oauth/apple/callback
# OpenID
OPENID_CLIENT_ID =
OPENID_CLIENT_SECRET =
OPENID_ISSUER =
OPENID_SESSION_SECRET =
OPENID_SCOPE = "openid profile email"
OPENID_CALLBACK_URL = /oauth/openid/callback
OPENID_REQUIRED_ROLE =
OPENID_REQUIRED_ROLE_TOKEN_KIND =
OPENID_REQUIRED_ROLE_PARAMETER_PATH =
# Set to determine which user info property returned from OpenID Provider to store as the User's username
OPENID_USERNAME_CLAIM =
# Set to determine which user info property returned from OpenID Provider to store as the User's name
OPENID_NAME_CLAIM =
OPENID_BUTTON_LABEL =
OPENID_IMAGE_URL =
# Set to true to automatically redirect to the OpenID provider when a user visits the login page
# This will bypass the login form completely for users, only use this if OpenID is your only authentication method
OPENID_AUTO_REDIRECT = false
# Set to true to use PKCE (Proof Key for Code Exchange) for OpenID authentication
OPENID_USE_PKCE = false
#Set to true to reuse openid tokens for authentication management instead of using the mongodb session and the custom refresh token.
OPENID_REUSE_TOKENS =
#By default, signing key verification results are cached in order to prevent excessive HTTP requests to the JWKS endpoint.
#If a signing key matching the kid is found, this will be cached and the next time this kid is requested the signing key will be served from the cache.
#Default is true.
OPENID_JWKS_URL_CACHE_ENABLED =
OPENID_JWKS_URL_CACHE_TIME = # 600000 ms eq to 10 minutes leave empty to disable caching
#Set to true to trigger token exchange flow to acquire access token for the userinfo endpoint.
OPENID_ON_BEHALF_FLOW_FOR_USERINFRO_REQUIRED =
OPENID_ON_BEHALF_FLOW_USERINFRO_SCOPE = "user.read" # example for Scope Needed for Microsoft Graph API
# Set to true to use the OpenID Connect end session endpoint for logout
OPENID_USE_END_SESSION_ENDPOINT =
# SAML
# Note: If OpenID is enabled, SAML authentication will be automatically disabled.
SAML_ENTRY_POINT =
SAML_ISSUER =
SAML_CERT =
SAML_CALLBACK_URL = /oauth/saml/callback
SAML_SESSION_SECRET =
# Attribute mappings (optional)
SAML_EMAIL_CLAIM =
SAML_USERNAME_CLAIM =
SAML_GIVEN_NAME_CLAIM =
SAML_FAMILY_NAME_CLAIM =
SAML_PICTURE_CLAIM =
SAML_NAME_CLAIM =
# Logint buttion settings (optional)
SAML_BUTTON_LABEL =
SAML_IMAGE_URL =
# Whether the SAML Response should be signed.
# - If "true", the entire `SAML Response` will be signed.
# - If "false" or unset, only the `SAML Assertion` will be signed (default behavior).
# SAML_USE_AUTHN_RESPONSE_SIGNED=
# LDAP
LDAP_URL =
LDAP_BIND_DN =
LDAP_BIND_CREDENTIALS =
LDAP_USER_SEARCH_BASE =
#LDAP_SEARCH_FILTER="mail="
LDAP_CA_CERT_PATH =
# LDAP_TLS_REJECT_UNAUTHORIZED=
# LDAP_STARTTLS=
# LDAP_LOGIN_USES_USERNAME=true
# LDAP_ID=
# LDAP_USERNAME=
# LDAP_EMAIL=
# LDAP_FULL_NAME=
#========================#
# Email Password Reset #
#========================#
EMAIL_SERVICE =
EMAIL_HOST =
EMAIL_PORT = 25
EMAIL_ENCRYPTION =
EMAIL_ENCRYPTION_HOSTNAME =
EMAIL_ALLOW_SELFSIGNED =
EMAIL_USERNAME =
EMAIL_PASSWORD =
EMAIL_FROM_NAME =
2026-07-14 10:31:38 -07:00
EMAIL_FROM = noreply@hanzo.ai
2025-07-15 01:27:32 -05:00
#========================#
# Mailgun API #
#========================#
# MAILGUN_API_KEY=your-mailgun-api-key
# MAILGUN_DOMAIN=mg.yourdomain.com
# EMAIL_FROM=noreply@yourdomain.com
2026-07-14 10:41:50 -07:00
# EMAIL_FROM_NAME="Chat"
2025-07-15 01:27:32 -05:00
# # Optional: For EU region
# MAILGUN_HOST=https://api.eu.mailgun.net
#========================#
# Firebase CDN #
#========================#
FIREBASE_API_KEY =
FIREBASE_AUTH_DOMAIN =
FIREBASE_PROJECT_ID =
FIREBASE_STORAGE_BUCKET =
FIREBASE_MESSAGING_SENDER_ID =
FIREBASE_APP_ID =
#========================#
# S3 AWS Bucket #
#========================#
AWS_ENDPOINT_URL =
AWS_ACCESS_KEY_ID =
AWS_SECRET_ACCESS_KEY =
AWS_REGION =
AWS_BUCKET_NAME =
#========================#
# Azure Blob Storage #
#========================#
AZURE_STORAGE_CONNECTION_STRING =
AZURE_STORAGE_PUBLIC_ACCESS = false
AZURE_CONTAINER_NAME = files
#========================#
# Shared Links #
#========================#
ALLOW_SHARED_LINKS = true
ALLOW_SHARED_LINKS_PUBLIC = true
#==============================#
# Static File Cache Control #
#==============================#
# Leave commented out to use defaults: 1 day (86400 seconds) for s-maxage and 2 days (172800 seconds) for max-age
# NODE_ENV must be set to production for these to take effect
# STATIC_CACHE_MAX_AGE=172800
# STATIC_CACHE_S_MAX_AGE=86400
2026-07-14 10:41:50 -07:00
# If you have another service in front of your Chat doing compression, disable express based compression here
2025-07-15 01:27:32 -05:00
# DISABLE_COMPRESSION=true
#===================================================#
# UI #
#===================================================#
2026-07-14 10:41:50 -07:00
APP_TITLE = Chat
2025-07-15 01:27:32 -05:00
# CUSTOM_FOOTER="My custom footer"
2026-07-14 10:31:38 -07:00
HELP_AND_FAQ_URL = https://hanzo.chat
2025-07-15 01:27:32 -05:00
# SHOW_BIRTHDAY_ICON=true
# Google tag manager id
#ANALYTICS_GTM_ID=user provided google tag manager id
#===============#
# REDIS Options #
#===============#
# REDIS_URI=10.10.10.10:6379
# USE_REDIS=true
# USE_REDIS_CLUSTER=true
# REDIS_CA=/path/to/ca.crt
#==================================================#
# Others #
#==================================================#
# You should leave the following commented out #
# NODE_ENV=
# E2E_USER_EMAIL=
# E2E_USER_PASSWORD=
#=====================================================#
# Cache Headers #
#=====================================================#
# Headers that control caching of the index.html #
# Default configuration prevents caching to ensure #
# users always get the latest version. Customize #
# only if you understand caching implications. #
# INDEX_CACHE_CONTROL=no-cache, no-store, must-revalidate
# INDEX_PRAGMA=no-cache
# INDEX_EXPIRES=0
# no-cache: Forces validation with server before using cached version
# no-store: Prevents storing the response entirely
# must-revalidate: Prevents using stale content when offline
#=====================================================#
# OpenWeather #
#=====================================================#
OPENWEATHER_API_KEY =
#====================================#
2026-07-14 10:41:50 -07:00
# Chat Code Interpreter API #
2025-07-15 01:27:32 -05:00
#====================================#
2026-07-14 10:31:38 -07:00
# https://code.hanzo.ai
2026-07-14 10:41:50 -07:00
# CHAT_CODE_API_KEY=your-key
2025-07-15 01:27:32 -05:00
#======================#
# Web Search #
#======================#
# Note: All of the following variable names can be customized.
# Omit values to allow user to provide them.
# For more information on configuration values, see:
2026-07-14 10:31:38 -07:00
# https://hanzo.ai/docs/chat/features/web_search
2025-07-15 01:27:32 -05:00
# Search Provider (Required)
# SERPER_API_KEY=your_serper_api_key
# Scraper (Required)
# FIRECRAWL_API_KEY=your_firecrawl_api_key
# Optional: Custom Firecrawl API URL
# FIRECRAWL_API_URL=your_firecrawl_api_url
# Reranker (Required)
# JINA_API_KEY=your_jina_api_key
# or
# COHERE_API_KEY=your_cohere_api_key