HashiCorp Consul
A service registry with health checks and a DNS interface, plus a service mesh that configures Envoy proxies for mTLS between services.
- What it is
- Service discovery & mesh,DNS,Coordination services
- Type
- Commercial product
- Made by
- HashiCorp, an IBM company
- License
- Business Source License 1.1 since 1.17 (source-available, not OSI open source); MPL 2.0 before the August 2023 change
- Facts checked
- 5 October 2026
What it is
Consul is one binary that runs as an agent in one of two roles. Three or five server agents per datacenter hold the state: the service catalog, health check results, the key/value store and mesh configuration. They elect a leader and replicate every change with Raft, so a write counts only once a majority of servers has stored it. Client agents run on every machine, register the services there, run their health checks (an HTTP endpoint, a TCP port, a script) and forward requests to the servers. All agents in a datacenter also join a gossip pool built on HashiCorp’s Serf library, which spreads membership and detects failed nodes without the servers polling every machine. Apps find each other by asking an agent: a DNS query for payments.service.consul on port 8600 returns only instances that pass their checks, and the HTTP API returns the same data in more detail.
On top of the catalog sits the service mesh, first released as Connect in Consul 1.2 in 2018. The servers run a certificate authority (built in, or backed by Vault) and issue each service a certificate. Envoy sidecars, configured by Consul over Envoy’s xDS API, use those certificates for mutual TLS and enforce intentions, rules such as “web may call payments”. On Kubernetes and ECS, Consul dataplanes can replace the client agents, with a single gRPC connection to the servers instead of gossip. Consul moved from MPL 2.0 to the Business Source License with version 1.17 in 2023. HashiCorp’s hosted version, HCP Consul Dedicated, reached end of life on November 12, 2025, and Consul 2.0 (May 2026) switched to IBM’s versioning and support lifecycle.
Why teams pick it
- One catalog and mesh across VMs, bare metal, Kubernetes, Amazon ECS, Lambda and Nomad, not just one Kubernetes cluster
- The DNS interface lets existing apps find healthy instances without code changes or a client library
- Health checks run on the agent next to each service, and failed instances drop out of DNS and API answers
- mTLS and intentions with a built-in CA or Vault, plus L7 traffic splitting for canary and blue-green releases
- Several datacenters can be joined with WAN federation or cluster peering, each keeping its own catalog
Watch out for
- Business Source License since 1.17: free to use in production, but not OSI open source, and not allowed in a competing hosted or embedded product
- Real operational work: a Raft quorum of servers, an agent or dataplane on every node, gossip encryption keys, ACL tokens and TLS; if a quorum of servers is lost, writes stop and recovery is manual
- Edition split: Community edition’s mesh covers a single cluster, multi-tenancy (admin partitions, namespaces), read replicas, automated backups and audit logging need Enterprise, and an Enterprise Standard licence doesn’t cover the mesh at all
- HCP Consul Dedicated, the managed version, ended on November 12, 2025; HashiCorp’s migration path is self-managed Consul Enterprise, not Community edition
- The KV store is basic (values up to 512 KB) and feature complete: good for configuration, locks and leader election, not as a database
Alternatives
What all service discovery & mesh have in common →How it fits with other technologies
What HashiCorp Consul uses
Register a service with a health check and an Envoy sidecar · hcl
# web.hcl
service {
name = "web"
port = 8080
check {
http = "http://localhost:8080/health"
interval = "10s" # fail it and web drops out of DNS answers
}
connect {
sidecar_service {
proxy {
upstreams = [{
destination_name = "payments"
local_bind_port = 9191 # web calls localhost:9191; Envoy adds mTLS
}]
}
}
}
}
# consul services register web.hcl
# consul connect envoy -sidecar-for web
# consul intention create -allow web payments
# dig @127.0.0.1 -p 8600 web.service.consul # healthy instances onlyCommunity edition, Enterprise and HCP#
Community edition is free under the BUSL. Enterprise comes in two licences, and the cheaper one leaves out the service mesh.
| Feature | Community | Enterprise Standard | Enterprise Premium |
|---|---|---|---|
| Service discovery, DNS, KV store | Yes | Yes | Yes |
| Service mesh | Single cluster only | No | Yes |
| API, ingress and terminating gateways | Yes | No | Yes |
| Several runtimes in one deployment | No | Yes | Yes |
| Admin partitions and namespaces | No | Yes | Yes |
| Read replicas, redundancy zones, automated backups | No | Yes | Yes |
| Audit logging, OIDC login, FIPS 140-3 builds | No | Yes | Yes |
| Locality-aware routing, fault injection, per-service rate limits | No | No | Yes |
- HCP Consul Dedicated, the version HashiCorp ran for you, reached end of life on November 12, 2025. Its clusters can be migrated only to self-managed Consul Enterprise.
- From 2.0, Consul follows IBM’s Version-Modification-Fix lifecycle: 2.0.x is planned to be supported until April 30, 2028. 1.21 was the last LTS release.
Alternatives#
Other ways to get discovery or a mesh, depending on where your services run.
Istio
CNCF graduatedA Kubernetes-first mesh with Envoy sidecars or a sidecar-less ambient mode. Also the base of the AKS add-on and Cloud Service Mesh on GKE.
Linkerd
CNCF graduatedA Kubernetes mesh with small Rust proxies and fewer knobs. The project ships edge releases; stable builds come from vendors such as Buoyant.
Cloud registries
managedAWS Cloud Map and Google Service Directory keep a registry with DNS and API lookups as a managed service, so there are no servers to run. Cloud Map can also health-check instances.
Kubernetes Service DNS
built inIf everything runs in one cluster, Services already get stable DNS names backed by healthy pods, with no extra system to operate.
See it in a real stack
No architecture uses HashiCorp Consul yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2013–2026
By 2014 more teams were splitting applications into services on many machines, and every service had to find a database, a queue or another service, know which copies were healthy, and pick up settings such as a maintenance-mode flag. Existing answers covered parts of this. DNS worked everywhere but knew nothing about health and was cached unpredictably; ZooKeeper offered a consistent registry, but every app needed a client library for it.
HashiCorp co-founder Armon Dadgar announced Consul on April 17, 2014, as one tool for service discovery, health checking and key/value configuration, answering lookups over both DNS and HTTP and spanning several datacenters. The announcement argued that “distributed messaging, leader election, security, data storage are not components anyone should build from scratch”, so Consul reused HashiCorp’s Serf library, released the year before, for gossip, and Raft, a consensus algorithm from Stanford, for leader election.
Consul 1.2 added Connect in June 2018, turning the registry into a service mesh with certificates, intentions and sidecar proxies, and Envoy became the proxy Consul configures. In 2023 HashiCorp moved Consul to the Business Source License from version 1.17. IBM completed its purchase of HashiCorp in February 2025, HCP Consul Dedicated shut down that November, and Consul 2.0 arrived in May 2026.
Why it’s built this way
- Gossip for membership, Raft only on the servers
- Only the three to five servers take part in Raft, so thousands of client agents don’t slow down consensus. Membership and failure detection travel by gossip, which the announcement chose because it is lightweight and performant.
- Health checks run by an agent on every node
- The agent next to each service runs its checks and reports the result, so failure detection is spread across the cluster instead of a central poller, and DNS answers can leave out unhealthy instances.
- DNS as the default way to discover services
- Almost every program can already resolve a name. Answering
name.service.consullets existing apps use the catalog without code changes; the HTTP API is there for apps that want more. - Each datacenter keeps its own catalog
- Catalogs aren’t replicated between datacenters by default. A request for another datacenter’s services is forwarded to that datacenter’s servers, so nothing has to keep one global copy in sync, but while a datacenter is unreachable its services are too.
Timeline
- 2013
HashiCorp releases Serf, the gossip library Consul builds on
- 2014
Consul 0.1 released in April
- 2017
Consul 1.0 in October
- 2018
Consul 1.2 adds Connect, its service mesh, in June
- 2023
Moves to the Business Source License with version 1.17
- 2025
IBM completes its HashiCorp acquisition; HCP Consul Dedicated ends in November
- 2026
Consul 2.0 in May, on IBM’s versioning and support lifecycle
- HashiCorp blog: Consul announcement (Armon Dadgar, Apr 2014)
- Airbnb Tech Blog: SmartStack, service discovery in the cloud (on DNS and ZooKeeper, Oct 2013) · archived copy, original
- GitHub: hashicorp/serf v0.1.0 tag (Oct 2013)
- GitHub: hashicorp/consul v0.1.0 tag (Apr 2014)
- Consul CHANGELOG (0.1.0, 1.0.0 and 1.2.0 entries)
- HashiCorp blog: Consul 1.2, service mesh (Jun 2018)
- HashiCorp blog: HashiCorp adopts Business Source License (Aug 2023) · archived copy, original
- IBM newsroom: IBM completes acquisition of HashiCorp (Feb 2025)
- Consul docs: HCP Consul Dedicated (end of life November 12, 2025)
- Consul docs: Consul 2.0.x release notes
Sources34 · facts checked 5 October 2026
- Consul docs: What is Consul?
- Consul docs: Control plane architecture (servers, clients, gossip, datacenters)
- Consul docs: Consensus (Raft)
- Consul docs: Gossip (Serf)
- Consul docs: Consul DNS overview
- Consul docs: Consul DNS reference (`<name>.service.consul`)
- Consul docs: Ports (DNS on 8600)
- Consul docs: Health checks on VMs
- Consul docs: Key/value store overview (512 KB limit, feature complete)
- Consul docs: Connect workloads to the service mesh
- Consul docs: Envoy proxy configuration reference (xDS)
- Consul docs: Sidecar proxies (`sidecar_service`, upstreams)
- Consul docs: Certificate authority for the service mesh (built-in, Vault)
- Consul docs: Service intentions
- Consul docs: Create and manage intentions
- Consul docs: Consul dataplane
- Consul docs: Deploy a Consul server on Kubernetes
- Consul docs: Consul on Nomad
- Consul docs: Consul-Terraform-Sync architecture
- Consul docs: Editions and tool binaries
- Consul docs: Consul Enterprise (features by licence)
- Consul docs: HCP Consul Dedicated (end of life November 12, 2025)
- Consul docs: Consul 2.0.x release notes (IBM versioning, support dates)
- GitHub: hashicorp/consul v2.0.0 release (May 2026)
- GitHub: hashicorp/consul LICENSE (BUSL 1.1 for Consul 1.17.0 and later)
- HashiCorp blog: HashiCorp adopts Business Source License (Aug 2023) · archived copy, original
- IBM newsroom: IBM completes acquisition of HashiCorp (Feb 2025)
- CNCF: Istio (graduated July 2023)
- Istio docs: What is Istio?
- CNCF: Linkerd (graduated July 2021)
- Linkerd: Releases and versions
- AWS Cloud Map docs: What is AWS Cloud Map?
- Google Cloud docs: Service Directory overview
- Kubernetes docs: DNS for Services and Pods