git404hub

what is fabio fr?

fabiolb/fabio — explained in plain English

Analysis updated 2026-06-24

7,333GoAudience · ops devopsComplexity · 4/5Setup · hard

tl;dr

A zero-configuration load balancer and HTTP router that reads service tags from Consul automatically and updates routing rules instantly when services start or stop, with no config file required.

vibe map

mindmap
  root((Fabio))
    What it does
      Zero-config routing
      Load balancing
      Auto-updates from Consul
    Features
      TLS termination
      TCP proxying
      Blue/green traffic split
    Integrations
      Consul service tags
      Prometheus metrics
      HashiCorp Vault
    Deployment
      Binary or Docker
      Homebrew on Mac
      Built-in web UI

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

what do people make with this?

VIBE 1

Replace static nginx config files with automatic Consul-tag-based routing that updates without restarting the load balancer

VIBE 2

Implement blue/green deployments by shifting a percentage of traffic to a new service version using traffic shaping

VIBE 3

Set up TLS termination and WebSocket proxying for microservices registered in Consul

VIBE 4

Export routing metrics to Prometheus or DataDog to monitor traffic distribution across healthy service instances

what's the stack?

GoConsulDockerPrometheusTLSVault

how it stacks up fr

fabiolb/fabiohackl0us/geoip2-cnshopspring/decimal
Stars7,3337,3367,350
LanguageGoGoGo
Setup difficultyhardeasyeasy
Complexity4/52/52/5
Audienceops devopsops devopsdeveloper

Figures from each repo's GitHub metadata at analysis time.

how do i run it?

Difficulty · hard time til it works · 1h+

Requires a running Consul instance with services registered and health checks configured before fabio can route any traffic.

in plain english

Fabio is a load balancer and HTTP router designed for teams that already use Consul, a service discovery and health-checking tool. The key promise is zero configuration: instead of maintaining routing rules in a config file, fabio reads the service registry in Consul automatically and starts routing traffic to healthy instances. When services start or stop, the routing table updates instantly without restarting fabio. Getting started follows a short sequence: install fabio, register your services in Consul with a health check, and add a special tag to each service entry in the format urlprefix-/your-path. Fabio reads those tags and builds its routing rules from them. HTTP traffic sent to fabio on port 9999 is then distributed to matching services. TCP proxying is also supported through a separate tag format. No external configuration file is needed unless you want to override defaults. Beyond basic routing, fabio supports TLS termination with dynamic certificate stores, raw TCP proxying, WebSocket connections, server-sent events, and traffic shaping for blue/green deployment strategies, where you can shift a portion of traffic to a new service version before switching over fully. Metrics can be exported to Prometheus, Graphite, StatsD, DataDog, or Circonus. A built-in web UI shows the current routing table. The project originated at eBay and has been running in production at gumtree.com.au since September 2015, handling roughly 23,000 requests per second. It also integrates with HashiCorp Vault for secret management and with AWS Elastic Load Balancing and API Gateway. Fabio is available as pre-built binaries, a Docker image, a Homebrew package on macOS, or compiled from Go source. Full documentation is at fabiolb.net.

prompts (copy fr)

prompt 1
Set up fabio to route HTTP traffic to two Consul-registered services, show me the Consul service tags format and how to verify routing works
prompt 2
Configure fabio for a blue/green deployment, how do I shift 10% of traffic to a new service version and then roll it to 100%?
prompt 3
Enable TLS termination in fabio with a dynamic certificate store, what configuration changes are needed?
prompt 4
Export fabio metrics to Prometheus, what endpoint does fabio expose and how do I configure a Prometheus scrape job for it?

Frequently asked questions

what is fabio fr?

A zero-configuration load balancer and HTTP router that reads service tags from Consul automatically and updates routing rules instantly when services start or stop, with no config file required.

What language is fabio written in?

Mainly Go. The stack also includes Go, Consul, Docker.

How hard is fabio to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is fabio for?

Mainly ops devops.

peek the repo → explain another one

This repo across BitVibe Labs

double-check against the repo, no cap.