Skip to content

Comparisons

This page explains where proxykit sits relative to well-known Go proxy projects.

Short version

proxykit is strongest when you want:

  • an embeddable library, not a full platform
  • one foundation for reverse HTTP, forward HTTP, CONNECT, and WebSocket
  • explicit boundaries between transport and product-specific API layers

It is not trying to be:

  • a gateway platform like Traefik or Skipper
  • a full programmable policy engine with its own domain-specific routing model

Against goproxy

Official repo: elazarl/goproxy

Topicgoproxyproxykit
Main shapeMature programmable HTTP/HTTPS proxyComposable transport foundation
Forward proxyStrongStrong
CONNECTStrongStrong
MITMStrongOptional helper package
Reverse proxy storyNot the main focusFirst-class
WebSocket storyAvailable, but not the main identityFirst-class package
Architecture styleMore monolithic proxy objectSmaller packages with explicit seams

Choose proxykit over goproxy when you care more about clean package boundaries and multi-transport composition than about inheriting a long-standing all-in-one proxy abstraction.

Against oxy

Official repo: vulcand/oxy

Topicoxyproxykit
Main shapeHTTP reverse-proxy middleware toolkitMulti-transport proxy foundation
Reverse proxyExcellentStrong
Forward proxyNot the focusFirst-class
CONNECTNot the focusFirst-class
WebSocketLimited compared to proxykit scopeFirst-class
Listener runtimeExternal concernIncluded via proxyruntime

Choose proxykit over oxy when your application is not only a reverse proxy and you want forward, CONNECT, and WebSocket handled under the same library family.

Against martian

Official repo: google/martian

Topicmartianproxykit
Main shapePowerful modifier-based HTTP/S proxy libraryPractical transport foundation
HTTP mutationVery strongStrong enough for adapter-driven apps
Reverse proxyNot the main shapeFirst-class
WebSocketNot the main focusFirst-class
Mental modelRich modifier graphSmall packages and explicit hooks

Choose proxykit when you want simpler integration and broader transport coverage, not a deep modifier framework.

Against gateway products

Examples:

These are better when you want:

  • a production gateway platform
  • service discovery
  • ingress control
  • platform-level routing and deployment features

proxykit is better when you want:

  • a library you embed in your own Go process
  • full control over storage and app protocol
  • no gateway control plane
  • a narrower surface area

Where proxykit is currently weaker

Be honest about current trade-offs:

  • fewer examples than older incumbents
  • less ecosystem recognition
  • fewer third-party integrations
  • much newer public identity

That is why this docs site exists: the code is already cleaner than many incumbent alternatives for certain use cases, but the documentation now needs to make that clear quickly.

Released under the Apache 2.0 License.