Skip to main content

featherbit

A high-performance API gateway delivered as a single Rust binary. Routes are visual node graphs — 80+ plugins wired together through success and error ports — serving HTTP/1.1, HTTP/2, WebSocket, and raw TCP/UDP.

gateway.yaml
policies:
- name: echo-policy
error_handler: error-handler
nodes:
- id: listener
type: listener
- id: rewrite
type: proxy-rewrite
config: { phase: request, strip_path_prefix: /api }
- id: backend
type: upstream
config:
targets:
- host: ${ECHO_BACKEND_HOST:-localhost}
port: ${ECHO_BACKEND_PORT:-3000}
- id: client
type: client
edges:
- from: listener.out
to: rewrite.in
- from: rewrite.success
to: backend.in
- from: backend.success
to: client.in
entrylistener
transformproxy-rewrite
proxyupstream
exitclient

A request flows listener → plugins → client. Every node also has an error port, so failures route to handlers instead of raw 500s.

Node-graph routing policies

Each route is a directed graph of plugin nodes wired through success and error ports — declared in YAML, edited visually, validated on save.

80+ native plugins

Proxying, transforms, auth (key/basic/JWT/HMAC/LDAP/OIDC), authz, rate limiting, traffic control, 17 loggers, tracing, serverless.

Lua scripting

Drop an execute(ctx) script into the pipeline. Scripts are validated at policy compile time and indistinguishable from native nodes.

TLS, mTLS & SNI

TLS termination with hot-reloading certificates, per-hostname SNI certs, and mTLS that exposes the client identity — fingerprint, CN, SAN — to the graph.

HTTP/2 & WebSocket

HTTP/2 negotiated per connection (ALPN over TLS, h2c on plaintext). WebSocket routes run the policy graph, then relay — including RFC 8441 over HTTP/2.

L4 TCP/UDP streams

Proxy raw TCP and UDP to a load-balanced pool, with SNI-based routing for TLS passthrough — no termination required.

HA clustering with etcd

Point the config source at etcd and replicas converge on the same routes, policies, and consumers. Stateless single-binary mode stays the default.

Hot-reload & graceful shutdown

Config, policies, and scripts take effect without a restart; failed reloads keep the last good config serving. On SIGTERM, in-flight requests drain before exit.

Metrics, tracing & the web UI

Per-route and per-node Prometheus metrics, OpenTelemetry/Zipkin tracing, health and readiness probes — plus an embedded node-graph editor.