Skip to content
Go to file


Failed to load latest commit information.
Latest commit message
Commit time


Vulcand is a programmatic extendable proxy for microservices and API management. It is inspired by Hystrix and powers Mailgun microservices infrastructure.

Focus and priorities

Vulcand is focused on microservices and API use-cases.


  • Uses Etcd as a configuration backend.
  • API and command line tool.
  • Pluggable middlewares.
  • Support for canary deploys, realtime metrics and resiliency.

Vulcan diagram

Project info

status Used in production@Mailgun on moderate workloads. Under active development.
build status Build Status

Opentracing Support

Vulcand has support for open tracing via the Jaeger client libraries. Users who wish to use tracing support should use the --enableJaegerTracing flag and must either run the Jaeger client listening on localhost:6831/udp or set the environment variables JAEGER_AGENT_HOST and JAEGER_AGENT_POST. (See the Jaeger client libraries for all available configuration environment variables.

When enabled vulcand will create 2 spans, one span called vulcand which covers the entire downstream request. The other span called middleware which only spans the processing of the middleware before the request is routed downstream.

Aliased Expressions

When running vulcand in a kubernetes DaemonSet vulcand needs to know requests from the local node can match Host("localhost") rules. This --aliases flag allows an author of a vulcand DaemonSet to tell vulcand the name of the node it's currently running on, such that vulcand correctly routes requests for Host("localhost"). The --aliases flag allows the user to pass in multiple aliases separated by comma's.


$ vulcand --aliases 'Host("localhost")=Host("")'
You can’t perform that action at this time.