###################### OpenHands Configuration Example ######################
#
# All settings have default values, so you only need to uncomment and
# modify what you want to change
# The fields within each section are sorted in alphabetical order.
#
##############################################################################

#################################### Core ####################################
# General core configurations
##############################################################################
[core]
# API key for E2B
#e2b_api_key = ""

# API key for Modal
#modal_api_token_id = ""
#modal_api_token_secret = ""

# Base path for the workspace
workspace_base = "./workspace"

# Cache directory path
#cache_dir = "/tmp/cache"

# Reasoning effort for o1 models (low, medium, high, or not set)
#reasoning_effort = "medium"

# Debugging enabled
#debug = false

# Disable color in terminal output
#disable_color = false

# Enable saving and restoring the session when run from CLI
#enable_cli_session = false

# Path to store trajectories, can be a folder or a file
# If it's a folder, the session id will be used as the file name
#save_trajectory_path="./trajectories"

# Path to replay a trajectory, must be a file path
# If provided, trajectory will be loaded and replayed before the
# agent responds to any user instruction
#replay_trajectory_path = ""

# File store path
#file_store_path = "/tmp/file_store"

# File store type
#file_store = "memory"

# List of allowed file extensions for uploads
#file_uploads_allowed_extensions = [".*"]

# Maximum file size for uploads, in megabytes
#file_uploads_max_file_size_mb = 0

# Maximum budget per task, 0.0 means no limit
#max_budget_per_task = 0.0

# Maximum number of iterations
#max_iterations = 100

# Path to mount the workspace in the sandbox
#workspace_mount_path_in_sandbox = "/workspace"

# Path to mount the workspace
#workspace_mount_path = ""

# Path to rewrite the workspace mount path to
#workspace_mount_rewrite = ""

# Run as openhands
#run_as_openhands = true

# Runtime environment
#runtime = "eventstream"

# Name of the default agent
#default_agent = "CodeActAgent"

# JWT secret for authentication
#jwt_secret = ""

# Restrict file types for file uploads
#file_uploads_restrict_file_types = false

# List of allowed file extensions for uploads
#file_uploads_allowed_extensions = [".*"]

#################################### LLM #####################################
# Configuration for LLM models (group name starts with 'llm')
# use 'llm' for the default LLM config
##############################################################################
[llm]
# AWS access key ID
#aws_access_key_id = ""

# AWS region name
#aws_region_name = ""

# AWS secret access key
#aws_secret_access_key = ""

# API key to use (For Headless / CLI only -  In Web this is overridden by Session Init)
api_key = "your-api-key"

# API base URL (For Headless / CLI only -  In Web this is overridden by Session Init)
#base_url = ""

# API version
#api_version = ""

# Cost per input token
#input_cost_per_token = 0.0

# Cost per output token
#output_cost_per_token = 0.0

# Custom LLM provider
#custom_llm_provider = ""

# Embedding API base URL
#embedding_base_url = ""

# Embedding deployment name
#embedding_deployment_name = ""

# Embedding model to use
embedding_model = "local"

# Maximum number of characters in an observation's content
#max_message_chars = 10000

# Maximum number of input tokens
#max_input_tokens = 0

# Maximum number of output tokens
#max_output_tokens = 0

# Model to use. (For Headless / CLI only -  In Web this is overridden by Session Init)
model = "gpt-4o"

# Number of retries to attempt when an operation fails with the LLM.
# Increase this value to allow more attempts before giving up
#num_retries = 8

# Maximum wait time (in seconds) between retry attempts
# This caps the exponential backoff to prevent excessively long
#retry_max_wait = 120

# Minimum wait time (in seconds) between retry attempts
# This sets the initial delay before the first retry
#retry_min_wait = 15

# Multiplier for exponential backoff calculation
# The wait time increases by this factor after each failed attempt
# A value of 2.0 means each retry waits twice as long as the previous one
#retry_multiplier = 2.0

# Drop any unmapped (unsupported) params without causing an exception
#drop_params = false

# Modify params for litellm to do transformations like adding a default message, when a message is empty.
# Note: this setting is global, unlike drop_params, it cannot be overridden in each call to litellm.
#modify_params = true

# Using the prompt caching feature if provided by the LLM and supported
#caching_prompt = true

# Base URL for the OLLAMA API
#ollama_base_url = ""

# Temperature for the API
#temperature = 0.0

# Timeout for the API
#timeout = 0

# Top p for the API
#top_p = 1.0

# If model is vision capable, this option allows to disable image processing (useful for cost reduction).
#disable_vision = true

# Custom tokenizer to use for token counting
# https://docs.litellm.ai/docs/completion/token_usage
#custom_tokenizer = ""

# Whether to use native tool calling if supported by the model. Can be true, false, or None by default, which chooses the model's default behavior based on the evaluation.
# ATTENTION: Based on evaluation, enabling native function calling may lead to worse results
# in some scenarios. Use with caution and consider testing with your specific use case.
# https://github.com/All-Hands-AI/OpenHands/pull/4711
#native_tool_calling = None

[llm.gpt4o-mini]
api_key = "your-api-key"
model = "gpt-4o"


#################################### Agent ###################################
# Configuration for agents (group name starts with 'agent')
# Use 'agent' for the default agent config
# otherwise, group name must be `agent.<agent_name>` (case-sensitive), e.g.
# agent.CodeActAgent
##############################################################################
[agent]

# whether the browsing tool is enabled
codeact_enable_browsing = true

# whether the LLM draft editor is enabled
codeact_enable_llm_editor = false

# whether the IPython tool is enabled
codeact_enable_jupyter = true

# Name of the micro agent to use for this agent
#micro_agent_name = ""

# Memory enabled
#memory_enabled = false

# Memory maximum threads
#memory_max_threads = 3

# LLM config group to use
#llm_config = 'your-llm-config-group'

# Whether to use prompt extension (e.g., microagent, repo/runtime info) at all
#enable_prompt_extensions = true

# List of microagents to disable
#disabled_microagents = []

[agent.RepoExplorerAgent]
# Example: use a cheaper model for RepoExplorerAgent to reduce cost, especially
# useful when an agent doesn't demand high quality but uses a lot of tokens
llm_config = 'gpt3'

#################################### Sandbox ###################################
# Configuration for the sandbox
##############################################################################
[sandbox]
# Sandbox timeout in seconds
#timeout = 120

# Sandbox user ID
#user_id = 1000

# Container image to use for the sandbox
#base_container_image = "nikolaik/python-nodejs:python3.12-nodejs22"

# Use host network
#use_host_network = false

# runtime extra build args
#runtime_extra_build_args = ["--network=host", "--add-host=host.docker.internal:host-gateway"]

# Enable auto linting after editing
#enable_auto_lint = false

# Whether to initialize plugins
#initialize_plugins = true

# Extra dependencies to install in the runtime image
#runtime_extra_deps = ""

# Environment variables to set at the launch of the runtime
#runtime_startup_env_vars = {}

# BrowserGym environment to use for evaluation
#browsergym_eval_env = ""

#################################### Security ###################################
# Configuration for security features
##############################################################################
[security]

# Enable confirmation mode (For Headless / CLI only -  In Web this is overridden by Session Init)
#confirmation_mode = false

# The security analyzer to use (For Headless / CLI only -  In Web this is overridden by Session Init)
#security_analyzer = ""

#################################### Eval ####################################
# Configuration for the evaluation, please refer to the specific evaluation
# plugin for the available options
##############################################################################