Auth and tenant isolation
auth · tenant · auth/authbind
Verify an API key or JWT access token before selecting a tenant. Conflicting tenant selectors return 403. Check resource access with Static, Casbin, Cerbos or OpenFGA.
Add authentication, tenant checks, quotas, audit records, webhooks and an admin console to your Echo application. Install LabStack's commercial Go module with the standard Go toolchain.
quota/redisstoreauthCfg := auth.Config{ Schemes: map[string]auth.Scheme{"key": auth.APIKey{ Namespace: "app", Prefix: "demo", Peppers: ring, Store: keys, Header: "X-API-Key", }}, Fallback: auth.Require(map[string][]string{"key": {"invoice:read"}}),}tenantPath, err := tenant.FromPathParam("tenant")if err != nil { return err}guard, err := authbind.Middleware(authCfg, tenant.Config{ Selectors: []tenant.Selector{tenant.FromCredential(), tenantPath}, Required: true,})if err != nil { return err}lim, err := quota.New(quota.Config{ Store: quota.NewMemoryStore(quota.MemoryConfig{MaxKeys: 100}), Plans: []quota.Plan{{ID: "free", Limits: []quota.Limit{ quota.PerDay("requests", 3), }}},})if err != nil { return err}defer func() { closeCtx, cancel := context.WithTimeout(context.WithoutCancel(ctx), 5*time.Second) defer cancel() result = errors.Join(result, lim.Close(closeCtx))}()identity, err := authbind.Quota()if err != nil { return err}quotaMW, err := (quota.MiddlewareConfig{ Limiter: lim, Identity: identity,}).ToMiddleware()if err != nil { return err}prepared, err := webhook.PrepareOutgoing(webhook.Outgoing{ Tenant: string( id, ), Destination: "invoices", Version: "v1", Key: invoice + "/created", Type: "invoice.created", Format: "json", Payload: []byte(fmt.Sprintf( `{"invoice":%q}`, invoice, )),})if err != nil { return err}receipt, err := outbox.Enqueue(c.Request().Context(), prepared)if err != nil { return err}return c.JSON(http.StatusAccepted, map[string]string{ "invoice": invoice, "webhook_ref": receipt.Ref,})go get Install through a private Go module proxy, checked against your go.sum.Mount middleware on your routes in the order shown. Your application supplies handlers, PostgreSQL pools and Redis clients.
One module, echo.labstack.com/pro. Runnable examples, tests and package READMEs ship with it.
auth · tenant · auth/authbind
Verify an API key or JWT access token before selecting a tenant. Conflicting tenant selectors return 403. Check resource access with Static, Casbin, Cerbos or OpenFGA.
quota · quota/quotamcp · quota/quotastripe
Return 429 when a tenant exhausts its plan. Reserve estimated AI usage and settle actual cost. Meter MCP tools and send final usage to Stripe.
admin
Inspect usage and stored operations behind your application login. Enable specific write actions with preview and confirmation. Record audit intent before running them.


| Package | What it does |
|---|---|
auth | API keys and asymmetric JWT access tokens, one credential per request. |
tenant | Tenant resolution with membership checks and deny-by-default authorizers. |
auth/authbind | Maps verified principals and selected tenants into quota, audit, execution, admin and MCP callbacks. |
quota | Per-tenant plans, weighted costs, credits, concurrency limits and Echo middleware. |
quota/redisstore | Atomic Redis and Valkey store: standalone, Sentinel and Cluster. |
quota/quotamcp | Plan quotas and metering for MCP tools on the official MCP Go SDK. |
quota/quotastripe | Stripe meter export of final usage, with receipts and reconciliation. |
quota/quotaclient | Client helpers that parse RateLimit headers and problem responses, and wait before retrying. |
quota/quotaprom, quota/quotaotel | Opt-in Prometheus and OpenTelemetry hooks into your own systems. |
audit, audit/auditpg | Durable business audit events with redaction, recorded in PostgreSQL 16 through 18. |
execution, execution/pgstore | Records each external call under a stable key, so retries replay the saved result. Operators resolve uncertain calls. |
webhook, webhook/webhookpg | Signed inbox and outbox, retry workers and replay, durable on PostgreSQL. |
openapi | Checks that every OpenAPI operation has an auth and quota policy, and runs auth, quota and validation in order. |
problem | RFC 9457 problem catalog and Echo error rendering. |
redact | Classifies fields and removes or hashes sensitive values before storage. |
admin | The embedded console, with panels for quota, Stripe, audit, execution, webhooks and OpenAPI. |
cmd/quota | Command line for plan checks, usage, resets, credits, keys and the outbox. |
Billed annually per organisation.
Free MIT license
Free and open source
Was $1,500, now $990 / year
Code FOUNDING takes 34% off the first three annual invoices, for the first 25 organisations. Available until 31 Mar 2027.
Up to 20 developers
Was $4,500, now $2,970 / year
Code FOUNDING takes 34% off the first three annual invoices, for the first 25 organisations. Available until 31 Mar 2027.
Up to 100 developers
Secure checkout by Stripe; enter code FOUNDING for the founding price. Invoices, payment method and cancellation: billing portal.
$4,900 / year, invoiced annually. Maintainer help for Echo v4 or v5, with or without Echo Pro: a named contact, four incidents a year, a two-business-day response target and an annual maintenance-status letter. Best effort; no SLA. Terms.
Contact us| Feature | Echo | Team | Business |
|---|---|---|---|
| Packages | |||
| Echo framework and built-in middleware | Included | Included | Included |
| Official packages (echo-jwt, echo-otel, echo-prometheus, echo-contrib) | Included | Included | Included |
| Echo Pro packages | Not included | Included | Included |
| Developers | |||
| Developers per organisation | Any | Up to 20 | Up to 100 |
| Updates | |||
| New releases | Included | While subscribed | While subscribed |
| Keep received versions after the subscription ends | Included | Included | Included |
| Security fixes for your release lines after the subscription ends | Not included | Included | Included |
| Support | |||
| Community support on GitHub | Included | Included | Included |
| Email support, two-business-day target | Not included | Included | Included |
| Echo Support ($4,900 / year) | Sold separately | Sold separately | Sold separately |
| Billing | |||
| Price | Free | $1,500 / year | $4,500 / year |
| Founding price with FOUNDING | Not included | $990 / year | $2,970 / year |
| Billing | Not included | Annual | Annual |
Team and Business terms
After purchase you create your organisation's access token once. Then, on each machine:
GOPRIVATE, append ,echo.labstack.com to your existing value instead.go env -w GOPRIVATE=echo.labstack.com~/.netrc (Windows: %USERPROFILE%\_netrc), mode 600.machine go.labstack.io login <org> password <token>Store the token as a CI secret and write a job-scoped credential file before go runs. Installation has a complete GitHub Actions workflow, plus corporate mirrors, GOPROXY chains, Docker and offline builds.
Echo, its built-in middleware and the official packages (echo-jwt, echo-otel, echo-prometheus and echo-contrib) are open source under the MIT license. Echo Pro is a separate module that builds on them.
No. Echo stays open source under the MIT license. Echo Pro is a separate module that builds on Echo and does not change its license.
Echo Pro includes authentication, tenant checks, quotas and durable stores. Backend tests run against PostgreSQL 16 through 18, Redis and Valkey. Subscriptions pay for that work and fund Echo's maintenance.
Echo Pro uses a commercial license. While subscribed, your organisation may use, copy and modify Echo Pro. You may include it in applications you distribute and services you operate. You may not pass its source to third parties. You may not offer it as a standalone library or competing product.
No. The library does not send telemetry or perform runtime license checks. Configure metrics and tracing through hooks into your own systems.
You keep the versions you already have. You also keep access to security fixes for the release lines you owned. New versions need an active subscription.
There is no free trial. Review the package documentation and code samples before buying. If Echo Pro is not right for you, you get a full refund within 30 days of purchase.
A yearly contract with the maintainer for teams running Echo v4 or v5, with or without Echo Pro: a named contact, four incidents a year, a two-business-day response target on US business days and an annual letter listing your Echo versions, the advisories that apply and their support dates. It has no fixed repair time and no 24/7 cover. Security fixes stay public for everyone; Echo Support does not buy earlier or private fixes.
Team and Business are billed annually per organisation. Echo Support and Enterprise are invoiced annually. Email [email protected] for billing details your company needs.
For other questions, email [email protected].