Skip to main content

Resources & the Config Model

The Elchi xDS configuration editor

Everything Elchi pushes to Envoy is modeled as a resource. The UI generates a typed form for every resource directly from Envoy's protobuf definitions, so new Envoy fields appear in the editor without any manual UI work.

Resource types​

ResourcexDSDescription
ListenersLDSEntry points. Bind addresses, filter chains, TLS termination, and the HTTP/TCP filter pipeline.
ClustersCDSUpstream pools. Load-balancing policy, health checks, circuit breakers, transport sockets.
RoutesRDSRoute configurations and virtual hosts. Match rules, rewrites, retries, timeouts.
EndpointsEDSConcrete upstream addresses. Managed manually or synced live by Endpoint Discovery.
Secrets & TLSSDSCertificates, keys, and validation contexts. Issued automatically through ACME or uploaded.
BootstrapBootThe static config each Envoy starts with — node ID, admin, and the xDS connection back to Elchi.

At a glance — how the resources reference each other, from the listener down to endpoints and secrets:

Filters & Extensions​

HTTP, network, listener, and UDP filters are managed under Filters, and reusable custom configurations live under Extensions. Both are versioned per Envoy release and validated against the matching proto schema.

Two-step validation​

Every change is checked twice before it can ship:

  1. Frontend — TypeScript types generated from the proto catch shape and type errors as you edit.
  2. Backend — protoc-gen-validate rules run on the controller before the resource is persisted.

Save & Publish​

Edits are kept as drafts so you can stage several changes safely, then publish them together. The controller validates the bundle, persists it to MongoDB, and pushes a new snapshot to the control-plane — Envoy applies it without a restart.

Inspect what Envoy actually received

Open Snapshot dump for any listener to see the exact xDS payload streamed to connected proxies — the fastest way to confirm a publish landed.

Understanding relationships​

  • Dependency graph — a Cytoscape view of how a resource links to clusters, routes, secrets, and filters. Use it to spot orphaned or broken references.
  • Route map — a topology view of how requests flow through a listener's routes to upstreams.
  • Global search — find any hostname, resource, or value across the project from one search box.
  • Templates & Snippets — save reusable resource templates and config snippets to standardize new setups.