EventCatalog: Why 31,000+ Teams Ditched Spreadsheets for AI Architecture Discovery
Your microservices are a black box. Admit it.
You've got Kafka topics nobody owns. Event schemas scattered across Confluent, AWS EventBridge, and that one engineer's laptop. New developers spend weeks trying to understand which service calls what—and why that "simple" change broke three production systems last Tuesday.
Sound painfully familiar?
Here's the dirty secret plaguing distributed systems today: we're building architectures faster than we can understand them. We celebrate event-driven design, but we document it like it's 1999—spreadsheets, stale Confluence pages, and tribal knowledge that walks out the door when senior engineers leave.
But what if your architecture could explain itself?
What if you could ask "Which services depend on the OrderPlaced event?" in plain English and get an instant, visual answer? What if your documentation stayed automatically synchronized with your actual running systems?
That's not a fantasy. That's EventCatalog—the AI-powered architecture catalog that's already transformed how 31,000+ engineering teams document, discover, and govern their distributed systems.
And the best part? You can spin it up in seconds, not weeks.
What is EventCatalog?
EventCatalog is an open-source architecture catalog purpose-built for event-driven and distributed systems. Created by David Boyne and maintained by a thriving community of 69+ contributors, it solves the fundamental documentation crisis that emerges when organizations adopt microservices, event sourcing, or any architecture where components communicate asynchronously.
At its core, EventCatalog is a living documentation platform that maps your entire system topology—domains, services, events, commands, queries, schemas, and the relationships between them—into interactive, explorable visualizations. But unlike static documentation tools that rot the moment they're written, EventCatalog integrates AI-powered discovery, automated generators for 15+ messaging platforms, and schema governance that evolves with your architecture.
The project is built on modern web technologies (Astro + React) and distributed as a modular monorepo with specialized packages:
| Package | Purpose |
|---|---|
@eventcatalog/core |
Main catalog application with visualization engine |
@eventcatalog/sdk |
Node.js SDK for programmatic catalog management |
@eventcatalog/create-eventcatalog |
CLI scaffolding tool for instant setup |
@eventcatalog/visualiser |
Standalone React visualiser component for custom integrations |
@eventcatalog/dsl-playground |
Browser-based domain-specific language playground |
What makes EventCatalog genuinely disruptive isn't just its feature set—it's the philosophy shift it represents. Documentation stops being a chore and becomes a byproduct of your architecture itself. With generators for AsyncAPI, OpenAPI, Kafka, Confluent, AWS EventBridge, RabbitMQ, and more, your catalog populates automatically from sources of truth you already maintain.
The timing couldn't be better. As organizations grapple with AI-assisted development, platform engineering mandates, and increasingly complex regulatory requirements for system observability, EventCatalog provides the single pane of glass that engineering leaders desperately need.
Key Features That Separate EventCatalog from Documentation Tools
Let's dissect what makes this tool genuinely powerful—not just in marketing slides, but in the trenches of production engineering.
Interactive Architecture Visualization
EventCatalog renders your entire system as interactive node graphs. Unlike static diagrams that become obsolete within sprints, these visualizations are generated from your actual schema definitions and service metadata. You can trace event flows from producer to consumer, identify circular dependencies, and spot orphaned services that nobody owns.
The visualizer isn't decorative—it's investigative infrastructure. When incidents strike at 3 AM, you need to understand blast radius in seconds, not hours.
AI-Powered Natural Language Discovery
This is where EventCatalog transcends traditional documentation. The built-in AI chat interface and MCP (Model Context Protocol) server let you query your architecture using natural language:
- "Which services break if I modify the
PaymentProcessedschema?" - "Show me all events in the Order domain that lack consumers"
- "What's the data lineage for customer email fields?"
The MCP server integration means your AI coding assistants and operational tools can programmatically explore the catalog, embedding architectural intelligence directly into your development workflow.
Universal Schema Exploration
EventCatalog aggregates schemas from OpenAPI, AsyncAPI, Protobuf, JSON Schema, Avro, and more into a unified, searchable interface. But it goes further with schema field-level analysis—filter and find any property across your entire catalog, trace how fields propagate through services, and identify inconsistencies that violate your data contracts.
Business Flow Documentation
Technical documentation tells you how; business flow documentation tells you why. EventCatalog lets you construct end-to-end workflow narratives that reference your existing services and messages, creating higher-level abstractions that product managers, compliance officers, and new engineers can actually understand.
Enterprise-Grade Governance
Behind the sleek interface lies serious infrastructure: semantic versioning for all resources, OAuth2 and RBAC for access control, schema governance with breaking change detection, and versioned architecture decision records (ADRs) attached directly to domains and services.
Real-World Use Cases Where EventCatalog Dominates
1. Microservices Onboarding Acceleration
New engineers typically spend 4-6 weeks understanding system topology before becoming productive. EventCatalog collapses this to days. The interactive visualizer, combined with natural language queries, lets newcomers explore autonomously without repeatedly interrupting senior developers.
2. Post-Acquisition System Integration
When companies merge, understanding two disparate architectures is existential. EventCatalog's generators can rapidly ingest both systems' schemas, creating a unified exploration surface that reveals integration points, duplicate capabilities, and migration risks.
3. Compliance and Audit Readiness
SOC 2, GDPR, and industry-specific regulations increasingly require demonstrable data lineage and system documentation. EventCatalog's versioned documentation, schema field tracking, and attached runbooks provide audit-ready evidence that doesn't require manual maintenance.
4. Breaking Change Prevention
Schema evolution in event-driven systems is notoriously dangerous. EventCatalog's breaking change detection analyzes consumer dependencies before modifications propagate, preventing the cascading failures that plague loosely coupled architectures.
5. Platform Engineering Self-Service
Platform teams use EventCatalog as the developer portal backbone—enabling product engineers to discover existing capabilities, understand service boundaries, and adhere to organizational standards without platform team bottlenecks.
Step-by-Step Installation & Setup Guide
Ready to escape documentation purgatory? EventCatalog's setup is deliberately minimal.
Prerequisites
- Node.js 18+ and npm/yarn/pnpm
- Git (for versioned documentation)
- Optional: Docker for containerized deployment
Instant Scaffolding
Execute the official CLI creator to bootstrap your catalog:
# Create a new EventCatalog project with interactive prompts
npx @eventcatalog/create-eventcatalog@latest my-catalog
This single command generates a complete, production-ready catalog structure with:
- Pre-configured Astro + React application
- Example domains, services, and events for reference
- Development server configuration
- Build pipeline for static or server-side deployment
Development Server Launch
# Navigate into your new catalog
cd my-catalog
# Install dependencies (if not done automatically)
npm install
# Start the development server
npm run dev
Navigate to http://localhost:3000—your architecture catalog is live.
Configuration Essentials
The eventcatalog.config.js file controls core behavior:
// eventcatalog.config.js
export default {
title: 'My Organization Architecture',
tagline: 'Discover events, services, and domains across our platform',
organizationName: 'MyOrg',
// Enable AI-powered discovery (requires API configuration)
ai: {
enabled: true,
// Provider-specific configuration for LLM integration
},
// Generator configurations for automated ingestion
generators: [
{
plugin: '@eventcatalog/plugin-doc-generator-asyncapi',
output: './asyncapi-events',
// Path to your AsyncAPI specification files
}
],
// Authentication and access control
auth: {
// OAuth2, RBAC, or basic authentication setup
}
};
Production Deployment
Build static assets for hosting on Vercel, Netlify, or your CDN:
# Generate optimized production build
npm run build
# Output serves from ./dist directory
For enterprise deployments requiring server-side features (AI chat, MCP server), containerize with the provided Dockerfile or deploy to Node.js-compatible platforms.
REAL Code Examples from EventCatalog
Let's examine practical implementations using actual patterns from the EventCatalog ecosystem.
Example 1: Project Initialization Command
The README's getting-started command exemplifies EventCatalog's zero-friction philosophy:
# The canonical one-liner that creates a complete catalog
npx @eventcatalog/create-eventcatalog@latest my-catalog
Why this matters: No global installation pollution, no complex dependency resolution, no configuration file archaeology. The @latest tag ensures you always scaffold with current best practices. The npx execution model means team members with different Node versions get consistent results.
After execution, examine the generated structure:
my-catalog/
├── eventcatalog.config.js # Central configuration hub
├── domains/ # Business domain boundaries
│ └── orders/
│ ├── index.md # Domain overview with metadata
│ └── services/ # Services within this domain
├── services/ # Cross-domain service definitions
├── events/ # Event type specifications
├── commands/ # Command definitions
├── queries/ # Query/read model definitions
├── schemas/ # Reusable schema fragments
└── pages/ # Custom MDX documentation
This convention-over-configuration structure mirrors how engineers actually think about systems—by domain and capability, not by technical layer.
Example 2: Defining a Domain with Rich Metadata
Domains in EventCatalog are Markdown files with frontmatter metadata that powers the visualizer:
---
name: Order Management
summary: |
Core domain handling order lifecycle from placement through fulfillment.
Encompasses inventory reservation, payment orchestration, and shipping coordination.
owners:
- team-platform
- dsmith@company.com
---
## Overview
The Order Management domain is the revenue-critical boundary of our platform.
All financial transactions and inventory movements originate from events published here.
### Key Capabilities
- **Order Placement**: Validates and persists customer orders
- **Inventory Reservation**: Temporarily allocates stock against orders
- **Payment Orchestration**: Coordinates multi-provider payment processing
- **Fulfillment Triggering**: Initiates warehouse picking and shipping
## Architecture Decision Records
- [ADR-0047: Event Sourcing for Order State](./adrs/adr-0047-event-sourcing.md)
- [ADR-0052: Saga Pattern for Distributed Transactions](./adrs/adr-0052-saga-pattern.md)
Critical insight: The owners field enables accountability mapping. The summary populates discovery search. The embedded ADRs create living architecture documentation that versions with your code. This isn't documentation—it's executable organizational memory.
Example 3: Service Definition with Event Relationships
Services declare their published and consumed events, enabling automatic dependency graph construction:
---
name: Payment Service
summary: Processes payments across multiple providers with idempotency guarantees
owners:
- team-payments
receives:
- id: OrderPlaced
version: 1.2.0
description: Initiates payment authorization flow
sends:
- id: PaymentProcessed
version: 2.0.0
description: Confirms successful payment with provider reference
- id: PaymentFailed
version: 1.0.0
description: Signals payment failure with retry eligibility
---
## Operational Characteristics
| Attribute | Value |
|-----------|-------|
| Deployment Model | Kubernetes / 3 replicas minimum |
| SLO | 99.95% availability, p99 < 200ms |
| Criticality Tier | Tier 1 (revenue-blocking) |
## Runbooks
- [Payment Provider Degradation Response](./runbooks/provider-degradation.md)
- [Idempotency Key Collision Investigation](./runbooks/idempotency-collisions.md)
The power here: EventCatalog doesn't just list events—it validates relationships. If OrderPlaced v1.2.0 doesn't exist in your catalog, the build fails. If PaymentProcessed v2.0.0 introduces schema changes that break consumers, governance rules trigger review workflows.
Example 4: Schema Definition with Field-Level Tracking
Events carry schema definitions that power the explorer and breaking change detection:
---
name: PaymentProcessed
version: 2.0.0
summary: Emitted when payment authorization succeeds
owners:
- team-payments
---
## Schema
```json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["orderId", "amount", "currency", "providerReference", "processedAt"],
"properties": {
"orderId": {
"type": "string",
"format": "uuid",
"description": "Reference to originating order"
},
"amount": {
"type": "integer",
"minimum": 0,
"description": "Payment amount in minor currency units (cents)"
},
"currency": {
"type": "string",
"enum": ["USD", "EUR", "GBP", "JPY"],
"description": "ISO 4217 currency code"
},
"providerReference": {
"type": "string",
"description": "Unique identifier from payment processor"
},
"processedAt": {
"type": "string",
"format": "date-time",
"description": "UTC timestamp of successful authorization"
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Extensible key-value store for provider-specific data"
}
}
}
Producers
Consumers
**Field-level tracking in action:** The schema explorer indexes every property. Searching for `providerReference` reveals all events using this field, enabling impact analysis when payment processors change their identifier formats. The `metadata` pattern with `additionalProperties: true` documents intentional extensibility—critical for evolving contracts without breaking changes.
---
## Advanced Usage & Best Practices
### Generator Pipeline Optimization
For organizations with hundreds of services, manual catalog maintenance fails. EventCatalog's **15+ generators** should run in CI/CD pipelines:
```yaml
# .github/workflows/catalog-sync.yml
name: Sync Architecture Catalog
on:
push:
branches: [main]
paths: ['**/asyncapi.yaml', '**/openapi.yaml']
jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run catalog:generate # Runs all configured generators
- run: npm run catalog:build
- run: npm run catalog:deploy
MCP Server Integration for AI Workflows
The Model Context Protocol server exposes your catalog to AI assistants:
# Configure Claude, Cursor, or compatible tools with MCP endpoint
{
"mcpServers": {
"eventcatalog": {
"command": "npx",
"args": ["-y", "@eventcatalog/mcp-server@latest"],
"env": {
"EVENTCATALOG_URL": "https://catalog.internal.company.dev"
}
}
}
}
Now your AI assistant understands your architecture contextually—suggesting appropriate events, warning about breaking changes, and generating compatible schemas.
Custom MDX Components
Extend documentation with interactive elements:
// components/ServiceHealth.jsx
import { useEffect, useState } from 'react';
export default function ServiceHealth({ serviceName }) {
const [health, setHealth] = useState(null);
useEffect(() => {
// Fetch real-time health from your observability platform
fetch(`/api/health/${serviceName}`)
.then(r => r.json())
.then(setHealth);
}, [serviceName]);
return (
<span className={health?.status === 'healthy' ? 'text-green-600' : 'text-red-600'}>
● {health?.status || 'unknown'}
</span>
);
}
Register in eventcatalog.config.js and use in any Markdown file:
## Current Status
<ServiceHealth serviceName="payment-service" />
Comparison with Alternatives
| Capability | EventCatalog | Backstage | SwaggerHub | AsyncAPI Studio | Confluent Control Center |
|---|---|---|---|---|---|
| Multi-protocol support | ✅ 15+ generators | ⚠️ Plugins required | ❌ OpenAPI only | ⚠️ AsyncAPI only | ❌ Kafka only |
| AI-powered discovery | ✅ Native | ❌ | ❌ | ❌ | ❌ |
| Interactive visualization | ✅ Node graphs | ✅ Limited | ❌ | ⚠️ Basic | ✅ Topology only |
| Schema field tracking | ✅ Deep indexing | ❌ | ❌ | ❌ | ❌ |
| Business flow docs | ✅ Native MDX | ⚠️ Custom plugins | ❌ | ❌ | ❌ |
| Open source | ✅ MIT | ✅ Apache 2.0 | ❌ | ✅ Apache 2.0 | ❌ |
| Learning curve | 🟢 Hours | 🔴 Weeks | 🟡 Days | 🟢 Hours | 🟡 Days |
| Enterprise auth/RBAC | ✅ Built-in | ✅ Complex setup | ✅ | ❌ | ✅ |
When to choose EventCatalog over Backstage: You need architecture-specific features (event lineage, schema governance, breaking change detection) without the heavy platform engineering investment. Backstage excels as a universal developer portal; EventCatalog dominates for event-driven architecture documentation.
When to choose EventCatalog over SwaggerHub/AsyncAPI Studio: You operate heterogeneous messaging infrastructure and need unified discovery across protocols, not just specification editing.
FAQ
Is EventCatalog only for Kafka-based systems?
Absolutely not. While Kafka is well-supported, EventCatalog generators cover AsyncAPI, OpenAPI, AWS EventBridge, RabbitMQ, Confluent, and more. The core model is protocol-agnostic—you can document any event-driven or message-based architecture.
How does AI discovery handle sensitive architecture data?
EventCatalog's AI features are configurable and self-hostable. The MCP server and chat interface can run against local LLMs or enterprise-approved providers. No data leaves your infrastructure unless explicitly configured.
Can we migrate from existing documentation tools?
Yes. The @eventcatalog/sdk package provides programmatic APIs to bulk-import from Confluence, Swagger, AsyncAPI documents, or custom sources. Most organizations achieve initial population within a sprint.
What's the performance with thousands of events?
The Astro-based build generates static assets for instant loading. Large catalogs use incremental builds and search indexing for sub-second discovery. The visualizer implements viewport culling for smooth interaction with complex graphs.
How does versioning work for evolving schemas?
Full semantic versioning is native. Events, commands, and services carry explicit version declarations. Breaking changes are detected by comparing consumer expectations against producer schemas, with configurable governance rules.
Is commercial support available?
The open-source project is MIT-licensed and community-supported via Discord. Enterprise features and dedicated support are available through EventCatalog's commercial offerings.
Can non-technical stakeholders use EventCatalog?
Designed for it. Business flow documentation, natural language AI queries, and visual topology exploration make architecture accessible to product managers, compliance officers, and executives—without engineering escort.
Conclusion: Your Architecture Deserves Better Than Spreadsheets
We've normalized a bizarre reality: we build trillion-dollar systems on event-driven architectures, then document them with tools that predate the iPhone. The cost isn't just inefficiency—it's operational risk, slower onboarding, compliance exposure, and preventable outages.
EventCatalog represents a fundamental shift. With 31,000+ catalogs already created, a 69+ contributor community, and features like AI-powered discovery that no competitor matches, it's becoming the de facto standard for serious distributed systems documentation.
The setup is trivial—one command, seconds to first visualization. The value compounds as your architecture grows, evolves, and inevitably surprises you.
Stop letting your architecture be a black box. Illuminate it.
👉 Explore EventCatalog on GitHub — star the repo, try the live demo, and join the Discord community where maintainers and practitioners share patterns.
Your future self—debugging that 3 AM production incident—will thank you.