emissary is a free, open source api development & testing project written in Python and released under Apache-2.0. It has 4,523 GitHub stars, 708 forks and 442 open issues, and was last pushed 8 hours ago. On this registry it ranks #52 of 103 tracked projects in API Development & Testing, with 5 head-to-head comparisons available.

What is emissary?

What it is

Emissary-ingress is an open-source Kubernetes-native API gateway, Layer 7 load balancer, and Kubernetes Ingress built on the Envoy Proxy. The project is written in Python, distributed under the Apache-2.0 license, and is a CNCF incubation project formerly known as Ambassador API Gateway. It lives in the cloud-native ecosystem and targets microservice platforms that already use Kubernetes for scaling and resiliency.

The concrete problem it solves is ingress traffic management for many small services. Instead of placing ad hoc proxy rules, application teams can describe routing, protocol support, security, and traffic policy through Kubernetes objects. Emissary-ingress uses Envoy Proxy internally to handle data-plane routing and relies on Kubernetes externally to run, scale, and recover the gateway.

Key capabilities

  • Emissary-ingress manages ingress traffic with load balancing and supports gRPC, HTTP/2, TCP, and web sockets.
  • Routing changes are expressed through declarative Kubernetes CRDs or annotations, allowing self-service configuration for platform users.
  • Microservices can be protected with authentication, rate limiting, and TLS.
  • Availability is supported through sticky sessions, rate limiting, and circuit breaking.
  • Observability is available through integrations with Grafana, Prometheus, and Datadog, plus comprehensive metrics support.
  • Progressive delivery is enabled through canary releases.
  • The gateway can connect to service meshes including Consul, Linkerd, and Istio, and it supports Knative serverless integration.

Who uses it and how

  • Platform teams running microservices on Kubernetes use Emissary-ingress as the entry point for HTTP/2, gRPC, TCP, and websocket traffic.
  • Operators define ingress rules with CRDs or Service annotations, letting application teams request routes through Kubernetes objects.
  • Teams secure exposed microservices with authentication, rate limiting, and TLS.
  • Teams monitor traffic health with Prometheus, Grafana, or Datadog integrations, and they use canary releases for progressive delivery.
  • Organizations with existing service meshes or serverless workloads use Emissary-ingress to connect Kubernetes ingress to Consul, Linkerd, Istio, or Knative.

Getting started

Emissary-ingress is deployed in a Kubernetes cluster and configured through CRDs or annotations on Kubernetes Services. The README directs users to the Quickstart for initial setup, and it says gmake images builds the required images with goreleaser.

When to use it — and when not to

Emissary-ingress is a good fit when a team wants a Kubernetes-native, Envoy-based gateway with declarative configuration and CNCF community involvement. It is less suitable if a team needs a vendor-operated support path, because the README notes that Emissary's original parent company has stepped back from direct involvement and the project now depends more heavily on community contributions. The repository also shows 442 open issues, so teams should evaluate maintenance capacity before adopting it as critical infrastructure.

project readme (upstream, from github) — read inline

Emissary-ingress

Version Image Size Image Pulls Join Slack Core Infrastructure Initiative: Best Practices

Emissary-Ingress is an open-source Kubernetes-native API Gateway + Layer 7 load balancer + Kubernetes Ingress built on Envoy Proxy. Emissary-ingress is a CNCF incubation project (and was formerly known as Ambassador API Gateway).

Emissary-ingress enables its users to:

See the full list of features here.

Branches

(If you are looking at this list on a branch other than main, it is likely to be wrong.)

  • main: main Emissary-ingress development work (:heavy_check_mark: active development)

  • master: frozen branch for Emissary-ingress 3.10 (:heavy_check_mark: frozen)

  • release/v2.5: frozen branch for Emissary-ingress 2.5 (:heavy_check_mark: frozen)

Building Emissary 4

gmake images should make all the images you need using goreleaser. Note that .goreleaser.yaml is a generated file; do not edit it directly. It's this way so that we can use the open-source version of goreleaser.

If you want to update the Envoy version, edit the ENVOY_IMAGE value in the Makefile.

Architecture

Emissary is configured via Kubernetes CRDs, or via annotations on Kubernetes Services. Internally, it uses the Envoy Proxy to actually handle routing data; externally, it relies on Kubernetes for scaling and resiliency.

Getting Started

The fastest way to get started with Emissary is to follow the Quickstart. For other common questions, check out the Emissary FAQ or the full Emissary documentation.

Community

Emissary-ingress is a CNCF Incubating project and welcomes any and all contributors.

At this point, Emissary's original parent company has stepped back from direct involvement in the project, so the community is now more important than ever. As we've said at the past few KubeCons, Emissary needs you.

The best way to join the community is to join the CNCF Slack and hop into the #emissary-ingress channel. Checking out [open issues] or [contributing documentation] are both great ways to get started contributing.

You can also check out the project's governance documentation:

Frequently asked questions

Is emissary free to use?

emissary is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does emissary do?

open source Kubernetes-native API gateway for microservices built on the Envoy Proxy

What is emissary written in?

emissary is primarily written in Python. Its source is publicly available at https://github.com/emissary-ingress/emissary, and it has 4,523 GitHub stars.