vane 0.9.0

A flow-based reverse proxy with multi-layer routing and programmable pipelines.
---
title: Comparisons
description: An objective guide to architectural trade-offs
icon: Scale
---

import { Callout } from 'fumadocs-ui/components/callout';
import { Tabs, Tab } from 'fumadocs-ui/components/tabs';
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';

# Trade-offs

This document is not a benchmark. We do not claim Vane is "faster" or "better" than established tools. Instead, we analyze the **architectural trade-offs** between Vane and other solutions to help you choose the right tool for your specific problem domain.

## When NOT to use Vane

Let's start by disqualifying Vane. If your requirements fit these patterns, other tools are likely superior choices:

<Accordions type="single">
<Accordion title="Simple configuration & Auto-HTTPS">
<Callout type="warn">
	Vane's Auto ACME are still work on progess.
</Callout>
If you just want to serve a **React SPA** or **WordPress** site with automatic SSL, use **[Caddy](https://caddyserver.com/)**. It is purpose-built for this ease of use. Vane requires explicit configuration for every step.
</Accordion>

<Accordion title="Simple, High-Performance Static Load Balancing">
	If you have a fixed set of backends and need raw, kernel-optimized throughput with static rules,
	use **[Nginx](https://nginx.org/)** or **[HAProxy](https://www.haproxy.org/)**. They are
	battle-hardened standards.
</Accordion>

<Accordion title="Container Ingress Controller">
<Callout type="warn">
	Vane's native docker discovery not ready yet; use Traefik if you need "zero-config" features
	today.
</Callout>
If you need a standard Ingress controller that strictly follows the docker or K8s Ingress spec out-of-the-box, use **[Traefik](https://traefik.io/)** or **[nginx-ingress](https://github.com/kubernetes/ingress-nginx)**. Vane is a lower-level primitive that **could** build an ingress, but isn't one by default.
</Accordion>
</Accordions>

## Ideal Use Cases for Vane

Vane is designed as a general-purpose, cloud-grade proxy and traffic engine. Its advantages become most visible in the following scenarios.

<Accordions type="single">
<Accordion title="Embedded and Resource-Constrained Environments">
Vane runs exceptionally well on constrained hardware such as IoT gateways, OpenWrt routers, and edge devices. Advanced capabilities including HTTP/3, TLS termination, programmable routing, and external drivers are delivered in a compact footprint. The binary remains small and memory usage stays low enough to coexist with core system services, without forcing trade-offs in protocol support or control surface.
</Accordion>

<Accordion title="Personal and Small VPS Deployments">
	On a personal or small VPS 1-2 **vCPU**, 512MB–1GB **RAM**, Vane avoids the common inefficiency
	where a generic reverse proxy consumes a disproportionate share of memory for a narrow role.
	Instead of allocating hundreds of megabytes to an unrelated "infrastructure" component, Vane
	provides full L4/L7 proxying, TLS, and routing logic while remaining lightweight enough to leave
	resources to actual workloads.
</Accordion>

<Accordion title="OpenWrt and Network Stack Consolidation">
	Vane can replace a fragmented proxy stack composed of tools such as `uhttpd` for WebUI, `socat`
	for L4 forwarding, and multiple single-purpose proxies. A single Vane instance can act as the
	unified ingress for an entire home or office network, handling WebUI exposure, service routing,
	protocol upgrades, and traffic control through one consistent, programmable model.
</Accordion>

<Accordion title="Cloud-Grade Control in Self-Hosted or Private Cloud Environments">
	Vane is suitable not only for local deployments, but also for building self-hosted cloud proxies
	or private traffic clusters. It can operate as the control point for a single server, a small
	fleet, or a horizontally scaled setup. The same primitives used for local routing apply to
	multi-node or cloud deployments, enabling you to build your own Cloudflare-like or ALB-like
	traffic layer without relying on managed platforms.
</Accordion>

<Accordion title="Scale-Up Proxy with Resource Efficiency as a Side Effect">
Vane is not "designed for constrained devices" in the sense of being limited or simplified. It is a full-scale proxy comparable in positioning to **Nginx** or **Caddy**. Its Rust **Ownership** model, zero-copy data path, and full **byte**-oriented processing are architectural choices for correctness and performance, not compromises. As a result, Vane scales up cleanly on powerful servers, while uniquely retaining strong efficiency when resources are limited.
</Accordion>
</Accordions>

While a minimal reverse-proxy-only setup may be smaller in isolation, Vane trades raw minimalism for a broader, programmable feature set that remains efficient across both low-end and high-end environments.

## Dimension Analysis

### Declarative vs. Imperative

The most fundamental difference is how you define behavior.

| Solution          | Approach                                                          | Pros                                 | Cons                                                     |
| ----------------- | ----------------------------------------------------------------- | ------------------------------------ | -------------------------------------------------------- |
| **Vane**          | Explicitly define execution paths and decision graph              | Complete transparency at each step   | More verbose, requires explicit definition               |
| **Nginx HAProxy** | Define rules (location blocks, ACLs) with fixed internal pipeline | Standard and well-understood         | Complex logic requires hacks (e.g., `if` is problematic) |
| **Traefik Envoy** | Declare intent (Labels, CRDs, xDS), system auto-converges         | Excellent for cloud-native discovery | Opaque "magic" makes route debugging difficult           |

### Extensibility Model

How do you add custom logic (e.g., specialized auth, complex rate limiting)?

| Solution      | Extension Method                                                                                                                | Trade-offs                                                                                           |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| **Vane**      | Built-in plugins or **External Plugins** in any language (Lua, Python, Go, Node.js) via `HTTP`, `Unix Sockets` or exec `binary` | IPC latency (μs to ms), but superior developer velocity and isolation (crashes won't affect gateway) |
| **Nginx**     | C modules                                                                                                                       | High performance, but requires recompilation                                                         |
| **OpenResty** | Lua or C modules                                                                                                                | High performanc in `LuaJIT`, but requires Lua knowledge                                              |
| **Envoy**     | Lua, C++ filters, or WASM                                                                                                       | WASM is powerful but adds learning curve and toolchain complexity                                    |

### Layer Abstraction

Most proxies force you to choose between **"TCP Mode"** L4 or **"HTTP Mode"** L7.

However, Vane allow connection starts at **L4**, Can peek at TLS headers **L4+** for SNI routing, Optionally upgrades to **L7** when conditions met

| Approach             | Behavior                                                                                 | Benefits                                             |
| -------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| **Vane**             | **Continuous Upgrade Model**, **Cross Layer Context** and **Full Duplex Stream Support** | Pay parsing cost only when necessary, per-connection |
| **Standard Proxies** | Configuration separates `stream {}` **L4** Layer from `http {}` **L7** Layer             | Simple separation but inflexible                     |

## Detailed Comparisons

### Nginx

| Feature           | Nginx                            | Vane                                   |
| :---------------- | :------------------------------- | :------------------------------------- |
| **Primary Goal**  | Web Server / Reverse Proxy       | Programmable Traffic Engine            |
| **Configuration** | Static Config Files              | Dynamic `JSON`/`YAML` Flows            |
| **Logic**         | Location Blocks, **If-Is-Evil**  | Explicit Decision Graphs               |
| **Extensibility** | C Modules, Lua `OpenResty`       | External Plugins `HTTP`/`Socket`/`CMD` |
| **Hot Reload**    | Process HUP **Connection drain** | Atomic State Swap **Zero drop**        |

### Caddy

<Callout type="warn">
	Vane's native cert manager for automatic TLS current under development.
</Callout>

| Feature             | Caddy                   | Vane                            |
| :------------------ | :---------------------- | :------------------------------ |
| **Primary Goal**    | Ease of Use, Auto-HTTPS | Granular Control, Explicitness  |
| **HTTPS**           | Automatic `Magic`       | Current Manual Explicit         |
| **Config Style**    | Caddyfile **Concise**   | `YAML`/`JSON` Flows **Verbose** |
| **Target Audience** | Developers, Sysadmins   | Platform Engineers              |

### Envoy

| Feature           | Envoy                         | Vane                                |
| :---------------- | :---------------------------- | :---------------------------------- |
| **Primary Goal**  | Universal Data Plane `Mesh`   | Programmable `Edge`/`Sidecar`       |
| **Complexity**    | High **Steep learning curve** | Moderate **Flow concept is simple** |
| **Control Plane** | xDS **Complex protocol**      | Atomic File Swaps / API             |
| **WASM**          | First-class support           | No but **External Plugins instead** |

### Traefik

<Callout type="warn">Vane's native docker discovery current under development.</Callout>

| Feature          | Traefik                     | Vane                            |
| :--------------- | :-------------------------- | :------------------------------ |
| **Primary Goal** | Cloud-Native Edge Router    | Protocol Engine and Edge Router |
| **Discovery**    | Auto-discovery (Docker/K8s) | Explicit Node Registry          |
| **Routing**      | Label-based Declarative     | Flow-based Imperative           |

## Summary

**Choose Vane if:**

- You feel restricted by **static configuration syntax**.
- You prioritize **explicit control flow** over "magic" behaviors.
- You need to mix L4 `TCP`/`UDP` Layer and L7 `HTTP` Layer logic continuing and dynamically.