MCPcopy
hub / github.com/vulcand/vulcand

github.com/vulcand/vulcand @v0.9.2 sqlite

repository ↗ · DeepWiki ↗ · release v0.9.2 ↗
1,504 symbols 5,707 edges 107 files 313 documented · 21%
README

Vulcand

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.

Features

  • Uses etcd as a configuration backend.
  • API and command line tool.
  • Pluggable middlewares.
  • Support for canary deployments, realtime metrics and resilience.

Vulcan diagram

Project info

documentation https://vulcand.github.io/
status Used in production@Mailgun on moderate workloads. Under active development.
discussions https://groups.google.com/d/forum/vulcan-proxy
roadmap roadmap.md
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 and another 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 commas.

Example

$ vulcand --aliases 'Host("localhost")=Host("192.168.1.1")'

Extension points exported contracts — how you extend this code

Middleware (Interface)
(no doc) [7 implementers]
plugin/middleware.go
Engine (Interface)
Engine is an interface for storage and configuration engine, e.g. Etcd. Simple in memory implementation is available at [3 …
engine/engine.go
T (Interface)
(no doc) [4 implementers]
plugin/cacheprovider/CacheProvider.go
StatsProvider (Interface)
StatsProvider provides realtime stats abount endpoints, backends and locations [2 implementers]
engine/model.go
Stapler (Interface)
Stapler is an interface for the OCSP staple cache implementations [1 implementers]
stapler/stapler.go
RateExtractor (Interface)
RateExtractor rate extractor
plugin/ratelimit/tokenlimiter.go
Router (Interface)
This interface captures all routing functionality required by vulcan. The routing functionality mainly comes from "githu
router/router.go
StateHandler (FuncType)
StateHandler can be called by the server if the state of the connection changes. Notice that it passed previous state an
graceful/server.go

Core symbols most depended-on inside this repo

Infof
called by 102
proxy/tracing/jaeger.go
Get
called by 87
plugin/cacheprovider/MemCacheProvider.go
String
called by 83
engine/model.go
Close
called by 73
engine/engine.go
Add
called by 71
plugin/ratelimit/tokenlimiter.go
FrontendURL
called by 64
testutils/testutils.go
UpsertServer
called by 50
proxy/proxy.go
Start
called by 49
proxy/proxy.go

Shape

Method 964
Function 310
Struct 196
FuncType 16
Interface 9
TypeAlias 9

Languages

Go99%
TypeScript1%

Modules by API surface

engine/model.go101 symbols
engine/etcdng/v3/etcd.go68 symbols
engine/etcdng/v2/etcd.go67 symbols
api/api.go60 symbols
stapler/stapler.go46 symbols
proxy/mux/mux_test.go46 symbols
api/client.go45 symbols
proxy/mux/mux.go44 symbols
engine/memng/mem.go33 symbols
engine/engine.go32 symbols
proxy/server/server.go27 symbols
plugin/ratelimit/tokenlimiter.go25 symbols

Dependencies from manifests, versioned

github.com/HdrHistogram/hdrhistogram-gov1.1.2 · 1×
github.com/armon/go-proxyprotov0.0.0-2016071823162 · 1×
github.com/bshuster-repo/logrus-logstash-hookv0.0.0-2017082210273 · 1×
github.com/buger/gotermv0.0.0-2016110314080 · 1×
github.com/codahale/hdrhistogramv0.0.0-2016101002545 · 1×
github.com/coreos/etcdv3.3.9+incompatible · 1×
github.com/coreos/go-semverv0.3.0 · 1×
github.com/coreos/go-systemd/v22v22.3.2 · 1×
github.com/cpuguy83/go-md2man/v2v2.0.0-2019031423301 · 1×
github.com/davecgh/go-spewv1.1.1 · 1×

For agents

$ claude mcp add vulcand \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact