gitwtfhub

wtf is fabio?

42wim/fabio — explained in plain English

Analysis updated 2026-07-18 · repo last pushed 2018-02-04

GoAudience · ops devopsComplexity · 3/5DormantSetup · moderate

TL;DR

Fabio is a Go load balancer that watches Consul service registrations and automatically routes HTTP, HTTPS, and TCP traffic to healthy instances with no manual config edits.

Mindmap

mindmap
  root((repo))
    What it does
      Auto-routes traffic
      Watches Consul
      Drops unhealthy nodes
    Tech stack
      Go
      Consul
    Use cases
      Microservices routing
      Blue-green deploys
      TCP proxying
    Audience
      Ops devops

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

Why would anyone build with this?

REASON 1

Register a microservice in Consul and let Fabio route traffic to it automatically without touching a load balancer config.

REASON 2

Roll out a blue/green deployment by directing a portion of traffic to a new service version through Fabio.

REASON 3

Proxy raw TCP traffic for a database or other non-HTTP protocol through Fabio alongside your HTTP services.

REASON 4

Automatically stop sending traffic to an instance the moment Consul marks it unhealthy, without restarting Fabio.

What's in the stack?

GoConsul

How it stacks up

42wim/fabio42wim/go-xmppaasheeshlikepanner/vase
Stars0
LanguageGoGoGo
Last pushed2018-02-042020-01-24
MaintenanceDormantDormant
Setup difficultymoderatemoderatemoderate
Complexity3/53/54/5
Audienceops devopsdeveloperdeveloper

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

How do you spin it up?

Difficulty · moderate Time to first run · 1h+

Requires a running Consul cluster for service registration and health checks before Fabio can route anything.

No license information was stated in the explanation.

Wtf does this do

Fabio is a load balancer that automatically routes traffic to your services without requiring manual configuration. Think of it as a smart traffic cop that directs incoming requests to the right destination based on rules you define through service registration, rather than a static config file you have to maintain and redeploy. The way it works is straightforward: your services register themselves with Consul (a service registry tool) along with health checks and routing rules. Fabio watches Consul, picks up those rules, and immediately starts directing traffic. If a service goes down, Consul marks it as unhealthy, and Fabio stops sending traffic to it. If you deploy a new instance, Fabio sees it and starts routing requests automatically. This happens without restarting Fabio itself. You'd use this if you're running a modern infrastructure where services come and go frequently, think cloud deployments, microservices, or any setup where instances scale up and down. Instead of manually updating a load balancer config every time you deploy or roll back, your infrastructure stays in sync automatically. Fabio handles both HTTP and HTTPS traffic, as well as raw TCP proxying for databases or other protocols. It also supports advanced features like directing some traffic to a new version of your service ("blue/green" deployments) to safely test changes. Major sites like Marktplaats in the Netherlands and Gumtree in Australia have been using it to handle thousands of requests per second in production. It's built in Go, a compiled language known for speed and low overhead, which means it runs efficiently without consuming much CPU or memory. The whole setup is designed to be simple: no complex configuration language, no special setup required, just register your service in Consul and let it go.

Yoink these prompts

Prompt 1
Show me how to register a service in Consul with a health check so Fabio automatically starts routing traffic to it.
Prompt 2
Write a Consul service definition and Fabio routing tag setup to do a blue/green deployment between two versions of my app.
Prompt 3
Explain how Fabio detects an unhealthy service instance via Consul and stops routing traffic to it, with a minimal example.
Prompt 4
Set up Fabio to proxy raw TCP traffic to a database service registered in Consul.

Frequently asked questions

wtf is fabio?

Fabio is a Go load balancer that watches Consul service registrations and automatically routes HTTP, HTTPS, and TCP traffic to healthy instances with no manual config edits.

What language is fabio written in?

Mainly Go. The stack also includes Go, Consul.

Is fabio actively maintained?

Dormant — no commits in 2+ years (last push 2018-02-04).

What license does fabio use?

No license information was stated in the explanation.

How hard is fabio to set up?

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

Who is fabio for?

Mainly ops devops.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.