Agora
The AdonisJS ecosystem — context, diagnostics, resilience, durable, telescope, authz, collaboration, media, filter, payments, agent and authkit.
Agora
Agora is a family of production-grade libraries for AdonisJS — a Greek gathering place for your app's cross-cutting concerns. Each library ships on its own, but they compose: they share context, emit to one diagnostics bus, and surface in one observability console.
The libraries
- Context — ambient request/tenant/correlation context across HTTP, queue, durable and ace.
- Diagnostics — a diagnostics bus over
node:diagnostics_channelwith an OpenTelemetry auto-bridge. - Resilience — timeout / retry / circuit-breaker / failover policies, with a distributed breaker store.
- Durable — durable, resumable, cross-process workflows.
- Telescope — a Telescope-style observability console with an extensible dashboard.
- Authz — DB-backed roles & permissions that feed AdonisJS Bouncer, with wildcards, tenancy and ace commands.
- Collaboration — collaborative editing (CRDT) for AdonisJS, with Yjs/Automerge/edge engines, Redis presence, version control, anchored comments and React client hooks.
- Media — owner collections, image conversions, and column attachments on top of
@adonisjs/drive. - Filter — a typed query-param filter language for Lucid, with defineFilter classes, offset & cursor pagination, relations via whereHas, full-text and vector-similarity search, and a typed client with codegen.
- Payments — multi-gateway payments and Cashier-style billing, with 18 gateways behind one driver contract, invoice emission and method-based routing.
- Agent — a governed, durable-ready AI agent: streaming chat, tool-calling, HITL approvals, quota/cost accounting and multi-agent delegation.
- AuthKit — a full OIDC/OAuth2 Authorization Server (IdP) + OIDC client + React ergonomics: MFA, passwordless, device flow, DPoP and more.
How they fit together
Everything is wired through small Symbol.for('@agora/<lib>:<name>') capability slots, so a library
lights up its neighbours when present and no-ops when absent — no hard dependencies between repos.
Install only what you need.
Cross-cutting shapes are shared the same way — matched structurally, never imported. See Conventions for the ones that hold ecosystem-wide, starting with pagination.