From 4da10ea7b58cdef55e473d4fda3ff6f5b5927d04 Mon Sep 17 00:00:00 2001 From: Vishal Rana Date: Tue, 6 Oct 2026 21:51:24 -0700 Subject: [PATCH 1/2] docs: add Used by section and ADOPTERS.md List open source projects that run on Echo, each verified from a direct Echo dependency in public source code, plus vendor integrations. Text only; logos remain a sponsor benefit. Claude-Session: https://claude.ai/code/session_01QKDYQr53zNKkR7nif2CAAq --- ADOPTERS.md | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 21 ++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 ADOPTERS.md diff --git a/ADOPTERS.md b/ADOPTERS.md new file mode 100644 index 000000000..4744414ee --- /dev/null +++ b/ADOPTERS.md @@ -0,0 +1,71 @@ +# Echo adopters + +Open source projects that run on Echo. Each entry links to public source code that depends on Echo directly. + +| Organization | Project | What runs on Echo | +| --- | --- | --- | +| Beam | [Beta9](https://github.com/beam-cloud/beta9) | API and gateway | +| Bluesky | [indigo](https://github.com/bluesky-social/indigo) | AT Protocol Relay and network services | +| Bluesky | [social-app](https://github.com/bluesky-social/social-app/tree/main/bskyweb) | bskyweb, the bsky.app web server | +| Bytebase | [Bytebase](https://github.com/bytebase/bytebase) | Backend server and API | +| Chaitin | [MonkeyCode](https://github.com/chaitin/MonkeyCode) | Backend | +| Chaitin | [PandaWiki](https://github.com/chaitin/PandaWiki) | Backend API | +| Comfy Org | [ComfyUI Registry](https://github.com/Comfy-Org/registry-backend) | Registry API | +| ConfigHub | [ConfigHub SDK](https://github.com/confighub/sdk) | Function server | +| Confluent | [kcp](https://github.com/confluentinc/kcp) | UI API | +| Digger | [OpenComputer](https://github.com/diggerhq/opencomputer) | API server | +| Docker | [Docker Agent](https://github.com/docker/docker-agent) | Agent API, chat and A2A servers | +| Eukarya | [Re:Earth CMS](https://github.com/reearth/reearth-cms) | CMS server | +| Eukarya | [Re:Earth Flow](https://github.com/reearth/reearth-flow) | API server | +| Expanso | [Bacalhau](https://github.com/bacalhau-project/bacalhau) | Public API server | +| Flanksource | [canary-checker](https://github.com/flanksource/canary-checker) | API and webhook server | +| Flanksource | [config-db](https://github.com/flanksource/config-db) | Server and debug endpoints | +| Globo | [tsuru RPaaS operator](https://github.com/tsuru/rpaas-operator) | Management API | +| Hanko | [Hanko](https://github.com/teamhanko/hanko) | Authentication backend | +| Harness | [Feature Flags Relay Proxy](https://github.com/harness/ff-proxy) | Relay proxy API | +| Hatchet | [Hatchet](https://github.com/hatchet-dev/hatchet) | API server | +| IceWhale | [CasaOS](https://github.com/IceWhaleTech/CasaOS) | API server | +| Komodor | [Komoplane](https://github.com/komodorio/komoplane) | Backend API | +| LINAGORA | [cozy-stack](https://github.com/linagora/cozy-stack) | Twake Workplace backend | +| Microsoft | [Azure Container Networking](https://github.com/Azure/azure-container-networking) | Container Networking Service REST API | +| Microsoft | [Service Fabric Traefik](https://github.com/microsoft/service-fabric-traefik) | Service discovery REST API | +| monetr | [monetr](https://github.com/monetr/monetr) | API server | +| NVIDIA | [NVIDIA Cloud Functions](https://github.com/NVIDIA/nvcf) | LLM API gateway | +| NVIDIA | [Infra Controller](https://github.com/dsx-ai-factory/infra-controller) | REST API | +| OpenEverest | [OpenEverest](https://github.com/openeverest/openeverest) | API server | +| Openlane | [Openlane](https://github.com/theopenlane/core) | API server | +| Pantacor | [Pantacor Hub](https://github.com/pantacor/pantahub-base) | Hub API | +| Philips | [Terraform Registry](https://github.com/philips-labs/terraform-registry) | Terraform registry server | +| Platform Engineering Labs | [formae](https://github.com/platform-engineering-labs/formae) | API server | +| PostHog | [PostHog](https://github.com/PostHog/posthog) | Livestream service | +| QXIP | [HOMER](https://github.com/sipcapture/homer-app) | Web app and API | +| Red Hat | [osbuild-composer](https://github.com/osbuild/osbuild-composer) | Image Builder cloud API | +| Retail AI | [bean](https://github.com/retail-ai-inc/bean) | Go framework built on Echo | +| ShellHub | [ShellHub](https://github.com/shellhub-io/shellhub) | API and SSH servers | +| Streamplace | [Streamplace](https://github.com/streamplace/streamplace) | XRPC API | +| Temporal | [Temporal UI](https://github.com/temporalio/ui) | Web UI server | +| Xata | [pgstream](https://github.com/xataio/pgstream) | Webhook subscription server | +| Xata | [Xata](https://github.com/xataio/xata) | Platform API | +| Yugabyte | [YugabyteDB](https://github.com/yugabyte/yugabyte-db) | yugabyted UI API server | +| Zapier | [kubechecks](https://github.com/zapier/kubechecks) | Webhook server | +| Zapier | [tfbuddy](https://github.com/zapier/tfbuddy) | Hooks server | + +## Integrations + +Observability and error-tracking tools that ship Echo middleware. + +| Organization | Integration | +| --- | --- | +| Datadog | [dd-trace-go](https://github.com/DataDog/dd-trace-go/tree/main/contrib/labstack/echo.v4) | +| Elastic | [APM Go agent](https://github.com/elastic/apm-agent-go/tree/main/module/apmechov4) | +| Honeycomb | [beeline-go](https://github.com/honeycombio/beeline-go/tree/main/wrappers/hnyecho) | +| IBM Instana | [go-sensor](https://github.com/instana/go-sensor/tree/main/instrumentation/instaecho) | +| NAVER | [Pinpoint Go agent](https://github.com/pinpoint-apm/pinpoint-go-agent/tree/main/plugin/echov4) | +| New Relic | [Go agent](https://github.com/newrelic/go-agent/tree/master/v3/integrations/nrecho-v4) | +| Sentry | [sentry-go](https://github.com/getsentry/sentry-go/tree/master/echo) | + +## Add your project + +Open a pull request that adds one row to the table above, keeping it sorted by organization. Link to the public repository and say briefly what runs on Echo. The project must depend on Echo directly. + +Entries are based on public source code and do not imply endorsement by the organization. To change or remove an entry, open an issue or a pull request. diff --git a/README.md b/README.md index dda28b075..c6e39b685 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,27 @@ Help and questions: [Github Discussions](https://github.com/labstack/echo/discus - Automatic TLS via Let’s Encrypt - HTTP/2 support +## Used by + +Echo runs in production across the Go ecosystem, including: + +| Project | What runs on Echo | +| --- | --- | +| [Bluesky indigo](https://github.com/bluesky-social/indigo) | AT Protocol Relay and network services | +| [Temporal UI](https://github.com/temporalio/ui) | Temporal Web UI server | +| [NVIDIA Cloud Functions](https://github.com/NVIDIA/nvcf) | LLM API gateway | +| [Azure Container Networking](https://github.com/Azure/azure-container-networking) | Container Networking Service REST API | +| [osbuild-composer](https://github.com/osbuild/osbuild-composer) | Red Hat Image Builder cloud API | +| [Docker Agent](https://github.com/docker/docker-agent) | Agent API, chat and A2A servers | +| [YugabyteDB](https://github.com/yugabyte/yugabyte-db) | yugabyted UI API server | +| [PostHog](https://github.com/PostHog/posthog) | Livestream service | +| [Bytebase](https://github.com/bytebase/bytebase) | Backend server and API | +| [Hatchet](https://github.com/hatchet-dev/hatchet) | API server | +| [CasaOS](https://github.com/IceWhaleTech/CasaOS) | API server | +| [Hanko](https://github.com/teamhanko/hanko) | Authentication backend | + +See [ADOPTERS.md](./ADOPTERS.md) for the full list. Using Echo in an open source project? [Add it](./ADOPTERS.md#add-your-project). + ## Sponsors
From 12db8ccceca5718317faf670dd45a58da2d9edd6 Mon Sep 17 00:00:00 2001 From: Vishal Rana Date: Tue, 6 Oct 2026 21:56:04 -0700 Subject: [PATCH 2/2] docs: tidy README for 2026 Refresh badges (X, CI workflow, Go Reference), point links at the current site paths, make the feature list accurate for v5, render sponsors as a table GitHub displays correctly, fix the install snippet and gofmt the example, add a Security section, merge the middleware tables under one heading, and update credits. Claude-Session: https://claude.ai/code/session_01QKDYQr53zNKkR7nif2CAAq --- README.md | 204 ++++++++++++++++++++++++------------------------------ 1 file changed, 91 insertions(+), 113 deletions(-) diff --git a/README.md b/README.md index c6e39b685..cf0015532 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,35 @@ [![Latest release](https://img.shields.io/github/v/release/labstack/echo?style=flat-square&label=release&color=00afd1)](https://github.com/labstack/echo/releases) [![Last commit](https://img.shields.io/github/last-commit/labstack/echo/master?style=flat-square)](https://github.com/labstack/echo/commits/master) -[![Sourcegraph](https://sourcegraph.com/github.com/labstack/echo/-/badge.svg?style=flat-square)](https://sourcegraph.com/github.com/labstack/echo?badge) -[![GoDoc](https://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://pkg.go.dev/github.com/labstack/echo/v5) +[![Go Reference](https://img.shields.io/badge/go-reference-blue.svg?style=flat-square)](https://pkg.go.dev/github.com/labstack/echo/v5) [![Go Report Card](https://goreportcard.com/badge/github.com/labstack/echo?style=flat-square)](https://goreportcard.com/report/github.com/labstack/echo) -[![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/labstack/echo/ci.yml?style=flat-square)](https://github.com/labstack/echo/actions) +[![CI](https://img.shields.io/github/actions/workflow/status/labstack/echo/ci.yml?style=flat-square&label=ci)](https://github.com/labstack/echo/actions/workflows/ci.yml) [![Codecov](https://img.shields.io/codecov/c/github/labstack/echo.svg?style=flat-square)](https://codecov.io/gh/labstack/echo) -[![Forum](https://img.shields.io/badge/community-forum-00afd1.svg?style=flat-square)](https://github.com/labstack/echo/discussions) -[![Twitter](https://img.shields.io/badge/twitter-@labstack-55acee.svg?style=flat-square)](https://twitter.com/labstack) -[![License](https://img.shields.io/badge/license-mit-blue.svg?style=flat-square)](https://raw.githubusercontent.com/labstack/echo/master/LICENSE) +[![Discussions](https://img.shields.io/badge/community-discussions-00afd1.svg?style=flat-square)](https://github.com/labstack/echo/discussions) +[![X](https://img.shields.io/badge/x-@labstack-000000.svg?style=flat-square)](https://x.com/labstack) +[![License](https://img.shields.io/badge/license-mit-blue.svg?style=flat-square)](https://github.com/labstack/echo/blob/master/LICENSE) ## Echo High performance, extensible, minimalist Go web framework. -Echo is built on Go's standard `net/http` — and interoperates with it via `echo.WrapHandler` / `echo.WrapMiddleware` — adding the parts the standard library leaves to you: a fast radix-tree router, request binding (with a pluggable validator), a deep middleware ecosystem, and centralized error handling. Actively maintained, with `v5` as the current release line (see badges above for the latest version and most recent commit). +Echo is built on Go's standard `net/http` and interoperates with it through `echo.WrapHandler` and `echo.WrapMiddleware`. It adds the parts the standard library leaves to you: a fast radix-tree router, request binding with pluggable validation, a deep middleware ecosystem, and centralized error handling. Echo is actively maintained, and `v5` is the current release line. -* [Official website](https://echo.labstack.com) -* [Quick start](https://echo.labstack.com/docs/quick-start) -* [Middlewares](https://echo.labstack.com/docs/category/middleware) +- [Website](https://echo.labstack.com) +- [Quick start](https://echo.labstack.com/guide/quickstart/) +- [Middleware](https://echo.labstack.com/middleware/) +- [API reference](https://pkg.go.dev/github.com/labstack/echo/v5) +- Help and questions: [GitHub Discussions](https://github.com/labstack/echo/discussions) -Help and questions: [Github Discussions](https://github.com/labstack/echo/discussions) +### Features -### Feature Overview - -- Optimized HTTP router which smartly prioritize routes -- Build robust and scalable RESTful APIs -- Group APIs -- Extensible middleware framework -- Define middleware at root, group or route level -- Data binding for JSON, XML and form payload -- Handy functions to send variety of HTTP responses -- Centralized HTTP error handling -- Template rendering with any template engine -- Define your format for the logger -- Highly customizable -- Automatic TLS via Let’s Encrypt -- HTTP/2 support +- Fast radix-tree [router](https://echo.labstack.com/guide/routing/) that prioritizes routes smartly +- Route groups, with middleware at the root, group or route level +- [Data binding](https://echo.labstack.com/guide/binding/) for JSON, XML, form, query and path parameters, with pluggable validation +- Helpers for JSON, XML, HTML, file, stream and other responses +- Centralized [error handling](https://echo.labstack.com/guide/error-handling/) +- Structured request logging with `log/slog` +- [Template rendering](https://echo.labstack.com/guide/templates/) with any template engine +- TLS, [HTTP/2](https://echo.labstack.com/cookbook/http2/), [automatic TLS](https://echo.labstack.com/cookbook/auto-tls/) with Let's Encrypt, and [graceful shutdown](https://echo.labstack.com/cookbook/graceful-shutdown/) ## Used by @@ -60,49 +54,30 @@ See [ADOPTERS.md](./ADOPTERS.md) for the full list. Using Echo in an open source ## Sponsors -
- - Blacksmith logo - Blacksmith – faster, drop-in GitHub Actions runners - -
-
-
- - encore icon - Encore – the platform for building Go-based cloud backends - -
-
-
- - Gravity Carbon logo - Gravity Carbon - -
-
- -Click [here](https://github.com/sponsors/labstack) for more information on sponsorship. - -## [Guide](https://echo.labstack.com/guide) - -### Supported Echo versions - -- Latest major version of Echo is `v5` as of 2026-01-18. - - See [API_CHANGES_V5.md](./API_CHANGES_V5.md) for public API changes between `v4` and `v5`, notes on upgrading. -- Echo `v4` is supported with **security** updates and **bug** fixes until **2026-12-31** +| | Sponsor | +| --- | --- | +| Blacksmith logo | [Blacksmith](https://blacksmith.sh): faster, drop-in GitHub Actions runners | +| Encore logo | [Encore](https://encore.dev): the platform for building Go-based cloud backends | +| Gravity Carbon logo | [Gravity Carbon](https://github.com/gravitycarbon) | + +Echo is independent and community funded. If your company depends on Echo, please consider [sponsoring it](https://github.com/sponsors/labstack). + +## Getting started + +### Supported versions + +- `v5` is the current major version, released on 2026-01-18. See [API_CHANGES_V5.md](./API_CHANGES_V5.md) for the API changes from `v4` and upgrade notes. +- `v4` receives security updates and bug fixes until 2026-12-31. See [ROADMAP.md](./ROADMAP.md) for where Echo is heading and the version support policy. ### Installation ```sh -// go get github.com/labstack/echo/{version} go get github.com/labstack/echo/v5 ``` -Latest version of Echo supports last four Go major [releases](https://go.dev/doc/devel/release) and might work with -older versions. +Echo supports the three most recent Go [releases](https://go.dev/doc/devel/release) and may work with older ones. ### Example @@ -110,88 +85,91 @@ older versions. package main import ( - "github.com/labstack/echo/v5" - "github.com/labstack/echo/v5/middleware" - "log/slog" - "net/http" + "log/slog" + "net/http" + + "github.com/labstack/echo/v5" + "github.com/labstack/echo/v5/middleware" ) func main() { - // Echo instance - e := echo.New() + // Echo instance + e := echo.New() - // Middleware - e.Use(middleware.RequestLogger()) // use the RequestLogger middleware with slog logger - e.Use(middleware.Recover()) // recover panics as errors for proper error handling + // Middleware + e.Use(middleware.RequestLogger()) // log requests with log/slog + e.Use(middleware.Recover()) // recover from panics and return an error - // Routes - e.GET("/", hello) + // Routes + e.GET("/", hello) - // Start server - if err := e.Start(":8080"); err != nil { - slog.Error("failed to start server", "error", err) - } + // Start server + if err := e.Start(":8080"); err != nil { + slog.Error("failed to start server", "error", err) + } } // Handler func hello(c *echo.Context) error { - return c.String(http.StatusOK, "Hello, World!") + return c.String(http.StatusOK, "Hello, World!") } ``` -# Official middleware repositories +More in the [guide](https://echo.labstack.com/guide/quickstart/) and the [cookbook](https://echo.labstack.com/cookbook/hello-world/). -Following list of middleware is maintained by Echo team. +## Middleware -| Repository | Description | -|------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [github.com/labstack/echo-jwt](https://github.com/labstack/echo-jwt) | [JWT](https://github.com/golang-jwt/jwt) middleware | -| [github.com/labstack/echo-contrib](https://github.com/labstack/echo-contrib) | [casbin](https://github.com/casbin/casbin), [gorilla/sessions](https://github.com/gorilla/sessions), [pprof](https://pkg.go.dev/net/http/pprof)) middlewares | -| [github.com/labstack/echo-otel](https://github.com/labstack/echo-otel) | [OpenTelemetry](https://opentelemetry.io/) middleware for tracing and metrics | -| [github.com/labstack/echo-prometheus](https://github.com/labstack/echo-prometheus) | [Prometheus](https://github.com/prometheus/client_golang/) middleware for Echo | +### Official + +Maintained by the Echo team. + +| Repository | Description | +| --- | --- | +| [labstack/echo-jwt](https://github.com/labstack/echo-jwt) | [JWT](https://github.com/golang-jwt/jwt) authentication | +| [labstack/echo-contrib](https://github.com/labstack/echo-contrib) | [Casbin](https://github.com/casbin/casbin), [gorilla/sessions](https://github.com/gorilla/sessions) and [pprof](https://pkg.go.dev/net/http/pprof) | +| [labstack/echo-otel](https://github.com/labstack/echo-otel) | [OpenTelemetry](https://opentelemetry.io/) tracing and metrics | +| [labstack/echo-prometheus](https://github.com/labstack/echo-prometheus) | [Prometheus](https://github.com/prometheus/client_golang/) metrics | + +### Third-party + +These projects are maintained by their authors, not the Echo team. Review them before use, and check which Echo version (`v4` or `v5`) each supports. + +| Repository | Description | +| --- | --- | +| [oapi-codegen/oapi-codegen](https://github.com/oapi-codegen/oapi-codegen) | [OpenAPI](https://swagger.io/specification/) client and server code generator | +| [swaggo/echo-swagger](https://github.com/swaggo/echo-swagger) | Serves [Swagger](https://swagger.io/) 2.0 API documentation | +| [ziflex/lecho](https://github.com/ziflex/lecho) | [Zerolog](https://github.com/rs/zerolog) logger for Echo | +| [brpaz/echozap](https://github.com/brpaz/echozap) | Uber [Zap](https://github.com/uber-go/zap) logging middleware | +| [samber/slog-echo](https://github.com/samber/slog-echo) | [log/slog](https://pkg.go.dev/log/slog) logging middleware | +| [darkweak/souin](https://github.com/darkweak/souin/tree/master/plugins/echo) | HTTP cache middleware based on [Souin](https://github.com/darkweak/souin), with distributed storage support | +| [mikestefanello/pagoda](https://github.com/mikestefanello/pagoda) | Full-stack web development starter kit built on Echo | +| [go-woo/protoc-gen-echo](https://github.com/go-woo/protoc-gen-echo) | Generates Echo server code from Protocol Buffers | -# Third-party middleware repositories +To add your library, send a pull request. -Be careful when adding 3rd party middleware. Echo teams does not have time or manpower to guarantee safety and quality -of middlewares in this list. +## Contributing -| Repository | Description | -|------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [oapi-codegen/oapi-codegen](https://github.com/oapi-codegen/oapi-codegen) | Automatically generate RESTful API documentation with [OpenAPI](https://swagger.io/specification/) Client and Server Code Generator | -| [github.com/swaggo/echo-swagger](https://github.com/swaggo/echo-swagger) | Automatically generate RESTful API documentation with [Swagger](https://swagger.io/) 2.0. | -| [github.com/ziflex/lecho](https://github.com/ziflex/lecho) | [Zerolog](https://github.com/rs/zerolog) logging library wrapper for Echo logger interface. | -| [github.com/brpaz/echozap](https://github.com/brpaz/echozap) | Uber´s [Zap](https://github.com/uber-go/zap) logging library wrapper for Echo logger interface. | -| [github.com/samber/slog-echo](https://github.com/samber/slog-echo) | Go [slog](https://pkg.go.dev/golang.org/x/exp/slog) logging library wrapper for Echo logger interface. | -| [github.com/darkweak/souin/plugins/echo](https://github.com/darkweak/souin/tree/master/plugins/echo) | HTTP cache system based on [Souin](https://github.com/darkweak/souin) to automatically get your endpoints cached. It supports some distributed and non-distributed storage systems depending your needs. | -| [github.com/mikestefanello/pagoda](https://github.com/mikestefanello/pagoda) | Rapid, easy full-stack web development starter kit built with Echo. | -| [github.com/go-woo/protoc-gen-echo](https://github.com/go-woo/protoc-gen-echo) | ProtoBuf generate Echo server side code | +Use issues for everything. -Please send a PR to add your own library here. +- For a small change, send a pull request. +- For a bigger change, open an issue to discuss it first. +- A pull request should include tests, documentation and, where it helps, an example. -## Contribute +You can also contribute by reporting issues, suggesting features and improving the documentation. -**Use issues for everything** +## Security -- For a small change, just send a PR. -- For bigger changes open an issue for discussion before sending a PR. -- PR should have: - - Test case - - Documentation - - Example (If it makes sense) -- You can also contribute by: - - Reporting issues - - Suggesting new features or enhancements - - Improve/fix documentation +Report vulnerabilities privately through [GitHub Security Advisories](https://github.com/labstack/echo/security/advisories/new), not in public issues. See [SECURITY.md](./SECURITY.md) for supported versions. ## Credits -- [Vishal Rana](https://github.com/vishr) (Author) +- [Vishal Rana](https://github.com/vishr) (Author and Maintainer) - [Nitin Rana](https://github.com/nr17) (Consultant) -- [Martti T.](https://github.com/aldas) (Lead Maintainer) +- [Martti T.](https://github.com/aldas) (Maintainer Emeritus) - [Roland Lammel](https://github.com/lammel) (Maintainer Emeritus) - [Pablo Andres Fuente](https://github.com/pafuent) (Maintainer Emeritus) - [Contributors](https://github.com/labstack/echo/graphs/contributors) ## License -[MIT](https://github.com/labstack/echo/blob/master/LICENSE) +[MIT](./LICENSE)