--- layout: docs page_title: Configuration description: >- The agent has various configuration options that can be specified via the command-line or via configuration files. All of the configuration options are completely optional. Defaults are specified with their descriptions. --- # Configuration The agent has various configuration options that can be specified via the command-line or via configuration files. All of the configuration options are completely optional. Defaults are specified with their descriptions. Configuration precedence is evaluated in the following order: 1. [Command line arguments](/docs/agent/config/agent-config-cli) 2. [Configuration files](/docs/agent/config/agent-config-files) When loading configuration, Consul loads the configuration from files and directories in lexical order. For example, configuration file `basic_config.json` will be processed before `extra_config.json`. Configuration can be in either [HCL](https://github.com/hashicorp/hcl#syntax) or JSON format. Available in Consul 1.0 and later, the HCL support now requires an `.hcl` or `.json` extension on all configuration files in order to specify their format. Configuration specified later will be merged into configuration specified earlier. In most cases, "merge" means that the later version will override the earlier. In some cases, such as event handlers, merging appends the handlers to the existing configuration. The exact merging behavior is specified for each option below. Consul also supports reloading configuration when it receives the SIGHUP signal. Not all changes are respected, but those that are documented below in the [Reloadable Configuration](#reloadable-configuration) section. The [reload command](/commands/reload) can also be used to trigger a configuration reload. You can test the following configuration options by following the [Getting Started](https://learn.hashicorp.com/tutorials/consul/get-started-install?utm_source=consul.io&utm_medium=docs) tutorials to install a local agent. ## Ports Used Consul requires up to 6 different ports to work properly, some on TCP, UDP, or both protocols. Review the [required ports](/docs/install/ports) table for a list of required ports and their default settings. ## Reloadable Configuration Reloading configuration does not reload all configuration items. The items which are reloaded include: - ACL Tokens - [Configuration Entry Bootstrap](/docs/agent/config/agent-config-files#config_entries_bootstrap) - Checks - [Discard Check Output](/docs/agent/config/agent-config-files#discard_check_output) - HTTP Client Address - Log level - [Metric Prefix Filter](/docs/agent/config/agent-config-files#telemetry-prefix_filter) - [Node Metadata](/docs/agent/config/agent-config-files#node_meta) - Some Raft options (since Consul 1.10.0) - [`raft_snapshot_threshold`](/docs/agent/config/agent-config-files#_raft_snapshot_threshold) - [`raft_snapshot_interval`](/docs/agent/config/agent-config-files#_raft_snapshot_interval) - [`raft_trailing_logs`](/docs/agent/config/agent-config-files#_raft_trailing_logs) - These can be important in certain outage situations so being able to control them without a restart provides a recovery path that doesn't involve downtime. They generally shouldn't be changed otherwise. - [RPC rate limiting](/docs/agent/config/agent-config-files#limits) - [HTTP Maximum Connections per Client](/docs/agent/config/agent-config-files#http_max_conns_per_client) - Services - TLS Configuration - Please be aware that this is currently limited to reload a configuration that is already TLS enabled. You cannot enable or disable TLS only with reloading. - Watches [go-sockaddr]: https://godoc.org/github.com/hashicorp/go-sockaddr/template