Ingress & service registry

Dynamic ingress for your Eru fleet.

Service discovery, self-registration and name-based routing across every Eru microservice. In-memory for dev, Redis for HA, etcd for Kubernetes — switch the backing store with one environment variable.

Registry backends: In-memoryRedis Redis Clusteretcd
ƒ CLIENTS Web Mobile Service AUTH INSPECT ROUTE SERVICES eru-ai eru-ql eru-functions eru-files eru-auth
Why eru-gateway

Service discovery, without the YAML.

A microservice fleet needs a registry, a router and a health story. eru-gateway gives you all three out of the box — no service mesh to install, no Consul to operate.

Services register themselves with a heartbeat, the gateway routes by name, and the backend store is whatever you point at: memory, Redis or etcd. Same code path, swap with one env var.

3
registry backends
90s
default TTL
1
env var to switch
0
deps for dev
Core features

A registry that just works

3

Three registry backends

In-memory for dev, Redis for HA, etcd for Kubernetes — pick with one REGISTRY_TYPE value.

Heartbeat TTL

Services re-register on a configurable TTL (90s default). Dead instances auto-deregister — no stale routes.

Name-based routing

Route by service name, not a hardcoded URL. Eru services discover each other through the gateway.

Dynamic registration

Scale up or down — new instances appear in the registry automatically, no redeploy needed.

Graceful shutdown

Services deregister cleanly on shutdown — no zombie endpoints left behind in the registry.

Env-driven config

12-factor by default: port, registry type, TTL and trace URL all come from the environment.

📈

OpenTelemetry built in

Distributed tracing wired through every request — point at any OTLP collector you already run.

Zero-dependency dev

The in-memory registry means no Redis or etcd on your laptop. Same code path, lighter stack.

K8s-friendly

The etcd backend slots naturally into Kubernetes — services find each other inside the cluster.

Architecture

How a request finds its service

A request hits the gateway, which consults the service registry, discovers a live route by name, and forwards to the target instance — backed by whichever store one env var selects.

Request HTTPS Gateway ingress Service registry register · heartbeat Discover route by name + TTL Target service live instance registry backend (1 env var) In-memorydev RedisHA etcdk8s
Registry backends

Switch with one env var

In-memory Redis Redis Cluster etcd
Configure, don't code

Gateway config, 12-factor

No router files to maintain. Pick a backend, point at a store, and the registry handles the rest.

env
# Dev: zero dependencies, in-memory
ERUGATEWAYPORT=8080
REGISTRY_TYPE=INMEMORY
REGISTRY_TTL=90s

# Production HA: Redis-backed
ERUGATEWAYPORT=8080
REGISTRY_TYPE=REDIS
REGISTRY_REDIS_ADDR=redis://redis-primary:6379
REGISTRY_TTL=90s
TRACE_URL=tempo:4317

# Kubernetes: etcd-backed
ERUGATEWAYPORT=8080
REGISTRY_TYPE=ETCD
REGISTRY_ETCD_ENDPOINTS=etcd-0:2379,etcd-1:2379,etcd-2:2379
Explore the platform

Pair eru-gateway with the rest